1. 程式人生 > >視訊中常用的HLS(m3u8)協議分析

視訊中常用的HLS(m3u8)協議分析

視訊中常用的HLS(m3u8)協議分析

HLS 全稱是 HTTP Live Streaming,是 Apple 提出的流媒體協議,蘋果官方的介紹是這樣的子的:

HTTP Live Streaming

Send live and on‐demand audio and video to iPhone, iPad, Mac, Apple TV, and PC with HTTP Live Streaming (HLS) technology from Apple. Using the same protocol that powers the web, HLS lets you deploy content using ordinary web servers and content delivery networks. HLS is designed for reliability and dynamically adapts to network conditions by optimizing playback for the available speed of wired and wireless connections.

使用來自蘋果的HTTP直播流媒體技術,可以向iPhone、iPad、Mac、Apple TV和PC傳送實時的音訊和視訊資訊流。使用與Web相同的協議,HLS允許您使用普通Web伺服器和內容傳遞網路來部署內容。HLS是為可靠性而設計的,並且通過優化有線和無線連線的可用速度的回放來動態地適應網路條件。

HLS(m3u8)協議

HLS 對言的檔案格式是 .m3u8 檔案及對應的 .ts 播放檔案,即伺服器端會有一份 .m3u8 檔案和其它很多的 .ts 檔案,說得簡單好理解一些是這樣,m3u8檔案是一個索引檔案,ts為實際的播放內容。

好了,上一個m3u8例項:

<video controls autoplay>  
    <source src="http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" type="application/vnd.apple.mpegurl" /> 
    <p class="warning">Your browser does not support HTML5 video.</p>  
</video>

內容:

#EXT-X-VERSION:3            PlayList 的版本,可帶可不帶。下面有說明
#EXTM3U                     m3u檔案頭
#EXT-X-TARGETDURATION:10    分片最大時長,單位為 s
#EXT-X-MEDIA-SEQUENCE:1     第一個TS分片的序列號,如果沒有,預設為 0
#EXT-X-ALLOW-CACHE          是否允許cache
#EXT-X-ENDLIST              m3u8檔案結束符
#EXTINF                     指定每個媒體段(ts)的持續時間(秒),僅對其後面的URI有效

視訊中常用的HLS(m3u8)協議分析。

HLS(m3u8)是現在適配方式最廣(除了flash, 需要額外的as庫支援),在PC上有vlc,Android/IOS原生播放器就支援播放HLS。