如何使用 ffmpeg 合并视频并包含空白?

如何使用 ffmpeg 合并视频并包含空白?

假设我有一系列需要合并的时间不重叠的视频文件:

  1. 1.mp4[0:00-0:45]
  2. 2.mp4[1:00-2:00]
  3. 3.mp4[2:10-3:00]

此示例有三个段,但一般情况下可能会有更多。

假设这些视频的长宽比相同但大小不一定相同,我想使用复杂的滤镜将它们组合成一个 3:00 长度的视频文件,没有视频时会留有空白。我实际上想要一个更复杂的滤镜结果,将其作为一部分,但我不知道如何制作这一部分。

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v] scale=640x480 [one];
[1:v] scale=640x480 [two];
[2:v] scale=640x480 [three];
???
[out]" -map '[out]' out.mp4

我正在寻找缩放输入视频流后要应用的过滤函数。我查看了:

  1. concat - 这似乎不允许时间填充
  2. streamselect 和 sendcmd - 如果有很多流,这似乎会变得非常复杂

这个问题类似于FFmpeg - 用间距集中音频文件,但使用视频代替音频。

我只是寻求视频方面的帮助;我的音频已经按我想要的方式运行了。

答案1

您可以使用颜色过滤器来完成此操作。

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v]scale=640x480[one];
color=black:s=640x480:d=15[b0];
[1:v]scale=640x480[two];
color=black:s=640x480:d=10[b1];
[2:v]scale=640x480[three];
[0:v][b0][1:v][b1][2:v]concat=n=5:v=1:a=0[out]"
-map '[out]' out.mp4

我假设您想要包含整个剪辑 1、2 和 3。

相关内容