如何使用 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),並使用 AAC 以 192 kbit/s 重新編碼音訊。由於您正在套用過濾器,因此需要重新編碼音訊串流。

  • -shortest選項確保編碼在最短(視訊或音訊)串流結束時結束。

相關內容