ffmpeg 映射幫助,將 1 6ch 音訊編碼為多軌

ffmpeg 映射幫助,將 1 6ch 音訊編碼為多軌

我有 2 個輸入檔:

  • cover.jpg
  • audio.dts(6通道)

我的目標檔案是一個包含 1 個影片和 3 個音訊的 mp4:

  • 音訊 1 是 2 聲道 aac
  • 音頻2是6頻道ac3
  • 音頻3是6通道dts

這是我嘗試過的命令。圖片影像到視訊與音訊多通道:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \
-map 0:0 -map 1:0 -map 1:0 -map 1:0 \
-f mp4 \
-codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \
-codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \
-codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \
-codec:a:2 copy \
-threads 0 -y \
-shortest -t 00:00:39.000 out.mp4

但我應用於音訊#1 的音訊選項似乎也應用於音訊#2 和音訊#3。

我如何才能使這些選項僅適用於一首曲目?

答案1

像往常一樣,在 FFmpeg 中執行此類任務有多種方法。

我最熟悉的是使用channelsplit過濾器來分離音訊串流並為每個音訊串流定義標籤。這樣,您就可以對任何一個通道單獨執行各種過濾器,並將輸出對應到包含您想要的通道的任意組合。

過濾器看起來像這樣:

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...."

在此範例中,我們將 3 個通道分別拆分為新標籤:[1] [2][3]。現在可以稍後調用這些標籤並透過其他過濾器推送和/或映射到最終輸出。

希望這可以幫助!

相關內容