当前位置: 首页 > news >正文

Ffmpeg安装和简单使用

Ffmpeg安装

下载并解压

进入官网 (https://ffmpeg.org/download.html),选择 Window

image-20240606132009520

然后再打开的页面中下滑找到 release builds,点击 zip 文件下载

image-20240606132116466

环境变量配置

下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件

image-20240606132416557

image-20240606132445125

然后复制这个 bin 目录地址

image-20240606132543962

然后再环境变量中的 Path 中添加保存即可

image-20240606132700052

测试运行

打开cmd,输入 ffmpeg -version 测试

image-20240606132806315

mp4转ts文件

命令

ffmpeg -y -i 你的视频地址.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb ts文件输出地址.ts

参数解释

  1. ffmpeg:
    • 命令行工具的名称,用于处理多媒体文件。
  2. -y:
    • 这个选项告诉 ffmpeg 在输出文件已存在时,无需提示直接覆盖目标文件。
  3. -i 你的视频地址.mp4:
    • -i 表示输入文件。
    • 你的视频地址.mp4 是输入视频文件的路径或文件名。
  4. -vcodec copy:
    • -vcodec-c:v 指定视频编解码器。
    • copy 表示直接复制视频流而不重新编码。
  5. -acodec copy:
    • -acodec-c:a 指定音频编解码器。
    • copy 表示直接复制音频流而不重新编码。
  6. -bsf:v h264_mp4toannexb:
    • -bsf:v 表示对视频流应用位流过滤器(Bitstream Filter)。
    • h264_mp4toannexb 是具体的位流过滤器,作用是将 H.264 内容从 MP4 的格式转换为 TS 中使用的 Annex B 格式。这是因为 MP4 中 H.264 使用的是一种不同的封装格式,不适合直接存储在 TS 容器中。
  7. ts文件输出地址.ts:
    • 指定输出文件的路径或文件名,这里是一个 TS 格式文件。

示例

ffmpeg -y -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb D:\javaLogs\filePan\files\114\大屏视频.ts

image-20240606133638014

运行结果

image-20240606133724706

生成索引文件.m3u8和切片.ts

在处理视频在线播放时可以将一个大的ts视频文件切成多个小的ts文件,并生成一个m3u8索引文件

命令

ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_list list.m3u8 -segment_time 60 output_dir/output_%04d.ts
  • input.mp4: 输入文件。
  • -c copy: 对视频和音频流进行无损复制。
  • -map 0: 映射所有流。
  • -f segment: 使用 segment 多路复用器。
  • -segment_list list.m3u8: 生成包含所有片段文件名的播放列表文件,这里用 m3u8 格式。
  • -segment_time 60: 每个片段的时长为 60 秒。
  • output_dir/output_%04d.ts: 输出的片段文件(存放在 output_dir 目录,命名为 output_0000.ts, output_0001.ts 等)。

示例

mkdir D:\javaLogs\filePan\files\114\大屏视频ffmpeg -i D:\javaLogs\filePan\files\114\大屏视频.mp4 -c copy -map 0 -f segment -segment_list D:\javaLogs\filePan\files\114\大屏视频\index.m3u8 -segment_time 60 D:\javaLogs\filePan\files\114\大屏视频\output_%04d.ts

image-20240606134846828

输出的内容

image-20240606134901650

image-20240606134917844

生成视频缩略图

使用 ffmpeg 生成视频缩略图是一项常见任务。在下面的例子中,我将向你展示如何从视频中生成一张或多张缩略图。

生成单个缩略图

假设你希望从视频的特定时间帧生成一张缩略图,例如在视频的第 30 秒生成缩略图,命令如下:

ffmpeg -i 你的视频地址.mp4 -ss 00:00:30 -vframes 1 -q:v 2 缩略图输出路径.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -ss 00:00:30: 定位到视频的第 30 秒。也可以使用更精确的时间格式,比如 00:01:30.500 表示 1 分 30 秒之后的第 500 毫秒。
  • -vframes 1: 指定只输出一帧图片。
  • -q:v 2: 设置输出图片的质量。数值范围为 1-31,数值越小质量越高,2 是一个常用的高质量值。
  • 缩略图输出路径.jpg: 输出图片的路径和文件名。

生成多张缩略图

如果你希望从视频中定时生成多张缩略图,例如每隔 10 秒生成一张,命令如下:

ffmpeg -i 你的视频地址.mp4 -vf "fps=1/10" 缩略图输出路径_%03d.jpg

参数解释

  • -i 你的视频地址.mp4: 输入视频文件。
  • -vf "fps=1/10": 使用视频过滤器,每 10 秒生成一帧图片(1/10 表示每 1/10 秒生成一帧)。
  • 缩略图输出路径_%03d.jpg: 输出图片的路径和文件名,%03d 会被替换为当前帧号,生成一系列的图片如 缩略图输出路径_001.jpg缩略图输出路径_002.jpg 等。

示例

以下是示例命令:

生成单个缩略图

ffmpeg -i video.mp4 -ss 00:00:30 -vframes 1 -q:v 2 thumbnail.jpg

image-20240606135440862

image-20240606135505526

生成多张缩略图,每30秒生成一张

ffmpeg -i video.mp4 -vf "fps=1/30" thumbnails_%03d.jpg

image-20240606135729964

image-20240606135754971

视频压缩

使用 ffmpeg 压缩视频是一项常见任务,尤其是在需要减小文件大小以便于存储或传输时。以下是几个基本的例子,涵盖常见的压缩场景。

  1. 使用 H.264 编码器压缩视频

H.264 是一种常用的高效视频压缩标准。你可以使用如下命令将视频压缩为 H.264 格式:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

参数解释

  • -i input.mp4: 输入视频文件。
  • -vcodec libx264: 使用 H.264 编码器。
  • -crf 23: 恒定质量因子,范围为 0(无损)到 51(最差),默认值是 23。数值越小,质量越好,文件越大。数值越大,文件越小,质量越低。
  • -preset medium: 预设参数,决定编码速度与压缩率之间的平衡。常用预设有 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowmedium 是默认值。
  1. 压缩视频并降低分辨率

如果你不仅想要压缩视频文件大小,还希望降低分辨率,可以使用下面的命令:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

参数解释

  • -vf scale=1280:720: 调整视频分辨率为 1280x720。你可以根据需要设置其他分辨率。
  1. 压缩视频并降低比特率

如果你希望控制视频的比特率,可以使用如下命令:

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

参数解释

  • -b:v 1000k: 设置视频比特率为 1000 kbps。你可以根据需要调整这个值。
  1. 压缩视频音频

如果你希望同时压缩视频和音频,可以添加音频参数:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

参数解释

  • -acodec aac: 使用 AAC 音频编码器。
  • -b:a 128k: 设置音频比特率为 128 kbps。

示例命令

使用 H.264 编码压缩视频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

压缩视频并降低分辨率

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

压缩视频并设置比特率

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

同时压缩视频和音频

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

运行这些命令时,请确保输入文件路径正确,并且你有输出目录的写入权限

图片生成缩略图

使用ffmpeg生成缩略图

以下是使用ffmpeg生成128x128像素缩略图的命令:

ffmpeg -i input.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

参数解释

  • -i input.jpg:输入图片文件。
  • -vf "thumbnail,scale=128:128":使用缩略图滤镜和缩放滤镜,将图片缩放至128x128像素。
  • -frames:v 1:仅输出一帧图像。
  • output_thumbnail.jpg:生成的缩略图文件名。

示例

ffmpeg -i ./大屏视频.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

image-20240606141411531

image-20240606141426973

更多其他用法

可参考:https://blog.csdn.net/m0_37624402/article/details/125123818

官方文档:https://ffmpeg.org/ffmpeg.html#Options

相关文章:

Ffmpeg安装和简单使用

Ffmpeg安装 下载并解压 进入官网 (https://ffmpeg.org/download.html),选择 Window 然后再打开的页面中下滑找到 release builds,点击 zip 文件下载 环境变量配置 下载好之后解压,找到 bin 文件夹,里面有3个 .exe 文件 然后复制…...

29、matlab算数运算汇总2:加、减、乘、除、幂、四舍五入

1、乘法:times, .* 语法 C A.*B 通过将对应的元素相乘来将数组 A 和 B 相乘。 C times(A,B) 是执行 A.*B 的替代方法, 1)将两个向量相乘 代码及运算 A [1 0 3]; B [2 3 7]; C A.*BC 2 0 212) 将两个数组相乘 代码及运算 A [1 0 3;…...

<Rust><iced>基于rust使用iced库构建GUI实例:动态改变主题色

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本篇构建了这样的一个实例,可以动态修改UI的主题,通过菜单栏来选择预设的自定义主题和官方主题&#…...

k8s——安全机制

一、安全机制说明 Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。API Server是集群内部各个组件通信的中介, 也是外部控制的入口。所以Kubernetes的安全机制基本就是围绕保护API Server来设计的。 比如 kubectl 如果想…...

Linux驱动应用编程(三)UART串口

本文目录 前述一、手册查看二、命令行调试串口1. 查看设备节点2. 使用stty命令设置串口3. 查看串口配置信息4. 调试串口 三、代码编写1. 常用API2. 例程线程优化 前述 在开始实验前,请一定要检查测试好所需硬件是否使用正常,不然调试过程中出现的问题&am…...

【设计模式深度剖析】【4】【行为型】【策略模式】

文章目录 策略模式定义英文原话直译 角色类图策略接口Strategy:具体策略类上下文类Context测试类 策略模式的应用策略模式的优点策略模式的缺点策略模式的使用场景 策略模式 策略模式(Strategy Pattern) Strategy策略也称作Policy政策。 想…...

opencv dnn模块 示例(26) 目标检测 object_detection 之 yolov10

文章目录 1、yolov10简要介绍1.1、双标签分配策略1.2、架构改进1.3、性能1.4、预训练模型1.5、网络有关层说明 2、测试2.1、官方测试2.2、opencv dnn2.2.1、仅运行到内部"NMS"步骤之前的层2.2.2、完整代码2.2.2、完整实现所有层 2.3、onnxruntime测试2.4、tensorrt 1…...

【python进阶】python图形化编程之美--tkinter模块初探

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

discuz点微同城源码34.7+全套插件+小程序前端

discuz点微同城源码34.7全套插件小程序前后端 模板挺好看的 带全套插件 自己耐心点配置一下插件 可以H5可以小程序...

ActiveMQ 介绍、下载、安装和控制台

ActiveMQ 介绍 Apache ActiveMQ 是一款非常成熟且功能全面的开源消息中间件,由Apache软件基金会维护。它遵循 Java Message Service (JMS) 规范,这意味着它提供了一组标准的 API,允许 Java 应用程序以一种标准化的方式发送和接收消息。 以下…...

MacOS M系列芯片一键配置多个不同版本的JDK

第一步:下载JDK。 官网下载地址:Java Archive | Oracle 选择自己想要下载的版本,一般来说下载一个jdk8和一个jdk11就够用了。 M系列芯片选择这两个,第一个是压缩包,第二个是dmg可以安装的。 第二步:编辑…...

源码文章上传无忧,论坛小程序支持

前言 在数字化时代,知识的分享与传播显得愈发重要。为了满足广大创作者和求知者的需求,我们推出了全新的论坛小程序,不仅支持文章、源码、链接等多样化内容的上传,还实现了付费观看功能,为创作者们提供了一个展示才华…...

Docker面试整理-如何优化Docker容器的性能?

优化Docker容器的性能可以从多个方面入手,以下是一些建议: 选择合适的基础镜像:使用轻量级的基础镜像,如基于Alpine Linux的镜像,可以减少镜像的大小和启动时间。避免使用过于庞大的操作系统镜像。优化Dockerfile:减少Dockerfile中的不必要指令和层,以最小化镜像的大小。…...

list(二)和_stack_queue

嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,list的模拟实现(二)以及_stack_queue,下面让我们开始今天的学习吧! list(二)和_stack_queue 1.list的构造函数 2.设计模式之适配器和迭代器 3.新容器de…...

查询SQL02:寻找用户推荐人

问题描述 找出那些 没有被 id 2 的客户 推荐 的客户的姓名。 以 任意顺序 返回结果表。 结果格式如下所示。 题目分析: 这题主要是要看这null值会不会用,如果说Java玩多了,你去写SQL时就会有问题。在SQL中判断是不是null值用的是is null或…...

2、Tomcat 线程模型详解

2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…...

对硬盘的设想:纸存、执行存

固态硬盘出现后,发现它的擦写次数受限,越是便宜的固态硬盘,擦写次数越少。于是,有了“纸存”的设想,即硬盘上的单元只能改写一次,就像拿钢笔在纸上写字一样。这时,文件系统、数据库该怎么设计&a…...

最新付会进群多群同时变现社群系统V3.5.3版本 详细教程+源码下载

市面1888最新付费进群多群同时变现系统V3.5.3版本 详细教程源码下载介绍: 续男粉变现,相亲群变现后 演化出来的最新多群同时变现系统 可同时进行40个群同时变现 可设置地域群,相亲,男粉变现等多种群 购买后包括详细的 域名服…...

python tk实现标签切换页面

import tkinter as tk from tkinter import ttk# 初始化主窗口 root tk.Tk() root.title("标签页示例")# 设置窗口大小 root.geometry("400x300")# 创建 Notebook 小部件 notebook ttk.Notebook(root) notebook.pack(expandTrue, fill"both")#…...

引擎:UI

一、控件介绍 Button 按钮 创建一个按钮 按钮禁用 精灵模式 颜色模式 缩放模式 绑定点击事件 EditBox 输入框 Layout 布局 支持水平排列、垂直排列、背包排列 PageView 页面视图 ProgressBar 进度条 RichText 富文本 绑定点击事件 事件可以被其它标签包裹 图文混排 Scroll…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

7.4.分块查找

一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...