FFmpeg视频多宫格处理
FFmpeg除了画中画显示,还可以以多宫格的形式呈现,除了可以输入视频文件,还可以输入视频流、采集设备等。overlay滤镜为关键画布,可以通过FFmpeg建立一个画布,也可以使用默认的画布。如果想以多宫格的方式展现,则可以自己建立一个足够大的画布,如下:
ffmpeg -re -i 111.mp4 -re -i 222.mp4 -re -i 333.mp4 -re -i 444.mp4 -filter_complex "nullsrc=size=512x208[base];[0:v] setpts=PTS-STARTPTS,scale=256x104[upperleft];[1:v] setpts=PTS-STARTPTS,scale=256x104[upperright];[2:v] setpts=PTS-STARTPTS,scale=256x104[lowerleft];[3:v] setpts=PTS-STARTPTS,scale=256x104[lowerright];[base][upperleft] overlay=shortest=1[tmp1];[tmp1][upperright] overlay=shortest=1:x=256[tmp2];[tmp2][lowerleft] overlay=shortest=1:y=104[tmp3];[tmp3][lowerright] overlay=shortest=1:x=256:y=104" -c:v libx264 output.flv
命令执行完成后,即通过nullsrc创建一个overlay画布,画布的大小为512x208像素,使用[0:v][1:v][2:v][3:v]将输入的4个视频流去除,分别进行缩放处理,处理为256x104像素的视频,然后基于nullsrc生成的画布进行视频平铺,根据命令中定义的upperleft、upperright、lowerleft、lowerright进行不同位置的平铺。
网友评论