我有2个视频文件(input.mp4,leadout.mp4)和一个图像(watermark.png)。我需要将第一个视频剪切到54秒,添加水印,然后将其与第二个视频合并。 我实现了ffmpeg的3次调用:
ffmpeg -ss 0 -i input.mp4 -t 54 -c copy temp.mp4
ffmpeg -i temp.mp4 -i watermark.png -pix_fmt yuv420p -filter_complex "[0:v][1:v] overlay=0:0" -vcodec libx264 -crf 27 -preset ultrafast -strict -2 temp2.mp4
ffmpeg -i temp2.mp4 -i leadout.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -vcodec libx264 -crf 27 -preset ultrafast -strict -2 output.mp4
如您所见,这是非常低效且耗时的。有什么方法可以使用filter_complex一次执行这3个操作? 预先感谢!
答案 0 :(得分:1)
您可以将所有三个命令组合为一个:
ffmpeg -t 54 -i input.mp4 -i watermark.png -i leadout.mp4 -filter_complex "[0:v][1:v]overlay[v0];[v0][0:a][2:v][2:a]concat=n=2:v=1:a=1[vv][a];[vv]format=yuv420p[v]" -map "[v]" -map "[a]" -c:v libx264 -crf 27 -preset ultrafast -movflags +faststart output.mp4