首頁(yè) 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問(wèn)我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 21900|回復(fù): 2
上一主題 下一主題
[百科]

M3U8格式講解及實(shí)際應(yīng)用分析

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-2-12 21:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式 | 來(lái)自山東
轉(zhuǎn)載泰捷論壇

M3U8格式講解及實(shí)際應(yīng)用分析

M3U8有啥好處 ?

網(wǎng)上搜索了一下,大家眾說(shuō)紛紜,個(gè)人理解主要是可以做多碼率的適配,根據(jù)網(wǎng)絡(luò)帶寬,客戶端會(huì)選擇一個(gè)適合自己碼率的文件進(jìn)行播放,保證視頻流的流暢。


在IOS device和mac上可以用http的方式進(jìn)行分發(fā),其中playlist標(biāo)準(zhǔn)為由m3u擴(kuò)展而來(lái)的m3u8文件,媒體文件為MPEG2-TS或者AAC文件(audio only)。

m3u8文件有兩種應(yīng)用場(chǎng)景:

多碼率適配流,

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1280000

http://example.com/low.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2560000

http://example.com/mid.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=7680000

http://example.com/hi.m3u8

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=65000,CODECS="mp4a.40.5"

http://example.com/audio-only.m3u8

單碼率適配流
#EXTM3U

#EXT-X-TARGETDURATION:5220

#EXTINF:5220,

http://media.example.com/entire.ts

#EXT-X-ENDLIST




國(guó)際標(biāo)準(zhǔn)組織對(duì)此的定義 rfc doc:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
m3u8 文件是m3u文件的擴(kuò)展。在該rfc中定義了擴(kuò)展的關(guān)鍵字:
其中:

#EXT-X-TARGETDURATION
定義每個(gè)TS的最大的duration。
#EXT-X-MEDIA-SEQUENCE
定義當(dāng)前m3u8文件中第一個(gè)文件的序列號(hào),每個(gè)ts文件在m3u8文件中都有固定唯一的序列號(hào),該序列號(hào)用于在MBR時(shí)切換碼率進(jìn)行對(duì)齊。
#EXT-X-KEY

定義加密方式和key文件的url,用于取得16bytes的key文件解碼ts文件。

屬性:
METHOD
URL
#EXT-X-PROGRAM-DATE-TIME
第一個(gè)文件的絕對(duì)時(shí)間

#EXT-X-ALLOW-CACHE

是否允許cache。
#EXT-X-ENDLIST
表明m3u8文件的結(jié)束。live m3u8沒(méi)有該tag。
#EXT-X-STREAM-INF
屬性:
BANDWIDTH              指定碼率

PROGRAM-ID            唯一ID

CODECS                    指定流的編碼類型#EXT-X-DISCONTINUITY
當(dāng)遇到該tag的時(shí)候說(shuō)明以下屬性發(fā)生了變化:
file format
number and type of tracks
encoding parameters
encoding sequence
timestamp sequence

#EXT-X-VERSION             該屬性用不用都可以,可以沒(méi)有











M3U8分頂級(jí)M3U8和二級(jí)M3U8, 頂級(jí)M3U8主要是做多碼率適配的, 二級(jí)M3U8才是真正的切片文件,

客戶端默認(rèn)會(huì)首先選擇碼率最高的請(qǐng)求,如果發(fā)現(xiàn)碼率達(dá)不到,會(huì)請(qǐng)求郊低碼率的流




一個(gè)實(shí)際使用中的頂級(jí)M3U8文件如下 :


#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=358400
11.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=201273221265,BANDWIDTH=972800
22.m3u8




上面頂級(jí)M3U8文件中又定義了 11.m3u8 和 22.m3u8 兩個(gè)二級(jí)文件,客戶端會(huì)選擇其中一個(gè)獲取其內(nèi)容。

二級(jí)M3U8文件內(nèi)容如下:




#EXTM3U
#EXT-X-VERSION:1
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3,
1-4.ts
#EXTINF:8,
1-6.ts
#EXTINF:8,
1-8.ts
#EXTINF:8,
1-10.ts
#EXTINF:8,
1-12.ts
#EXTINF:8,
1-14.ts
#EXTINF:8,
1-16.ts
#EXTINF:9,
1-18.ts
#EXTINF:6,
1-20.ts
#EXTINF:8,
1-22.ts
#EXTINF:9,
1-24.ts
#EXTINF:3,
1-26.ts
#EXT-X-ENDLIST




客戶端拿到上面的二級(jí)M3U8文件后,會(huì)繼續(xù)請(qǐng)求里面的文件,這時(shí)就可進(jìn)行播放了。

上面講解的是點(diǎn)播的情況,直播的情況,M3U8文件里面會(huì)有屬性告訴是直播,客戶端會(huì)定時(shí)來(lái)請(qǐng)求新的M3U8文件。

上一篇:流媒體及流媒體服務(wù)器原理
下一篇:轉(zhuǎn)自泰捷論壇-抓源工具大合集
沙發(fā)
發(fā)表于 2014-3-1 17:36 | 只看該作者 | 來(lái)自四川
很給力,ZNDS有你更精彩!
板凳
發(fā)表于 2014-6-16 15:46 | 只看該作者 | 來(lái)自江蘇
感謝分享,ZNDS有你更精彩:)

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書(shū) | 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-11-10 17:08 , Processed in 0.073707 second(s), 16 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表