HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基于HTTP的流媒體網絡傳輸協議。是蘋果公司QuickTime X和iPhone軟件系統的一部分。它的工作原理是把整個流分成一個個小的基于HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。在開始一個流媒體會話時,客戶端會下載一個包含元數據的extended M3U (m3u8)playlist文件,用于尋找可用的媒體流。
HLS只請求基本的HTTP報文,與實時傳輸協議(RTP)不同,HLS可以穿過任何允許HTTP數據通過的防火墻或者代理服務器。它也很容易使用內容分發網絡CDN進行分發來傳輸媒體流。
蘋果公司把HLS協議作為一個互聯網草案(逐步提交),在第一階段中已作為一個非正式的標準提交到IETF。但是,即使蘋果偶爾地提交一些小的更新,IETF卻沒有關于制定此標準的有關進一步的動作。
HLS協議規定:
視頻的封裝格式是TS。
視頻的編碼格式為H264,音頻編碼格式為MP3、AAC或者AC-3。
除了TS視頻文件本身,還定義了用來控制播放的m3u8文件(文本文件)。
鏈接:http://www.lxweimin.com/p/426425cad08a
Apple的動態碼率自適應技術。主要用于PC和Apple終端的音視頻服務。包括一個m3u(8)的索引文件,TS媒體分片文件和key加密串文件。可實現流媒體的直播和點播,主要應用在iOS系統,為iOS設備(如iPhone、iPad)提供音視頻直播和點播方案。HLS點播,基本上就是常見的分段HTTP點播,不同在于,它的分段非常小。
1.HLS 直播原理:通過相關設備采集攝像頭的視頻和麥克風的音頻,并實時進行 H264視頻編碼和 AAC 音頻音頻編碼,并按照 HLS協議規范,轉換為標準的 TS文件以及m3u8(是一個地址,里面記錄了服務器多對應的文件)索引文件.
2. HLS 點播:就是對 HTTP 進行分段播放,不同的就是在于對 HTTP 進行的分段非常小,因此可以說, HLS 點播的重點就是對 HTTP 進行分段.(現在的分段技術比較常見不在贅述)
3 HLS 直播原理:和其他的常見的直播協議(如: RTMP,RTSP,MMS)不同, 遵守HLS 協議的直播在客戶端接收到的并不是完整的數據流. 即HLS 協議的服務器將最新獲取到的片段進行分割為小片段,客戶端獲取服務器剛編好的最新的片段進行播放.這樣服務器端不斷的獲取新的數據進行分割成新的片段,客戶端不斷的從服務器端獲取最近的片段進行播放.由此可以說 HLS 是以點播的形式實現的直播.
HLS協議在服務器端將直播數據流存儲為連續的、很短時長的媒體文件(MPEG-TS格式),而客戶端則不斷的下載并播放這些小文件,因為服務器端總是會將最新的直播數據生成新的小文件,這樣客戶端只要不停的按順序播放從服務器獲取到的文件,就實現了直播。由此可見,基本上可以認為,HLS是以點播的技術方式來實現直播。直播的 m3u8 文件會不斷更新, 而點播的 m3u8 文件是不會變的, 只需要客戶端在開始時請求一次即可.
常用的流媒體協議主要有 HTTP 漸進下載和基于 RTSP/RTP 的實時流媒體協議,這二種基本是完全不同的東西,目前比較方便又好用的是用 HTTP 漸進下載方法。在這個中 apple 公司的 HTTP Live Streaming 是這個方面的代表。它最初是蘋果公司針對iPhone、iPod、iTouch和iPad等移動設備而開發的流.現在見到在桌面也有很多應用了,HTML5 是直接支持這個。
但是HLS協議的小切片方式會生成大量的文件,存儲或處理這些文件會造成大量資源浪費。如果要實現數天的時移,索引量將會是個巨額數字,并明顯影響請求速度。因此,HLS協議對存儲I/O要求相當苛刻。
新型點播服務器系統,獨創了內存緩存數據實時切片技術,顛覆了這種傳統實現方法,從根本上解決了大量切片的碎片問題,使得單臺服務器的切片與打包能力不再是瓶頸。其基本原理如下:
不將TS切片文件存到磁盤,而是存在內存當中,這種技術使得服務器的磁盤上面不再會有“數以噸計”的文件碎片,極大減少了磁盤的I/O次數,延長了服務器磁盤的使用壽命,極大提高了服務器運行的穩定性。同時,由于使用這種技術,使得終端請求數據時直接從服務器的內存中獲取,極大提高了對終端數據請求的反應速度,優化了視頻觀看體驗。
總結:
優點:
客戶端支持簡單, 只需要支持 HTTP 請求, HTTP 協議無狀態, 只需要按順序下載媒體片段。
使用 HTTP 協議網絡兼容性好, HTTP 數據包也可以方便地通過防火墻或者代理服務器, CDN 支持良好.
Apple 的全系列產品支持, 由于 HLS 是蘋果提出的, 所以在 Apple 的全系列產品包括 iphone, ipad, safari 都不需要安裝任何插件就可以原生支持播放 HLS, 現在, Android 也加入了對 HLS 的支持.
缺點:
相比 RTMP 這類長連接協議, 延時較高, 難以用到互動直播場景.
對于點播服務來說, 由于 TS 切片通常較小, 海量碎片在文件分發, 一致性緩存, 存儲等方面都有較大挑戰。由于客戶端每次請求 TS 或 M3U8 有可能都是一個新的連接請求, 所以, 我們無法有效的標識客戶端, 一旦出現問題, 基本無法有效的定位問題
改進:通過一個唯一的 id 來標識一條流, 這樣在排查問題時就可以根據這個 id 來定位播放過程中的問題.