HLS與RTMP在直播場景下的優劣分析以及架構分析

FeelTouch發表於2018-04-14

HLS

HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基於HTTP的流媒體網路傳輸協議。是蘋果公司QuickTime X和iPhone軟體系統的一部分。它的工作原理是把整個流分成一個個小的基於HTTP的檔案來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的資料速率。在開始一個流媒體會話時,客戶端會下載一個包含後設資料的extended M3U (m3u8)playlist檔案,用於尋找可用的媒體流。

HLS協議規定

l  視訊的封裝格式是TS。

l  視訊的編碼格式為H264,音訊編碼格式為MP3、AAC或者AC-3。

l  除了TS視訊檔案本身,還定義了用來控制播放的m3u8檔案(文字檔案)。

#圖片Stub


RTMP

RMP協議是Real Time Message Protocol(實時資訊傳輸協議)的縮寫,它是由Adobe公司提出的一種應用層的協議,用來解決多媒體資料傳輸流的多路複用(Multiplexing)和分包(packetizing)的問題。RTMP協議是應用層協議,是要靠底層可靠的傳輸層協議(通常是TCP)來保證資訊傳輸的可靠性的。在基於傳輸層協議的連結建立完成後,RTMP協議也要客戶端和伺服器通過“握手”來建立基於傳輸層連結之上的RTMP Connection連結,在Connection連結上會傳輸一些控制資訊,如SetChunkSize,SetACKWindowSize。

HLS協議的優勢(相比RTMP協議)

 這個協議的產生是為了解決RTMP協議存在的一些問題。 比如RTMP協議不使用標準的HTTP介面傳輸資料,所以在一些特殊的網路環境下可能被防火牆遮蔽掉。但是HLS由於使用的HTTP協議傳輸資料,不會遇到被防火牆遮蔽的情況(該不會有防火牆連80介面都不放過吧)。

 另外於負載,RTMP是一種有狀態協議,很難對視訊伺服器進行平滑擴充套件,因為需要為每一個播放視訊流的客戶端維護狀態。而HLS基於無狀態協議(HTTP),客戶端只是按照順序使用下載儲存在伺服器的普通TS檔案,做負責均衡如同普通的HTTP檔案伺服器的負載均衡一樣簡單。

另外HLS協議本身實現了位元速率自適應,不同頻寬的裝置可以自動切換到最適合自己位元速率的視訊播放。其實HLS最大的優勢就是蘋果。蘋果在自家的IOS裝置上只提供對HLS的原生支援,並且放棄了flash。Android也原生支援了HLS。這樣一來flv,rtmp這些Adobe的視訊方案要想在移動裝置上播放需要額外下點功夫。當然flash對移動裝置造成很大的效能壓力確實也是自身的問題。

 HLS協議的劣勢(相比RTMP協議)

HLS也有一些無法跨越的坑,比如採用HLS協議直播的視訊延遲時間無法下到10秒以下,而RTMP協議的延遲最低可以到3、4秒左右。所以說對直播延遲比較敏感的服務請慎用HLS。

800LI VMS 直播架構

800Li直播推拉流協議


800Li視訊編解碼協議


相關文章