如何使用 ffmpeg 在曲目之间添加特定长度的静音?

如何使用 ffmpeg 在曲目之间添加特定长度的静音?

我想将多个音频文件与背景图像组合起来制作视频。我知道我可以添加带有地图的音频文件,如下所示

-i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2

但是,如何在以单个图像作为背景的情况下在音轨之间添加特定长度的静音?

答案1

如果我正确理解了您的问题,您可以提供多个输入并将它们连接起来:

ffmpeg \
  -loop 1 -i image.jpg
  -i audio1.wav \
  -f lavfi -t 5 -i anullsrc \
  -i audio2.wav \
  -filter_complex "[1:a][2:a][3:a]concat=n=3:v=0:a=1[outa]" \
  -map 0:v -c:v copy \
  -map "[outa]" -c:a aac -b:a 192k \
  -shortest \
  out.mkv

它的作用是:

  • 这将使用单个图像作为输入 #0(但您可以将其-f lavfi -i testsrc与实际视频文件交换)。输入 #1 和 #3 是您要使用的两个音频文件。

  • 输入 #2 是一个产生五秒静音的过滤器。

  • 然后将所有音频流与concat过滤器连接起来。

  • 例如,要添加第三个音频文件,您需要指定两个额外的音频输入(静音和实际音轨),添加concat过滤器的输入标签(即[4:a][5:a]),然后n=3增加到n=5

  • 输出文件使用原样的输入视频 ( -c:v copy),音频使用 192 kbit/s 的 AAC 重新编码。由于您正在应用过滤器,因此需要重新编码音频流。

  • -shortest选项确保编码在最短(视频或音频)流结束时结束。

相关内容