
我上傳了幾個小時後FFmpeg 編碼的 YouTube 影片,我發送給的幾個人開始報告一個奇怪的問題:音訊的前 26 分鐘聽起來非常失真;有些人形容它聽起來像是在水下。這是一個例子聽起來像什麼。
然後我開始對更多人進行測試,並從總共 31 台行動裝置中得出了以下數據。
普通音訊:
Galaxy S10 (x2)
Galaxy S20 (x3)
Galaxy A50
iPhone XR (x3)
iPhone 7
iPhone 8 (x2)
iPhone 10 Pro
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12 (x3)
iPhone 12 Pro
Oppo F11
OnePlus 7T
Pixel 3A XL
OnePlus 7 Pro
音頻失真:
iPhone 6S
Galaxy S7 Edge
Galaxy S8+
Galaxy S10 Lite
Huawei Y6 2019
Huawei P30 Pro
Honor 10 Lite
31 台行動裝置中,有 7 台的前 26 分鐘音訊出現故障,即 22%,如果僅包含 Android 手機,則這一比例會增加到 50% 以上。我詢問的大多數人都來自已開發國家,這意味著數據也偏向更新、更現代的手機,這意味著在主要使用舊版 Android 的欠發達國家,這一數字很容易接近 80%。
不用說,對於像我這樣希望能夠上傳到 YouTube 並讓它處理其餘部分而不是進行類似 Web 開發的設備調試的人來說,這是一個相當大的問題。
我從多個來源視頻編譯了視頻,使用 FFmpeg 對其進行編碼和連接。
它使用 H264 和 OPUS 作為編解碼器,但更相關的是,檢查來源影片前 26 分鐘來自表明該問題源於該視頻,所以現在問題變成:
a) 特定來源視訊中的什麼因素導致如此大比例的行動裝置中的音訊出現亂碼?
b) 如何使用 FFmpeg 修復它?
答案1
我不知道為什麼這個問題被否決了,但無論如何,我透過在 Doom9 音訊專家論壇上發布完全相同的問題,設法找到了問題的解決方案。我幾乎立即從用戶那裡得到了以下回复呂克利:
左右聲道相位相差 180°。反轉其中一個(即其中一個頻道的前 26 分鐘)。
當我問他為什麼問題僅限於某些行動裝置時,他回答:
他們似乎以單聲道播放音頻,因此他們將左右聲道添加在一起。因此,結果僅包含來自左聲道和右聲道的音訊壓縮偽影。
然後我開始搜尋如何在 FFmpeg 中解決這個問題,並遇到了以下命令,由 Gyan 提供這裡:
ffmpeg -i input.wav -af "aeval='-val(0)':c=same" output.wav
在有問題的源視頻上運行此命令,重新連接所有源視頻,重新上傳到 YouTube,然後使用相同的設備再次測試,確認這確實解決了問題。
我很高興能夠將我的影片上傳到 YouTube,而不必擔心單一裝置的支持,因為我在網頁開發工作中已經足夠處理這個問題了。感謝所有投票讓這個問題保持開放的人,這違背了該網站日益熱心的版主的意願。