7.1 预置文件
预置文件包含option=value,一个用于每行,指定其也可以指定的命令行上的选项的序列的序列。’#’开头的字符行被忽略,并用来提供注释。空行将也被忽略。检查的例子FFmpeg的源代码树中的preset目录。
预置文件中指定的pre选项,这个选项需要一个预设名称作为输入。FFmpeg在$AVCONV_DATADIR和$HOME/.ffmpeg以及编译时指定的目录(通常是$PREFIX/share/ffmpeg)的目录中搜索文件名为preset_name.avpreset 的文件。例如,如果该参数是libx264-max,它会搜索文件libx264-max.avpreset。
7.2 视频和音频抓取
如果指定了输入格式和设备,ffmpeg将可以直接抓取视频和音频。 ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
或从ALSA音源(单声道输入,卡ID 1),而不是OSS: ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
请注意,您必须在启动ffmpeg前激活正确的视频源和信道,比如的xawtv。你也必须正确设置混音器中的音频记录电平。
7.3 X11抓取
使用ffmpeg抓取X11显示器 ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg 0.0是display.screen数量的X11服务器,与DISPLAY环境变量一致。
ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg 0.0是display.screen数量的X11服务器,与DISPLAY环境变量一致。10是在x偏移和20的y偏移。
7.4 视频和音频文件格式转换
任何支持的文件格式和协议可以作为ffmpeg的输入:
范例:
您可以使用YUV文件作为输入: ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
它将使用文件:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...Y,/ tmp目录/ TEST0。U, /tmp/test0.V, /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
Y文件使用的U和V文件的分辨率的两倍。他们是原始文件,没有头信息。他们可以通过所有视频解码器产生。您必须指定图像的大小与-s选项,如果ffmpeg的不能猜测它。
您可以从原始YUV420P文件输入: ffmpeg -i /tmp/test.yuv /tmp/out.avi
test.yuv是含有生YUV平面数据的文件。每个帧是由Y平面后跟U和V平面的一半的垂直和水平分辨率。
可以输出到原始文件YUV420P: ffmpeg -i mydivx.avi hugefile.yuv
您可以设置多个输入文件和输出文件: ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
转换音频文件a.wav和原始YUV视频文件a.yuv到MPEG文件a.mpg。
你也可以同时做音频和视频转换: ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
使用22050赫兹的采样率转换a.wav到MPEG音频。
可以同时进行多种格式的编码,并定义从输入流到输出数据流的映射: ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
转换a.wav到64千比特的a.mp2和128千比特的b.mp2。-map file:index输出数据流的定义的顺序指定了用于每一个输出流的输入流。
您可以转码解密的VOB: ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
这是一个典型的DVD翻录的例子;输入是VOB文件,输出与MPEG-4视频和MP3音频的AVI文件。注意,在这个命令,我们使用B帧,以便对MPEG-4流与DivX5兼容,并且GOP大小为300,这意味着每10秒插入一帧到29.97fps的输入视频。此外,音频流是MP3编码,所以你需要启用通过传递LAME支持可使用–enable-libmp3lame配置。该映射是特别有用的用于DVD的转码,以获得所需的音频语言。
注意:使用ffmpeg -formats查看支持的输入格式。
您可以从视频中提取图像,或从图像创建视频:
从视频中提取图片: ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
这将每秒提取一个视频帧,并输出到名为foo-001.jpeg,foo-002.jpeg等图片中。图片将被重新缩放到定义的尺寸。
如果你想提取有限数量的帧,你可以组合使用上面的命令与-vframes或-t选项,或与-ss开始从某一个时间点提取。
从图像创建视频: ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
语法foo-%03d.jpeg指定要使用的三个数字组成的十进制数用零填充到表达的序列号。它支持C语言printf函数相同的语法,但只有格式接受整数。
当导入图像序列,-i还支持Shell扩展通配符。这在内部通过image2-specific-pattern_type glob选项选择。
例如,从文件名匹配foo-*.jpeg的图片创建视频 ffmpeg -f image2 -pattern_type glob -i 'foo-*.jpeg' -r 12 -s WxH foo.avi
可以把相同类型的许多流到输出文件: ffmpeg -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut
产生的输出文件test12.nut将包含从以相反的顺序存储的输入文件中的四个流。
要强制CBR视频输出: ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
lmin,lmax,mblmin和mblmax四个选项的单位是lambda,但你可以使用QP2LAMBDA常熟轻松地从q单位转换: ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext