FFMPEG - 合併兩個具有定義的重疊時間的音訊文件

FFMPEG - 合併兩個具有定義的重疊時間的音訊文件

要求

我想連接兩個具有預定義重疊時間的音訊檔案。

例如,如果定義了 10 秒重疊,則第一個音訊的結束 10 秒和第二個音訊的開始 10 秒在輸出中重疊。

|<---- 1st mp3 file -------------------->                       |
|                        <-----------2nd mp3 file ------------->|

result:
|<-----------------------(overlap 10 sec )--------------------->|

答案1

  1. 使用ffprobe獲得持續時間第一個 mp3 檔案的。

  2. 運行ffmpeg使用延遲延遲音訊和混合物將兩個音訊流混合為一個:

    ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[1]adelay=Ns|Ns[a1];[0:a][a1]amix=inputs=2[a]" -map "[a]" output.mp3
    
    • Ns= 1.mp3 duration- overlap duration。例如,如果1.mp3長度為 30 秒,而您想要 10 秒的疊加,則使用20s|20s

    • 這假設2.mp3是立體聲。

    • 如果您的ffmpeg版本早於 4.2,則在 adelay 中使用毫秒而不是秒,如 中所示20000|20000

    • -map "[a]"告訴ffmpeg使用 amix 的輸出,該輸出被任意標記[a]。否則,預設流選擇行為將會被使用。如果您對此感到滿意並理解其含義,那麼請隨意省略標籤 和-map(例如...amix=inputs=2" output.mp3)。另請參閱-map文件.

相關內容