如何快速將錄影檔案的5.1聲道合併為立體聲(stereo)
5.1聲道錄影模式是一些錄影機會提供的聲音模式,但如果錄回來的影片上傳到YouTube以後嚴重爆音了,或者聲音在只有立體聲的電腦上播放變的很詭異,是不是有辦法很快修正這個問題呢?
答案是...有的!
在5.1聲道的錄影模式下,聲音會被錄成左前、中前、右前、左後、右後、低音等6個軌道,然而在播放的時候,取決於使用的播放器或平台,這5.1聲道會被用各種不同的方式合併(sum)成只有左聲道和右聲道,假設是在二聲道的系統上播放。
所以當5.1聲道的影片上傳到YouTube以後,透過chrome播放時,YouTube將左右的前後聲道合併,又混入中前聲道和低音聲道的訊號得到立體聲的左右聲道,但卻沒有套用適當的係數,導致聲音遠遠超過0dB而嚴重爆音。概念上很像是把6杯裝了8分滿的水,集中倒到其中的2個杯子,可以想像杯子一定是滿出來了。
而若在電腦上用VLC player播放,則又是另外一種情況。在預設的情況下,VLC只會將左前和右前對應到電腦的左右聲道,如此造成一個非常嚴重的問題:中間聲道的資訊完全消失。聽起來會是很空洞的聲音。
這個問題可以透過各種影片編輯軟體裡面的混音器修正,但都免不了需要重新運算匯出。
更快的方式則是使用ffmpeg的命令式將5.1聲道的資訊,套用適當的係數重新混成立體聲需要的左右聲道。
命令式非常簡單(相對於另外一篇在講取代影片聲音的批次命令...)
ffmpeg -i 來源影片檔名(含副檔名) -c:v copy -af "pan=stereo|c0 = 1FL + 0.5FC + 0.6BL|c1 = 1FR + 0.5FC + 0.6BR" 輸出影片檔名(含副檔名)
其中c0 = 1FL + 0.5FC + 0.6BL,和c1 = 1FR + 0.5FC + 0.6BR是左聲道(c0)和右聲道(c1)的係數和運算式。在目前的係數中表示"新的左聲道"的聲音來自"1份左前聲道 + 0.5份中間聲道 + 0.6份左後聲道"的組合。右聲道係數相同。
係數不是絕對,這個例子只是其中一組常用的係數,請依照實際情況調整。
所以如果以00083.mts為來源,輸出影片為00083st.mts的話,命令式會長這樣:
ffmpeg -i 00083.mts -c:v copy -af "pan=stereo|c0 = 1FL + 0.5FC + 0.6BL|c1 = 1FR + 0.5FC + 0.6BR" 00083st.mts
參考資料:
ffmpeg documentation - 6.54.1 Mixing examples
Manipulating audio channels with ffmpeg
5.1 sound in Youtube
沒有留言: