FFmpeg 连接过滤器

FFmpeg concat filter

我有 2 个相同的视频。其中一个视频没有音频,我想 concat 它们。

video1 = 1 video stream + 1 audio stream.
video2 = 1 video stream.
the result should be 1(concatenated) video stream, 1 audio stream

我试过了

ffmpeg -i videoonly.mov -i video+audio.mov -filter_complex "[0:v][0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" out.mov

但它不起作用并打印错误消息

Stream specifier ':a' in filtergraph description [0:v][0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a] matches no streams.

我排除了这种错误消息,因为第二个视频没有音频,我对音频进行了区分,但问题是如何让它工作或可能吗?

提前致谢。

concat 过滤器需要每个片段中的匹配对,因此如果其中一个片段没有音频,您应该提供一个虚拟流。下面,我使用anullsrc过滤器生成一个。

ffmpeg -i videoonly.mov -i video+audio.mov -f lavfi -t 1 -i anullsrc -filter_complex "[0:v][2:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" out.mov