2 描述/概览

ffmpeg是一个非常快的视频/音频转换器,其也可以现场抓取音频/视频源,并在任意采样率、尺寸之间调整视频,以及提供多种高品质的滤镜系统。

ffmpeg从任意数量/形式的输入文件中进行读取(可以是普通文件,管道,网络流,设备源等等),通过输入文件选项对输入文件进行设定,通过-i进行标记,并写入到任意数量/形式的输出文件中,任何在命令行中不能被解释为选项的字符串信息(当然也不是被-i指定为输入文件的信息)都被作为一个输出文件。

原则上每个输入或输出文件都可包含数量不同的数据流(视频/音频/字幕/附件/数据….),具体文件中包含的数量和/或数据类型是文件的容器格式限定的,具体选择那些流从输入文件到输出文件则可能是自动或者依据-map选项(在流的选择章中介绍)来指定。

为了明确指定输入文件,你必须采用从0开始的数字索引法,即第1个输入文件由0索引,第2个则是1。同样的,在一个文件中指定数据流也是通过同样规则的索引法,即2:3表示第3个输入文件的第4个数据流。这些内容也可以参考流说明章节。

作为一般规则,选项用于指定紧接着的文件,因此命令中顺序很重要,你可以在命令中多次重复相同的选项,每次都可以应用于紧接着的下一个输入或者输出文件。例外的是全局选项(例如过程信息输出详细程度的选项),这些选项必须首先进行指定,会全局使用。

不要混淆输入和输出文件,要先指定所有的输入文件,然后才是所有的输出文件。也不要混淆选项应用的不同文件,所有的选项仅仅作用于紧接着的输入或者输出文件,除非重复指定选项才能作用于其他需要同样设定的文件。

  • 为了设定输出视频码率为64kbit/s:

    ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

  • 为了切换帧率到24fps:

    ffmpeg -i input.avi -r 24 output.avi

  • 为了强制把输入文件帧率设为1fps(仅为了建议raw格式数据), 并且把输出文件帧率设置为24fps:

    ffmpeg -r 1 -i input.m2v -r 24 output.avi

    注意这里的输入文件必须是raw格式的输入文件。