FFmpeg 合并过滤器-继续最长的音频流

FFmpeg 合并过滤器-继续最长的音频流

我有一个视频,其中已经有 1 个音频流。我m4a想将另一个文件与视频中已有的音频流合并。

m4a文件比其他音频流短约 10 秒,并且根据FFmpeg文档

如果输入的持续时间不同,则输出将以最短的持续时间停止。

但我希望它继续播放更长的音频流(但仍然将两个流合并为一个。

这是我当前正在使用的命令,一旦最短的音频流结束,它就会停止音频:

ffmpeg -i input.mp4 -i shorteraudio.m4a -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[0:a]amerge=inputs=2[a]" -map [v] -map [a] output.mp4

只用一个 FFmpeg 命令就能完成我想要做的事情吗?

答案1

如果已知第二个输入的音频流较短,则可以填充其长度,以使第一个输入变短。

ffmpeg -i input.mp4 -i shorteraudio.m4a -filter_complex "[0:v]scale=-2:720,format=yuv420p[v];[1:a]apad[a1];[0:a][a1]amerge=inputs=2[a]" -map [v] -map [a] output.mp4

相关内容