一、命令行参数
代码语言:javascript复制ffmpeg -re -i test.mp4 -re -i test.mp4 -re -i test.mp4 -re -i test.mp4 -filter_complex "nullsrc=size=1920x1080 [base];[0:v] setpts=PTS-STARTPTS,scale=960x540 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=960x540 [upperright]; [2:v] setpts=PTS-STARTPTS, scale=960x540 [lowerleft]; [3:v] setpts=PTS-STARTPTS, scale=960x540 [lowerright];[base][upperleft] overlay=shortest=1[tmp1]; [tmp1][upperright] overlay=shortest=1:x=960 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=540 [tmp3];[tmp3][lowerright] overlay=shortest=1:x=960:y=540" -c:v libx264 out_1080p.mp4
二、参数解释
-re -i : 在实现多宫格的过程中,如此表示多个输入,其后写视频文件名即可
-filter_complex: 表示使用复合滤镜,其后引号中内容为滤镜的具体参数
nullsrc: 理解为画布,也就是我们要把所有的视频画到该画布上,参数中指定其大小
[n:v]: 表示第n个视频的参数, setpts表示pts的设置方式,scale表示该视频的缩放大小,[upperleft]指出第n个视频所对应的标签,此例中n为0,1,2,3
接下来,请仔细看喽:
首先在[base]上,加入[upperleft]的内容,使用overlay滤镜,滤镜叠加起始位置为(0,0)(不填默认为原点)后,产生新的标签tmp1;
基于[tmp1],与[upperright]使用overlay再次叠加,产生标签[tmp2];
基于[tmp2], 与[lowerleft]使用overlay再次叠加,产生标签[tmp3];
基于[tmp3], 与[lowerright]使用overlay再次叠加,所有4个标签构建完成。
-c:v 指出合成之后的视频使用何种编码方式
三、实战
由于参数臃肿,就不一一手敲了,大家看看命令执行的效果:
四、效果
好了,今天这一期就到这里了,欢迎小伙伴们下期光临,也别忘了多多练习哦!