原文地址:http://www.ffmpeg.org/ffmpeg.html
列表
1、简介
2、描述
3、详细描述
3.1、过滤
3.1.1、简单filtergraphs
3.1.2、复杂filtergraphs
3.2、流复制
4、流选择
5、选项
5.1、流说明符
5.2、通用选项
5.3 、AVOptions
5.4、主要选项
5.5、视频选项
5.6、高级视频选项
5.7、音频选项
5.8、高级音频选项
5.9、字幕选项
5.10、高级字幕选项
5.11、高级选项
5.12、预置文件
5.12.1、ffpreset文件
5.12.2、avpreset文件
6、例子
6.1、视频和音频抓取
6.2 、X11抓取
6.3、视频和音频文件格式转换
7、其他文档
8、作者
1、简介
ffmpeg [global_options] {[input_file_options] -iinput_url} ... {[output_file_options]output_url} ...
2、描述
ffmpeg 是一款快速的视频、音频转换器,它可以随时获取音/视频源。它还可以任意采样率之间的转换和调整视频动态与高质量的多元滤波器。
ffmpeg读取从任意数量的输入“文件”(可常规文件、管道、网络流、抓设备,等等),由- i选项指定,并写入任意数量的输出“文件”,由纯输出指定的url。任何命令行上发现不能被解释为一个选项被认为是一个输出的url。
原则上,每个输入或输出url可以包含任意数量的不同类型的流(视频/音频/字幕/附件/数据)。允许数量和/或类型的流可能会受到容器格式。选择从哪个输入将进入哪个输出流自动完成或地图选项(见流选择章)。
指输入文件的选项,你必须使用他们的指数(基于)。如第一个输入文件是0,第二个是1,等等。同样,流在一个文件被称为指数。例如:2:3指的是第四个第三输入文件流。也看到流章说明符。(不明白 -i 里面的参数的需要仔细看看这个)
作为一般规则,选择应用到下一个指定的文件中。因此,顺序很重要,你可以有相同的选项在命令行上很多次了。每次出现然后应用到下一个输入或输出文件。从这个规则例外全球选项(例如冗长的水平),这应该首先指定。
不要混合输入——首先指定输入文件和输出文件,那么所有输出文件。也不要混合选择,属于不同的文件。所有选项仅适用于下一个输入或输出文件和文件之间的重置。
设置输出文件的视频比特率64 kbit / s:
ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
强制输出文件到24 fps的帧率:
ffmpeg -i input.avi -r 24 output.avi
强制的帧速率输入文件(仅有效的原始格式)1帧的帧率24 fps的输出文件:
ffmpeg -r 1 -i input.m2v -r 24 output.avi
注:看来 -r 就是强制的意思
原始输入文件的格式必须写全。
3、详细描述
ffmpeg的代码转换过程见下图:
ffmpeg调用libavformat库(包含demuxers)来读取输入文件,并从他们那里得到数据包包含编码数据。当有多个输入文件时,
最低ffmpeg试图让他们通过跟踪同步时间戳在任何活动的输入流。
编码的数据包被传递到译码器(除非streamcopy选择流,进一步描述)。译码器产生未压缩的帧(原始视频/音频PCM /…),可以进一步过滤处理(见下一节)。过滤后,框架传递到编码器,编码和输出编码的数据包。最后这些都传递给mux,它将编码的数据包写入输出文件。
3.1、过滤
ffmpeg编码之前,可以使用过滤器原始音频和视频帧过程从libavfilter图书馆。几个链接过滤器过滤图形式。ffmpeg区分两种类型的filtergraphs:简单的和复杂的。
3.1.1、简单filtergraphs
简单filtergraphs是那些有一个输入和输出,两个相同类型的。在上面的图可以由简单的解码和编码之间插入一个额外的步骤:
简单filtergraphs配置了制定过滤器选项(vf和分别为视频和音频af别名)。一个简单filtergraph视频可以看到例如这样:
注意,一些过滤器改变帧属性而不是帧的内容。例如fps过滤器在上面的示例中变化的帧数,但不接触框架内容。另一个例子是setpts过滤器,否则只有设置时间戳和通过框架不变。
3.1.2、复杂filtergraphs
复杂filtergraphs是那些不能被描述为一个简单的线性处理链应用于一个流。这种情况下,例如,当图多个输入和/或输出,或者当不同于输入输出流类型。他们可以用下图表示:
复杂filtergraphs -filter_complex选项进行配置。注意,这个选项是全局性的,因为复杂的filtergraph,自然,不能明确地与一个流或相关文件。
-lavfi 相当于-filter_complex -lavfi选项。(这里应该说的-lavfi是简写方法)
的一个微不足道的例子复杂filtergraph覆盖过滤器,有两个视频输入和一个视频输出,包含一个视频覆盖在上面。它的音频对应amix过滤器。
3.2、流复制 (未来流与流合并很重要)
流复制是一个模式选择提供参数复制到编解码器的选择。它使ffmpeg省略的解码和编码步骤指定的流,所以只有多路分配器和多路复用技术。它是用于改变容器格式或修改集装箱层面的元数据。上图中,在这种情况下,简化:
由于没有解码和编码,它是非常快和没有质量损失。然而,它可能不工作在某些情况下,因为许多因素。应用过滤器也显然是不可能的,因为过滤器工作未压缩的数据。