我正在使用以下命令通过 FFMPEG 连接多个视频,
-ffmpeg -y -i 'video1.mp4' -i '/video2.mp4' -i '/video3.mp4' -i 'musico.mp3'
-f lavfi -i anullsrc=r=44100:cl=stereo -i '/background.png'
-filter_complex
[0:v]scale='if(gt(iw\,1280)\,1280\,iw)':720,pad='1280:720:-1:-1:black@0',setsar=1,fps=24,format=rgba[v0];
[1:v]scale='if(gt(iw\,1280)\,1280\,iw)':720,pad='1280:720:-1:-1:black@0',setsar=1,fps=24,format=rgba[v1];
[2:v]scale='if(gt(iw\,1280)\,1280\,iw)':720,pad='1280:720:-1:-1:black@0',setsar=1,fps=24,format=rgba[v2];
[5:v]scale=1280:720[bg];
[0:a]volume=1.0[a0];[1:a]volume=1.0[a1];[2:a]volume=1.0[a2];[3:a]volume=1.0[a3];
[v0][v1][v2]concat=n=3:v=1:a=0[video];
[bg][video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[v]; //background added here
[a0][a1][a2]concat=n=3:v=0:a=1[a];[a3][a]amix=inputs=2[a] -map "[v]" -map "[a]" -c:v libx264
-pix_fmt yuv420p -crf 28 -movflags +faststart -vsync 2 -preset ultrafast -shortest 'FinalTempVideo.mp4'
它运行良好,但由于使用 rgba 过滤器在填充区域添加透明颜色,处理视频花费的时间太长。
我为何要这么做? 我有多个具有不同宽度和高度的输入视频,我想将它们绘制在背景图像上,因此我缩放并添加填充以获得我想要的1280:720 的帧超过 16:9 的宽高比,但使用yuv420p过滤它在输入后面生成一个黑色背景,所以我使用RGBA过滤器的处理时间太长。此外,我不想使用裁剪选项代替填充,我需要完整显示原始视频内容。
要求: 我怎样才能以更少的处理时间获得所需的结果或有什么方法可以替代它?