1. 程式人生 > >hls視頻播放-hls認知

hls視頻播放-hls認知

文件 iphone videojs 允許 代理服務 hls 成熟 alt b-

1 背景

由於在項目中集成視頻播放功能,集成已有的ocx控件涉及到瀏覽器的兼容性,網頁體驗不好,後經過查找,引入hls相關技術進行視頻播放

2 HLS簡介

維基百科的定義:

HTTP Live Streaming(縮寫是HLS)是一個由蘋果公司提出的基於HTTP的流媒體網絡傳輸協議。是蘋果公司QuickTime X和iPhone軟件系統的一部分。
它的工作原理是把整個流分成一個個小的基於HTTP的文件來下載,每次只下載一些。當媒體流正在播放時,客戶端可以選擇從許多不同的備用源中以不同的速率下載同樣的資源,允許流媒體會話適應不同的數據速率。
在開始一個流媒體會話時,客戶端會下載一個包含元數據的extended M3U (m3u8) playlist文件,用於尋找可用的媒體流。 HLS只請求基本的HTTP報文,與實時傳輸協議(RTP)不同,HLS可以穿過任何允許HTTP數據通過的防火墻或者代理服務器。它也很容易使用內容分發網絡來傳輸媒體流。

幾個關鍵規定:

(1)視頻的封裝格式是TS。

(2)視頻的編碼格式為H264,音頻編碼格式為MP3、AAC或者AC-3。

(3)extended M3U (m3u8) playlist即 m3u8文件,視頻文件播放列表

需要註意的點:

采用HLS協議直播的視頻延遲時間無法下到10秒以下,而RTMP協議的延遲最低可以到3、4秒左右,因此對於直播延遲比較敏感的服務需要慎用。

3 HLS的工作流程

官方協議工作流程圖:

技術分享圖片

4 m3u8文件格式(索引文件)

索引文件包含所有視頻源數據的地址

文件格式釋義,參考鏈接:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23

5 hls的兩種模式

(1)直播:使用動態的播放列表文件,需要實時更新播放索引文件

(2)點播:使用靜態的播放列表文件,列表文件指向所有的播放文件

6 web端應用

WEB 上主流的視頻直播方案有 HLS 和 RTMP,移動 WEB 端目前以 HLS 為主(HLS存在延遲性問題,也可以借助 video.js 采用RTMP),PC端則以 RTMP 為主實時性較好。

HLS 在 PC 端僅支持safari瀏覽器,chrome瀏覽器使用HTML5 video標簽無法播放 m3u8 格式,但是已有比較成熟的解決方案可以采用,比如 video.js,videojs-contrib-hls

7 解決方案的參考

參考簡書上的幾種解決方案的整理:https://www.jianshu.com/p/4cbdfc4a9b90

hls視頻播放-hls認知