ffmpeg入门(3):命令详解
想要熟练地使用ffmpeg,就必须熟悉它的命令规范,本章将会对命令进行详细介绍。
通用选项
-L 打印许可证及调用类库信息
-h 打印帮助选项
-f fmt 采用格式fmt
-i filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hhss格式的记录时间也支持
-ss position 搜索到指定的时间 hhss的格式也支持
-title string 设置标题
-author string 设置作者
-copyright string 设置版权
-comment string 设置评论
-target type 设置目标文件类型(vcd,svcd,dvd) 所有的格式选项(比特率,编解码以及缓冲区大小)自动设置
视频选项
-b bitrate 设置比特率
-r fps 设置帧频
-s size 设置帧大小
-aspect aspect 设置横纵比 4:3 16:9
-croptop size 设置顶部切除带大小,像素单位
-cropbottom size –cropleft size –cropright size 底部,左边,右边切除带大小,像素单位
-padtop size 设置顶部补齐的大小 像素单位
-padbottom size –padleft size –padright size –padcolor color 设置补齐条大小和颜色(16进制,如000000代表黑色)
-vn 去视频记录
-bt tolerance 设置视频码率容忍度kbit/s
-maxrate bitrate设置最大视频码率容忍度
-minrate bitreate 设置最小视频码率容忍度
-bufsize size 设置码率控制缓冲区大小
-vcodec codec 强制使用codec编解码方式,如果用copy表示原始编解码数据必须被拷贝。
-sameq 使用同样视频质量作为源(VBR) -pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-passlogfile file 选择两遍的纪录文件名为file
-g gop_size 设置图像组大小
-intra 仅适用帧内编码
-qscale q 使用固定的视频量化标度(VBR)
-qmin q 最小视频量化标度(VBR)
-qmax q 最大视频量化标度(VBR)
-qdiff q 量化标度间最大偏差(VBR)
-qblur blur 视频量化标度柔化(VBR)
-qcomp compression 视频量化标度压缩(VBR)
-rc_init_cplx complexity 一遍编码的初始复杂度
-b_qfactor factor 在p和b帧间的qp因子
-i_qfactor factor 在p和i帧间的qp因子
-b_qoffset offset 在p和b帧间的qp偏差
-i_qoffset offset 在p和i帧间的qp偏差
-rc_eq equation 设置码率控制方程默认tex^qComp
-rc_override override 特定间隔下的速率控制重载
-me method 设置运动估计的方法可用方法有zero phods log x1 epzs(缺省) full
-dct_algo algo 设置dct的算法,可用的有 0 FF_DCT_AUTO (缺省的DCT) 1 FF_DCT_FASTINT 2 FF_DCT_INT 3 FF_DCT_MMX 4 FF_DCT_MLIB 5 FF_DCT_ALTIVEC
-idct_algo algo 设置idct算法。可用的有0 FF_IDCT_AUTO (缺省的IDCT) 1 FF_IDCT_INT 2 FF_IDCT_SIMPLE 3 FF_IDCT_SIMPLEMMX 4 FF_IDCT_LIBMPEG2MMX 5 FF_IDCT_PS2 6 FF_IDCT_MLIB 7 FF_IDCT_ARM 8 FF_IDCT_ALTIVEC 9 FF_IDCT_SH4 10 FF_IDCT_SIMPLEARM
-er n 设置错误残留为n 1 FF_ER_CAREFULL(缺省)2 FF_ER_COMPLIANT 3 FF_ER_AGGRESSIVE 4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 设置错误掩蔽为bit_mask,该值为如下值的位掩码1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled) -bf frames 使用frames B 帧,支持mpeg1,mpeg2,mpeg4
-mbd mode 宏块决策0 FF_MB_DECISION_SIMPLE 使用mb_cmp 1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4个运动矢量仅用于mpeg4
-part 使用数据划分仅用于mpeg4
-bug param 绕过没有被自动监测到编码器的问题
-strict strictness 跟标准的严格性-aic 使能高级帧内编码h263+
-umv 使能无限运动矢量h263+
-deinterlace 不采用交织方法
-interlace 强迫交织法编码仅对mpeg2和mpeg4有效。当你的输入是交织的并且你想要保持交织以最小图像损失的时候采用该选项。可选的方法是不交织,但是损失更大
-psnr 计算压缩帧的psnr
-vstats 输出视频编码统计到vstats_hhmmss.log
-vhook module 插入视频处理模块module 包括了模块名和参数,用空格分开
音频选项
-ab bitrate 设置音频比特率
-ar freq 设置音频采样率
-ac channels 设置通道缺省为1
-an 去音频纪录
-acodec codec 使用codec编解码,如果用copy表示原始编解码数据必须被拷贝。
音频/视频捕获选项
-vd device 设置视频捕获设备。比如/dev/video0
-vc channel 设置视频捕获通道DV1394专用
-tvstd standard 设置电视标准NTSC PAL(SECAM)
-dv1394 设置DV1394捕获
-av device 设置音频设备比如/dev/dsp
高级选项
-map file:stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法用于编解码测试
-ps size 设置包大小,以bits为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流。只工作于图像流,用于ffserver测试
实例
视频格式转换命令:
ffmpeg -i test.mp4 test.flv
音频和视频合并命令:
ffmpeg -i test.mp4 -vcodec copy -an no_audio.mp4
ffmpeg -i no_audio.mp4 -i audio.mp3 -vcodec copy -acodec copy av.mp4
(注):先移除test.mp4的音频流,再与audio.mp3合并为av.mp4
视频中提取音频:
ffmpeg -i av.mp4 -vn -acodec copy audio.mp3
视频中提取照片:
ffmpeg -i av.mp4 -y -f image2 -ss 00:00:08 -t 0.001 slt.jpg
(注):-ss 表示搜索到指定时间 -t表示执行时间 ,该两个选项通常配合使用。
视频截取
ffmpeg -y -i out.mpg -vcodec copy -acodec copy -ss 00:00:03 cutout.mpg
ffmpeg -y -i out.mpg -vcodec copy -acodec copy -ss 00:00:03 -t 00:00:10 cutout.mpg
合并两个视频或两个音频
ffmpeg -i concat:"part1.avi|part2.avi" -vcodec copy -acodec copy output.avi
两端aac音频文件混合(或先将.aac转成.ts)
ffmpeg -y -i 1.aac -i 0.aac -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 a.mp3
音频滤镜,音频播放延时:
ffmpeg -i av.mp4 -filter_complex adelay="3000|3000" nav.mp4
显示多幅图片(不同位置)
-filter_complex:使用复合滤镜
“overlay=5:5,overlay=0:0”:第一个图片的x、y坐标为(5,5),第二个为(0,0)
ffmpeg -y -i boss.mp4 -i left.png -i left.png -filter_complex "overlay=5:5,overlay=0:0" -f mp4 output.mp4
在特定时间显示图片
命令行中可以使用表达式,参考:http://ffmpeg.org/ffmpeg-all.html\#Expression-Evaluation
具体意思是时间t在1到3秒内,图片的x坐标为60,否则为-500(移出屏幕),y坐标一直为50不变
ffmpeg -y -i 1.avi -i 1.png -filter_complex "overlay=x='if(between(t,1,3),60,-500)':y=50" -f mp4 left1.mp4
还没有评论,来说两句吧...