低延遲戰場 : 最新影音串流技術盤點
最近許多影音串流應用,例如遊戲直播、博弈直播等,都要求較高的互動性,因此產生了低延遲串流的需求。以下整理了目前在低延遲表現效能上,幾個應用的主要串流技術。
服務端(媒體伺服器)–觀眾端
HLS/DASH 分段延遲 : 目前主流標準,使用現有HTTP基礎建設(CDN)支持大量觀眾
目前最普遍的串流技術是HLS/DASH,主要是將串流分段成多個小檔,讓影片可以透過現有的HTTP基礎建設(CDN)傳遞給大量觀眾,但也因此產生了分段的延遲現象。為了降低分段延遲,可以直接把分段的長度降低,但卻會犧牲影片的壓縮效率,換句話說,也就是相同畫質的影片,需要比較高的流量。
LHLS/CMAF 超低延遲: 分塊編碼(Chunked transfer encoding),主動推送分段訊息
新的低延遲串流LHLS/Low latency CMAF,是將每一分段切成更小的切片,原本是要等一整個分段完成後,撥放器才下載來撥放,現在改成每一小切片(例如 0.2秒的影片)就推送給撥放器,因而降低分段的延遲。不同於HLS/DASH是定期拉分段下來,而LHLS/Low latency CMAF是以主動推送的方式,每當產生一個切片,就馬上推送給撥放器。為了支援推送,傳輸方式改成透過 HTTP Chunked transfer encoding。
WebRTC 傳輸: 可以做到一秒內延遲,但容易被防火牆阻擋、技術難度較高
除了HTTP協定的串流技術,另一個選擇是WebRTC。雖然WebRTC一般是用於兩人或多人的雙向視訊,但也可用在單向一對多的直播場景。WebRTC是透過UDP連續傳輸,並沒有分段衍生的延遲,就裝置的支援度來講,各大瀏覽器都支援WebRTC,iOS也在iOS 11開始支援。 目前大規模使用WebRTC於直播串流的有Mixer,主要應用於遊戲直播。
雖然WebRTC可以提供非常低的延遲(<1 秒), 但在其他方面有些缺點。在網路的穿透性上,因為WebRTC是透過UDP傳送,較容易被NAT或防火牆擋住,穿透性會比走HTTP的HLS/DASH來的差;在系統擴展性上,由於目前支援WebRTC的CDN不多,沒法透過CDN支援大量觀眾, 相對於簡單的HTTP協定,WebRTC是一個複雜的協定,有較高的技術挑戰。
串流技術比較表 (串流服務端到觀眾)
訊號源 (影音採集)–服務端
RTMP 目前最普遍,FTL/WebRTC 支援 Adaptive Bitrate
前面提到的都是服務端到觀眾這一段的串流,而訊號源到服務端這一段也許還有降低延遲的空間。現行最普遍的串流協定是RTMP,其他的替代方案有由Mixer開發的FTL和WebRTC,這兩者可以做到更低的延遲效果,並且都支援 Adaptive Bitrate,但訊號源普遍不支援。
串流技術比較表 (訊號源到串流服務端)
參考資料 :