M3U8檔案簡介

來源:互聯網
上載者:User

標籤:

M3U8檔案簡介 (2014-07-28 12:02:14) 轉載▼
標籤: 音頻 視頻 解碼 分類: 音視頻相關
1.   M3U8檔案概念

M3U8檔案是指UTF-8編碼格式的M3U檔案。M3U檔案是記錄了一個索引純文字檔案,開啟它時播放軟體並不是播放它,而是根據它的索引找到對應的音視頻檔案的網路地址進行線上播放。

2.   M3U8檔案舉例

例如使用雲圖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

然後根據索引的中連結請求下載音視頻並進行播放

3.   M3U檔案標籤及屬性說明

M3U檔案中可以包含多個tag,每個tag的功能和屬性如下:

#EXTM3U

每個M3U檔案第一行必須是這個tag,請標示作用

#EXT-X-MEDIA-SEQUENCE:140651513 

每一個media URI 在 PlayList中只有唯一的序號,相鄰之間序號+1, 一個media URI並不是必須要包含的,如果沒有,預設為0

#EXTINF:,

 duration 指定每個媒體段(ts)的期間(秒),僅對其後面的URI有效,title是下載資源的url

#EXT-X-TARGETDURATION

指定最大的媒體段時間長(秒)。所以#EXTINF中指定的時間長度必須小於或是等於這個最大值。這個tag在整個PlayList檔案中只能出現一 次(在嵌套的情況下,一般有真正ts url的m3u8才會出現該tag)

#EXT-X-KEY

表示怎麼對media segments進行解碼。其作用範圍是下次該tag出現前的所有media URI,屬性為NONE 或者 AES-128。NONE表示 URI以及IV(Initialization Vector)屬性必須不存在, AES-128(Advanced EncryptionStandard)表示URI必須存在,IV可以不存在。

  對於AES-128的情況,keytag和URI屬性共同表示了一個key檔案,通過URI可以獲得這個key,如果沒有IV(Initialization Vector),則使用序號作為IV進行編解碼,將序號的高位賦到16個位元組的buffer中,左邊補0;如果有IV,則將改值當成16個位元組的16進位數。

#EXT-X-PROGRAM-DATE-TIME

將一個絕對時間或是日期和一個媒體段中的第一個sample相關聯,只對下一個meida URI有效,格式如#EXT-X-PROGRAM-DATE-TIME:

For example: #EXT-X-PROGRAM-DATE-TIME:2010-02-19T14:54:23.031+08:00

#EXT-X-ALLOW-CACHE

是否允許做cache,這個可以在PlayList檔案中任意地方出現,並且最多出現一次,作用效果是所有的媒體段。格式如下:#EXT-X-ALLOW-CACHE:

#EXT-X-PLAYLIST-TYPE

提供關於PlayList的可變性的資訊, 這個對整個PlayList檔案有效,是可選的,格式如下:#EXT-X-PLAYLIST-TYPE::如果是VOD,則伺服器不能改變PlayList 檔案;如果是EVENT,則伺服器不能改變或是刪除PlayList檔案中的任何部分,但是可以向該檔案中增加新的一行內容。

#EXT-X-ENDLIST

表示PlayList的末尾了,它可以在PlayList中任意位置出現,但是只能出現一個,格式如下:#EXT-X-ENDLIST

#EXT-X-MEDIA

被用來在PlayList中表示相同內容的不用語種/譯文的版本,比如可以通過使用3個這種tag表示3中不用語音的音頻,或者用2個這個tag表示不同角度的video在PlayLists中。這個標籤是獨立存在的,屬性包含:

  URI:如果沒有,則表示這個tag描述的可選擇版本在主PlayList的EXT-X-STREAM-INF中存在;

  TYPE:AUDIO and VIDEO;

  GROUP-ID:具有相同ID的MEDIAtag,組成一組樣式;

  LANGUAGE:確定使用的主要語言

  NAME:人類可讀的語言的翻譯

  DEFAULT:YES或是NO,預設是No,如果是YES,則用戶端會以這種選項來播放,除非使用者自己進行選擇。

  AUTOSELECT:YES或是NO,預設是No,如果是YES,則用戶端會根據當前播放環境來進行選擇(使用者沒有根據自己偏好進行選擇的前提下)。

#EXT-X-STREAM-INF

指定一個包含多媒體資訊的 media URI 作為PlayList,一般做M3U8的嵌套使用,它只對緊跟後面的URI有效,格式如下:#EXT-X-STREAM-INF:有以下屬性:

BANDWIDTH:頻寬,必須有。

PROGRAM-ID:該值是一個十進位整數,惟一地標識一個在PlayList檔案範圍內的特定的描述。一個PlayList 檔案中可能包含多個有相同ID的此tag。

CODECS:不是必須的。

RESOLUTION:解析度。

AUDIO:這個值必須和AUDIO類別的“EXT-X-MEDIA”標籤中“GROUP-ID”屬性值相匹配。

VIDEO:同上

參考文檔:

http://blog.csdn.net/jwzhangjie/article/details/9744027

http://www.xuebuyuan.com/1726264.html

M3U8檔案簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.