m3u8 是蘋果公司推出的視頻播放標(biāo)準(zhǔn),是 m3u 的一種,只是編碼格式采用的是 UTF-8。m3u8 準(zhǔn)確來說是一種索引文件,使用 m3u8 文件實(shí)際上是通過它來解析對(duì)應(yīng)的放在服務(wù)器上的視頻網(wǎng)絡(luò)地址,從而實(shí)現(xiàn)在線播放。使用 m3u8 格式文件主要因?yàn)榭梢詫?shí)現(xiàn)多碼率視頻的適配,視頻網(wǎng)站可以根據(jù)用戶的網(wǎng)絡(luò)帶寬情況,自動(dòng)為客戶端匹配一個(gè)合適的碼率文件進(jìn)行播放,從而保證視頻的流暢度。
M3U8 編碼格式
m3u8 基本上可以認(rèn)為就是.m3u 格式文件,區(qū)別在于,m3u8 文件使用 UTF-8 字符編碼。
#EXTM3U m3u 文件頭,必須放在第一行
#EXT-X-MEDIA-SEQUENCE 第一個(gè) TS 分片的序列號(hào)
#EXT-X-TARGETDURATION 每個(gè)分片 TS 的最大的時(shí)長(zhǎng)
#EXT-X-ALLOW-CACHE 是否允許 cache
#EXT-X-ENDLIST m3u8 文件結(jié)束符
#EXTINF extra info,分片 TS 的信息,如時(shí)長(zhǎng),帶寬等
#EXT-X-PLAYLIST-TYPE 提供關(guān)于 PlayList 的可變性的信息,對(duì)整個(gè) PlayList 文件有效,是可選項(xiàng)。格式如下:#EXT-X-PLAYLIST-TYPE:VOD(或者 EVENT)。VOD 表示服務(wù)器不能改變 PlayList 文件;EVENT 則表示服務(wù)器不能改變或是刪除 PlayList 文件中的任何部分,但是可以向該文件中增加新的一行內(nèi)容。
M3U8 的優(yōu)點(diǎn)
1、可以做多碼率的適配。根據(jù)網(wǎng)絡(luò)帶寬,客戶端會(huì)自動(dòng)選擇一個(gè)適合自己碼率的文件進(jìn)行播放,保證視頻流的流暢,代表是蘋果的 HLS(HTTP Live Streaming)。HLS 有一個(gè)特點(diǎn):自適應(yīng)碼率流播(adaptive streaming),客戶端可以根據(jù)網(wǎng)絡(luò)狀況自動(dòng)選擇不同碼率的視頻流,條件允許的情況下使用高碼率,網(wǎng)絡(luò)繁忙的時(shí)候使用低碼率,并且自動(dòng)在二者間隨意切換。這對(duì)移動(dòng)設(shè)備網(wǎng)絡(luò)狀況不穩(wěn)定的情況下保障流暢播放非常有幫助。
2、降低源服務(wù)器的負(fù)載壓力。M3U 的特點(diǎn)是將流媒體切分為若干 TS 片段,然后通過一個(gè)擴(kuò)展的 m3u 列表文件將這些 TS 片段集中起來供客戶端播放器接收。這樣做相比使用 RTSP 協(xié)議的好處在于,一旦切分完成,之后的分發(fā)過程完全不需要額外使用任何專門軟件,普通的網(wǎng)絡(luò)服務(wù)器即可,大大降低了 CDN 邊緣服務(wù)器的配置要求,可以使用任何現(xiàn)成的 CDN。分發(fā)使用的協(xié)議是最常見 HTTP,代理服務(wù)器對(duì)這個(gè)協(xié)議的緩存優(yōu)化相當(dāng)成熟,而很少有代理服務(wù)器對(duì) RTSP 的進(jìn)行緩存優(yōu)化。
3、對(duì)于非實(shí)時(shí)視頻,好處同樣存在:播放使用 HTTP 協(xié)議的單個(gè) MP4 格式的視頻文件時(shí),需要代理服務(wù)器支持 HTTP range request 以獲取大文件中的一部分,但不是所有的代理服務(wù)器都對(duì)此有良好的支持。而 M3U 則只需要根據(jù)列表文件中的時(shí)間軸找出對(duì)應(yīng)的 TS 片段下載即可,不需要 range request,對(duì)代理服務(wù)器的要求小很多。所有代理服務(wù)器都支持小文件的高效緩存。
4、為什么要用 TS 而不是 MP4,這是因?yàn)閮蓚(gè) TS 片段可以無縫拼接,播放器能連續(xù)播放,而 MP4 文件由于編碼方式的原因,兩段 MP4 不能無縫拼接,播放器連續(xù)播放兩個(gè) MP4 文件會(huì)出現(xiàn)破音和畫面間斷,影響用戶體驗(yàn)。 |