如何在 ffmpeg 中合并两个没有音频流的视频

如何在 ffmpeg 中合并两个没有音频流的视频

我想将不同时间的多幅图像合并为一个视频,但是失败了。

首先,我通过以下代码将第一组图片合并到“video1.mp4”中:

$ ffmpeg -loop 1 -r 30 -i img%2d.png -t 00:01:30 -shortest video1.mp4

然后我以同样的方式将第二组合并到“video2.mp4”。

但是当我通过以下代码合并“video1.mp4”和“video2.mp4”时:

$ ffmpeg -y -i video1.mp4 -i video2.mp4 -filter_complex \
  "[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1" output.mp4

我收到一条错误消息:

过滤器图描述中的流说明符“:1”[0:0] [0:1] [1:0] [1:1] concat=n=2:v=1:a=1 与任何流都不匹配。

我发现只有当视频没有音频数据时才会出现此错误信息,但我需要合并所有视频,然后才能将另一个音频文件添加到最终视频中。

你能帮我合并多个没有音频的视频吗?

答案1

简单来说,您在创建的图像视频中没有音频流。那里只有视频流。因此,当您尝试从没有音频流的源获取音频流时,您会收到此错误。在您的第一个命令中,您只是从一组图像中创建了一个视频,其中没有音频。因此,在该命令的输出中将只有一个视频流。在您的第二个命令中,[0:0]指的是第一个输入的第一个流,在您的情况下它是视频流。[0:1]指的是第二个输入的第二个流,它不存在。

由于您要连接的任何视频都没有音频,因此简单的修复方法如下。

ffmpeg -y -i video1.mp4 -i video2.mp4 -filter_complex 
"[0:0][1:0]concat=n=2:v=1:a=0" output.mp4

相关内容