FFmpeg命令行大致可以分为两类: 

1.视频、音频、图片的换。 

例如视频截取、视频码、视频连接、视频音频合成等。 

2.增加处理效果。 

例如增加水印、增加gif、音频延迟等。一般是通过滤镜功能实现。 

滤镜参考资料: 

http://ffmpeg.org/ffmpeg-filters.html 

http://blog.chinaunix.net/uid-26000296-id-4282537.html 


FFmpeg命令行举例: 

视频截取 

ffmpeg -ss 00:46:28 -i "Morning_News.asf" -acodec copy -vcodec copy -t 00:03:25 output.asf 

这行命令解释为:从文件 Morning_News.asf 第 46:28 分秒开始,截取 03: 25 的时间,其中视频和音频解码不变,输出文件名为 output.asf 。 

-ss :从指定时间开始(如果该时间点无效,则跳到该时间点前,最接近的有效seek point) 

-i:输入源 

-acodec copy -vcodec copy:视频和音频编码不变 

-t:在该时间点停止输出 



视频码 

ffmpeg -i INPUT -f FORMAT OUTPUT 

例如: 

ffmpeg -i "D:/result.mpge" -f mp4 "D:/result.mp4" 


视频连接 

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg 

http://trac.ffmpeg.org/wiki/How%20to%20concatenate%20(join%2C%20merge)%20media%20files 


去除视频声音 

ffmpeg -i 1.avi -vcodec copy -an 2.avi  


合并音频和视频 

ffmpeg -i a.wav  -i a.avi out.avi 

若音频比视频长,画面停留在最后一帧,继续播放声音。 

显示多幅图片(不同位置) 

ffmpeg -y -i boss.mp4 -i left.png -i left.png -filter_complex "overlay=5:5,overlay=0:0" -f mp4 output.mp4 

-filter_complex:使用复合滤镜 

"overlay=5:5,overlay=0:0":第一个图片的x、y坐标为(5,5),第二个为(0,0) 


在特定时间显示图片 

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 

命令行中可以使用表达式,参考:http://ffmpeg.org/ffmpeg-all.html#Expression-Evaluation 

具体意思是时间t在1到3秒内,图片的x坐标为60,否则为-500(移出屏幕),y坐标一直为50不变 


音频提前或延迟N秒 

ffmpeg -i ogg.ogg -i 1.avi -filter_complex "adelay=3000|3000" output.avi 

-filter_complex "adelay=3000|3000":对前面的ogg音频的两个声道都延迟3000毫秒 

http://ffmpeg.org/ffmpeg-all.html#adelay 


音频合成 

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT 

inputs=3:三个输入 

duration=first:输出长度为第一个输入的长度 

dropout_transition=3:声音淡出时间为3秒