背景
因工作原因,需要使用ffmpeg对视频进行加工处理。其间用到了ffmpeg命令行参数 -filter_complex 。这个选项功能很强大,但是网上对其的讲解很少。遂自己实验了一番,将结果记录下来,以免忘却
filter_complex
其实可以从名字看出来,他是一个过滤器,熟悉ffmpeg的人应该都知道ffmpeg的filter很强大。它即是作为ffmpeg的filter的命令行选项。
下面命令行的作用时,拼接两个视频,一个视频为17秒,一个视频为4秒,将其拼接为视频会议模式(即一个视频源始终存在,另一个视频源在10秒后接入,持续4秒后挂断)期间第二个视频源位置为黑屏
ffmpeg -y -i C:\Users\Li\Desktop\rtc-1000008.webm -i C:\Users\Li\Desktop\rtc-1000009.webm
-filter_complex
"color=color=Black:size=1280x480:d=17.625,format=pix_fmts=yuv420p[bg];
color=color=Black:size=640x480:d=17.625,format=pix_fmts=yuv420p[n0-0-bg];
movie='C\:/Users/Li/Desktop/rtc-1000008.webm':stream_index=0,scale=w='iw*min(640/iw,480/ih)':h='ih*min(640/iw,480/ih)'[n0-0-fg];
[n0-0-bg][n0-0-fg]overlay=x=(W-w)/2:y=(H-h)/2[n0-0];
[n0-0]concat=n=1:v=1:a=0[s-0-0];
color=color=Black:size=640x480:d=10.343,fifo[s-0-1-hd];
color=color=Black:size=640x480:d=4.279,format=pix_fmts=yuv420p[n1-0-bg];
movie='C\