: 推 twodahsk: 2b實在是太明顯了,好比YT的首播跟實際影片音質就不一樣 06/04 14:44
: → twodahsk: 我好幾次聽YT的THE FIRST TAKE首播就會碰到某些細節很不 06/04 14:45
: → twodahsk: 明顯的問題...聽後來放出的實際影片就不會 06/04 14:46
: → twodahsk: 不過YT首播的好像是144?不是很懂,我只講講自己的經驗 06/04 14:48
4滴,不過直播應該是 140
這個原因很複雜,從我這個外人從外部觀察
主因是 YouTube 工程師懂寫程式,但並沒有深入了解數據、編碼、音質間的交互影響
原先水管只是用戶上傳影片,觀眾播放影片的平台,Audio/Video 問題相對單純
在導入直播(Live Streaming)後問題變複雜了
但水管在 Audio 這塊只是以水管邏輯簡單處理,不如 Video 用心
※ 以下內容主要只關注 Audio coding format/encoding 問題,忽略 Video...
只看 HD↑的預設 Stereo audio format,不管低解析 Video's 低碼率 audio
眾知,44.1 kHz 是聲音數位化後的折衷選擇,配影片還是 48 kHz 比較好
經過初期,YouTube Video 的預設 Audio 編碼最終選擇了
48 kHz Opus (VBR)<=160 Kbps =opus(251)
但引進直播後,直播 Live Stream 的 Audio 編碼預設卻一國兩制選擇了
44.1 kHz AAC(LC) 128 Kbps =aac(140)
這有一些好處,AAC 的 Real-time encoding low-latency
這也是為什麼藍牙耳機一般都支援AAC
44.1 kHz 也比 48 kHz 數據少,能更快處理、更快傳送,這同樣也能減少直播延遲
從旁觀者的角度來看,水管應該是為了壓低 min-直播延遲才做了這個怪選擇
※ 但這造成有兩種預設播放格式
BUT Live Stream 的實況直播完後,能被轉成 Archive live streams 回放
影片勢上傳的 Video(含預上傳)現在也能開啟為 Live 變成 Streaming 播放
所以一般來說
直播主實況直播完 aac(140) 會被轉成 opus(251) 及其它格式
影片勢上傳完檔也會被轉成預設的 opus(251)、aac(140) 及其它格式
影響很大的一點是上傳的音質
有損 Encoder 基本上都是,餵越精確的數據,計算出越優的結果
輸入無損或高碼率的數據,會得出較佳的結果
無損&高碼率數據,包含更多的S訊號,較少的N噪聲與D失真
低碼率包含更多的失真與噪聲,這些失真與噪聲會被當成輸入訊號進行計算
※
THE FIRST TAKE 應該都是預先上傳,開啟預定倒數首播
所以播倒數完,開始播放的 Audio 會是 aac(140) 128 Kbps
因為首播算是直播 不管是否檔已上傳都是算直播,預設會選 aac(140) 128 Kbps 播放
首播結束才打開影片或等會 F5 更新,播放的會是 opus(251) 160 Kbps 因為變成播影片
不管上傳者或直播者,上傳或直播到水管的音質再好
Live 模式的預設就是 aac(140) 128 Kbps,有沒有道理?水管邏輯就是如此
所以上傳音質佳的話,首播會是殘廢的,要重播的音質才會正常
這也解釋去年星街TFT之亂除音源出問題外,為什有些人覺得重新播放會跟首播聽來不同
※ 線上追番也是同樣
●1A 木棉花在水管的首播 aac(140) 128 Kbps
https://i.imgur.com/sf3Ro9Z.png
○1B 同集差不多時間點的播放 opus(251) 160 Kbps
https://i.imgur.com/n4LVeQ6.png
●2A 另一個例子的首播 aac(140) 128 Kbps
https://i.imgur.com/WLe3Do3.png
○2B 對照 opus(251) 160 Kbps
https://i.imgur.com/TnVsgcd.png
○1B vs ○2B 明顯壓縮品質不同,opus(251) 160 Kbps 砍掉了 20 kHz 以上的數據
但 ○1B 保留了更多底噪(數據完整性), 16 kHz 以下的底噪也更一致
所以雖然 aac(140) 128 Kbps 砍掉了 16 kHz 以上的數據
但 ●1A 16 kHz 以下的完整性明顯比 ●2A 要好很多(有非常多不平順的塊狀)
※
不管 TFT 或是木棉花新番,上面都是上傳的檔案品質還不錯的例子
只要上傳的是無損或高碼率有損,Sample rate 是 44.1、48 or 96 kHz 都不會是大問題
但糟糕的狀況是上傳或直播的音質不佳
一般影響最大的是直播,因為直播的預設是 aac(140) 128 Kbps 碼率低
●兔兔族長今天的直播 aac(140) 128 Kbps
https://i.imgur.com/Jr3CvX7.png
16 kHz 以上空空,以下很扎實
所以族長上傳的音質應該不差,但被水管的碼率限制給砍掉了
○東巴昨天的存檔 opus(251) 160 Kbps
https://i.imgur.com/EypTjpt.png
16~20 kHz 看起來有東西,但都是垃圾(16 kHz 以下也有但已經跟訊號混在一起)
可明顯分辨 16 kHz 處斷頭,以上的東西跟以下完全沒有連續性與一體性
這些都是跟訊號相關的失真,沒有包含聲音、樂理相關的訊號
訊號強、這些失真就強,訊號弱、這些失真就跟著弱,跟著跳的 Aliasing Artifact
WHY? 在觀察、比對過無數的 YouTube Live & Archive 的音頻資料
個人無責任推測 Archive 轉檔的 Source 是 Live 的 aac(140) 128 Kbps 存檔
而不是直播者的原始上傳數據,也不知道原始上傳音頻有沒有留檔
從外部看最大的可能是,實況直播下線後 YouTube 會在在後台立刻開始批次轉檔
AAC to Opus encoder,內建的 SRC(Sample rate Converter) 應該是低音質的效率型
在 Source 低碼率的狀況下
低品質的 44.1 to 48 kHz SRC 加上轉碼,產生了一層貫通全頻的失真噪聲
所以 Live Streaming 跟 TFT 的狀況相反,重播的 Archive 音質變差
但要說嚴重也還好,峰值 -85 dB 上下,平均 -100 dB 左右
聆聽環境跟設備不錯影響才會明顯,不然這些東西並不突出
只是這個問題也能發現,YouTube 對音質這塊沒什在關心,有聲不會嗶嗶啵啵就及格了
不過如果是烤肉面的話,個人會建議直播的音檔最好抓 aac(140) 128 Kbps
而不是帳面碼率(混入失真)比較高的 opus(251) 160 Kbps
※
追實況的視聽者 追存檔&沒追到實況直播的視聽者
編碼 ↓ 轉檔 ↓
直播勢 Live ──→ aac(140) 128 Kbps ─→ opus(251) 160 Kbps(存檔在直播區)
※ aac(140) to opus(251) 轉爛
追首播的視聽者
轉檔 ↓
影片勢上傳檔案─→ aac(140) 128 Kbps 一般&沒追到實況首播的視聽者
│ 轉檔 ↓
└────────────→ opus(251) 160 Kbps(存檔在影片區)
※ 通常音質比首播好