1. 程式人生 > 其它 >流媒體之HLS與DASH

流媒體之HLS與DASH

一、HLS

  HLS(HTTP Live Streaming)協議是由蘋果公司實現的基於HTTP的流媒體通訊協議,併成為Quick TIme X和IPhone軟體系統的一部分。蘋果的IPad也有支援HLS的能力。

  HLS傳出的視訊檔案為基於MPEG2檔案的切片,每個媒體切片在伺服器上單獨存放。在一個流媒體檔案分片過程中,視訊處理程式讀取連續的輸入流,將其切割為等長的切片,預設長度為10秒。該程式還會生成一個m3u8格式列表檔案,其中包含了切片列表和每個切片的具體資訊。m3u8是m3u列表格式的擴充套件,m3u8檔案具有兩層分級架構,在檔案起始處用#EXTM3U標籤以示區別。在一級列表中,以#EXT-X-STREAM-INF標籤起始提供各位元率的視訊列表地址,該地址可以連結到另一個二級m3u8檔案上,二級m3u8列表提供了所有同一位元率的視訊切片的時長和URL地址。

  HLS協議的流媒體傳輸過程是首先伺服器在資源準備階段將不同位元率的食品切片並分別儲存,同時生成兩級或更多級的M3u8檔案。傳輸開始時,客戶端首先從伺服器上請求並下載m3u8檔案,通過解析該檔案得到視訊切片資訊,選擇適合當前狀況的切片,提取出該切片的URL地址,直接通過該地址向伺服器發起請求。因此,伺服器端不需要任何額外的處理,任意Web伺服器都可以配置成支援HLS協議的伺服器。

二、DASH

  DASH,又叫MPEG DASH,DASH:Dynamic Adaptive Streaming over HTTP ,是一種在網際網路上傳送動態位元速率的Video Streaming技術,類似於蘋果的HLS,DASH會通過media presentation description (MPD)將視訊內容切片成一個很短的檔案片段,每個切片都有多個不同的位元速率,DASH Client可以根據網路的情況選擇一個位元速率進行播放,支援在不同位元速率之間無縫切換。YouTube採用DASH。其網頁端及移動端APP都使用了DASH。DASH的其他採用者包括:Netflix, Hulu。

  除了HLS,其他的動態自適應流媒體技術還有微軟的IIS Smooth Streaming,Adobe公司的Dynamic Streaming等。這些共存的協議採用的技術80%是相同的,但是100%是不相相容的。為了對業界存在的多種自適應流技術進行規範,MEPG推出MEPG-DASH標準。旨在為動態自適應流媒體技術創造一種同一的協議標準。DASH也得到了許多公司的支援,Apple,Adobe,Microsoft,Netflix,Qualcomm表示只要DASH完成,就會支援這個標準。

因此HLS和DASH的區別主要如下圖:

DASH基於MEPG-DASH流媒體協議的系統架構如下圖:

三、流媒體技術對比

  以B站為例,15年的B站使用整段的FLV和MP4,這種方案的好處是簡單且相容性高,抖音與今日頭條就是用該方案。但缺點也很明顯,隨著視訊時長的增長,整段的MP4的頭部過於複雜,體積過於龐大,導致拉取與載入極為緩慢。

  16年的B站為了規避這個問題,使用了分段的FLV來提升載入速度,這種方案的好處是視訊頭部小,載入速度高。愛奇藝和優酷也使用類似方案。這種方案簡單且相容性高,而且與直播流統一了格式,所以一直沿用至今,中間由於flv.js的出現 ,把這種方案帶向了全平臺。

  但隨著使用者的增加,使用者的網路種類和情況也變得更加複雜,如果我們需要在各種場景下都需要給使用者較好的體驗,需要選擇一種能在不同網路下都能流暢播放的方案。於是需要引入Dynamic Adaptive Streaming/ Bitrate 技術,以進一步提升使用者體驗。同時需要對多音軌和多視訊軌。

  在評估了一些行業內使用的方案後,B站選中了DASH,DASH也可以更靈活的實現使用者與產品的新增需求。

四、DASH的優勢

1,觀看視訊更為流暢,如下圖所示,我們會在網速不佳時無縫切換至較低清晰度視訊,在網速充足時無縫切換至高清晰度視訊,切換過程對於使用者無感。

2,可以很容易的支援音訊模式,滿足聽相聲/音樂的你。

3,在退到後臺後,可以自動切換至只拉取音訊,更節省你的流量,播放更加流暢。

4,可以很容易的支援視訊新增多音軌,多視訊軌,多字幕軌的任意切換 ,原聲,中配,多版本字幕任君選擇。