m3u8是指UTF-8編碼格式的M3U檔案;M3U檔案是記錄了一個索引純文字文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網路位址進行線上播放。
本教學操作環境:windows7系統、Dell G3電腦。
一、M3U8簡介
M3U8檔案是指UTF-8編碼格式的M3U檔案(M3U使用Latin-1字元集編碼) 。 M3U文件是一個記錄索引的純文字文件,打開它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。其流程如下:
m3u8播放流程.png
M3U8是一種常見的串流媒體格式,主要以檔案清單的形式存在,既支援直播又支持點播,尤其在Android、iOS等平台最常使用。
二、M3U8編碼格式
#m3u8基本上可以認為是.m3u格式文件,差別在於,m3u8檔案使用UTF-8字符編碼。
#EXTM3U m3u檔案頭,必須放在第一行
#EXT-X-MEDIA-SEQUENCE 第一行
EXT-X-MEDIA-SEQUENCE 最大的長度
#EXT-X-ALLOW-CACHE 是否允許cache
#EXT-X-ENDLIST m3u8檔案結束符號## cEXTITI 製造片 的訊息,如時長,頻寬等
#EXT-X-PLAYLIST-TYPE 提供關於PlayList的可變性的信息,對整個PlayList檔案有效,是可選項。格式如下:#EXT-X-PLAYLIST-TYPE:VOD(或EVENT)。 VOD表示伺服器不能改變PlayList 檔案;EVENT則表示伺服器不能改變或刪除PlayList檔案中的任何部分,但可以新增一行內容到該檔案的內容。
範例1:
M3U8檔案參考連結: https://dco4urblvsasc.cloudfront.net/811/81095_ywfZjAuP/game/1000kbps.m3u8 及內容:#EXTM3U #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-TARGETDURATION:10 #EXTINF:10, 1000kbps-00001.ts #EXTINF:10, 1000kbps-00002.ts ... #EXTINF:10, 1000kbps-00099.ts #EXTINF:10, 1000kbps-00100.ts #ZEN-TOTAL-DURATION:999.70000 #ZEN-AVERAGE-BANDWIDTH:1098134 #ZEN-MAXIMUM-BANDWIDTH:1700874 #EXT-X-ENDLIST這種形式的播放及下載連結需要拼接,如第一個TS片段的連結為:https://dco4urblvsasc.cloudfront.net/811/81095_ywfZjAuP/game/1000kbps-00001.ts,即索引檔案中的路徑1000kbps-00001.ts替換m3u8連結末端的1000kbps.m3u8(也即lastPathComponent)。
事例2:
使用云图TV点播直播节目时,发送请求: http://121.199.63.236:7613/m3u8/cckw1/szws.m3u8?from=bab&fun=yes&chk=y&chunk=xax&ppw=yuntutv&auth=yuntutvyuntutvyuntutv&auth=yuntutvyuntutvyuntutv&nwtime=1406515232&sign=033d5483609e6bc87987fc7d2f30a024
返回M3U8文件,文件内容如下: #EXTM3U #EXT-X-MEDIA-SEQUENCE:140651513 #EXT-X-TARGETDURATION:10 #EXTINF:8, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651513[140651513].ts #EXTINF:9, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514[140651514].ts #EXTINF:11, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651515[140651515].ts #EXTINF:10, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651516[140651516].ts #EXTINF:12, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651517[140651517].ts #EXTINF:8, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651518[140651518].ts #EXTINF:12, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651519[140651519].ts #EXTINF:8, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651520[140651520].ts #EXTINF:9, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651521[140651521].ts #EXTINF:13, http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651522[140651522].ts ...這種形式的播放與下載連結:直接呈現在索引檔中了。
三、M3U8的優點
1、可以做多碼率的適配。依照網路頻寬,用戶端會自動選擇一個適合自己碼率的檔案來播放,確保視訊串流的流暢,代表是蘋果的HLS(HTTP Live Streaming)。 HLS有一個特點:自適應碼率流播(adaptive streaming),客戶端可以根據網路狀況自動選擇不同碼率的視訊串流,條件允許的情況下使用高碼率,網路繁忙的時候使用低碼率,並且自動在二者間隨意切換。這對行動裝置網路狀況不穩定的情況下保障流暢播放非常有幫助。 2、降低來源伺服器的負載壓力。 M3U的特點是將串流媒體切割成若干 TS 片段,然後透過一個擴展的 m3u 清單檔案將這些 TS 片段集中起來供客戶端播放器接收。這樣做相比使用RTSP 協定的好處在於,一旦切分完成,之後的分發過程完全不需要額外使用任何專門軟體,普通的網路伺服器即可,大大降低了CDN 邊緣伺服器的配置要求,可以使用任何現成的CDN。分發使用的協定是最常見 HTTP,代理伺服器對這個協定的快取優化相當成熟,而很少代理伺服器對 RTSP 的進行快取優化。 3、對於非即時視頻,好處同樣存在:播放使用HTTP協定的單一MP4 格式的視訊檔案時,需要代理伺服器支援HTTP range request 以取得大檔案中的一部分,但不是所有的代理伺服器都對此有良好的支援。而 M3U 則只需要根據清單檔案中的時間軸找出對應的 TS 片段下載即可,不需要 range request,對代理伺服器的要求小很多。所有代理伺服器都支援小文件的高效快取。 4、為什麼要用TS 而不是MP4,這是因為兩個TS 片段可以無縫拼接,播放器能連續播放,而MP4 檔案由於編碼方式的原因,兩段MP4 不能無縫拼接,播放器連續播放兩個MP4 檔案會出現破音和畫面間斷,影響使用者體驗。 更多相關知識,請造訪常見問題欄位!
以上是m3u8是什麼格式文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!