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格式的输入文件。