什么是HLS協(xié)議
HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基于HTTP的流媒體網(wǎng)絡(luò)傳輸協(xié)議。是蘋果公司QuickTime X和iPhone軟件系統(tǒng)的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應(yīng)不同的數(shù)據(jù)速率。在開始一個流媒體會話時,客戶端會下載一個包含元數(shù)據(jù)的extended M3U (m3u8)playlist文件,用于尋找可用的媒體流。
HLS協(xié)議規(guī)定
l 視頻的封裝格式是TS。
l 視頻的編碼格式為H264,音頻編碼格式為MP3、AAC或者AC-3。
l 除了TS視頻文件本身,還定義了用來控制播放的m3u8文件(文本文件)。
HLS協(xié)議的優(yōu)勢(相比RTMP協(xié)議)
這個協(xié)議的產(chǎn)生是為了解決RTMP協(xié)議存在的一些問題。 比如RTMP協(xié)議不使用標準的HTTP接口傳輸數(shù)據(jù),所以在一些特殊的網(wǎng)絡(luò)環(huán)境下可能被防火墻屏蔽掉。但是HLS由于使用的HTTP協(xié)議傳輸數(shù)據(jù),不會遇到被防火墻屏蔽的情況(該不會有防火墻連80接口都不放過吧)。
另外于負載,RTMP是一種有狀態(tài)協(xié)議,很難對視頻服務(wù)器進行平滑擴展,因為需要為每一個播放視頻流的客戶端維護狀態(tài)。而HLS基于無狀態(tài)協(xié)議(HTTP),客戶端只是按照順序使用下載存儲在服務(wù)器的普通TS文件,做負責均衡如同普通的HTTP文件服務(wù)器的負載均衡一樣簡單。
另外HLS協(xié)議本身實現(xiàn)了碼率自適應(yīng),不同帶寬的設(shè)備可以自動切換到最適合自己碼率的視頻播放。其實HLS最大的優(yōu)勢就是蘋果。蘋果在自家的IOS設(shè)備上只提供對HLS的原生支持,并且放棄了flash。Android也原生支持了HLS。這樣一來flv,rtmp這些Adobe的視頻方案要想在移動設(shè)備上播放需要額外下點功夫。當然flash對移動設(shè)備造成很大的性能壓力確實也是自身的問題。
HLS協(xié)議的劣勢
HLS也有一些無法跨越的坑,比如采用HLS協(xié)議直播的視頻延遲時間無法下到10秒以下,而RTMP協(xié)議的延遲最低可以到3、4秒左右。所以說對直播延遲比較敏感的服務(wù)請慎用HLS。
支持HLS協(xié)議的流媒體服務(wù)器系統(tǒng)(以800Li Media Server為例)
聯(lián)系客服