2,3,4路视频拼接可以参考下面:
https://blog.csdn.net/tianshan2010/article/details/104737576
https://blog.csdn.net/Gary__123456/article/details/88742705
4路拼接【上下左右】:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "[0:v]pad=iw2:ih2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" output.mp4
5路视频,竖拼:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -i 5.mp4 -filter_complex "[0:v]pad=iw:ih*5[a];[a][1:v]overlay=0:h[b];[b][2:v]overlay=0:2.0*h[c];[c][3:v]overlay=0:3.0*h[d];[d][4:v]overlay=0:4.0*h" output.mp4
5路视频,横拼:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -i 5.mp4 -filter_complex "[0:v]pad=iw*5:ih*1[a];[a][1:v]overlay=w[b];[b][2:v]overlay=2.0*w[c];[c][3:v]overlay=3.0*w[d];[d][4:v]overlay=4.0*w" output.mp4
5路视频,上3下2拼接:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -i 5.mp4 -filter_complex "[0:v]pad=iw*3:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=2.0*w[c];[c][3:v]overlay=0:h[d];[d][4:v]overlay=w:h" output.mp4
6路视频,上3下3拼接:
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -i 5.mp4 -i 6.mp4 -filter_complex "[0:v]pad=iw*3:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=2.0*w[c];[c][3:v]overlay=0:h[d];[d][4:v]overlay=w:h[e];[e][5:v]overlay=2.0*w:h" output.mp4
其中核心的是-filter_complex参会后面的每一个用;分开的部分;[0:v];[1:v];[2:v]分别代表第几个视频;
overlay=0:h[d]后面的0:h[d]表示当前视频在大的视频中的坐标;视频拼接就是核心理解overlay的含义,然后不管几路都可以拼接了。
还有一点 第一个[0:v]pad=iw3:ih2[a] ;=前面是固定的,后的表示长度分成几份,宽度分成几份;我就是这么理解的