m3u8字段意義解析


m3u8字段意義解析

HLS,Http Live Streaming是由Apple公司定義的用於實時流傳輸的協議,HLS基於HTTP協議實現,傳輸內容包括兩部分,一是M3U8描述文件,二是TS媒體文件。

M3U8文件
用文本方式對媒體文件進行描述,由一系列標簽組成。舉例如下:

 

m3u8的詳情可以參考網址:

http://blog.csdn.net/test_1207/article/details/8160863

m3u8其他字段的意義:

#EXTM3U

每個M3U文件第一行必須是這個tag。

#EXTINF:<duration>,<title>

duration表示持續的時間(秒)必須是整數,如果版本在3以上可以是浮點數。

#EXTINF

指定每個媒體段(ts)的持續時間,這個僅對其后面的URI有效,每兩個媒體段URI間被這個tag分隔開。

#EXT-X-BYTERANGE

表示媒體段是一個媒體URI資源中的一段,只對其后的media URI有效,格式如下:#EXT-X-BYTERANGE:<n>[@o]

其中n表示這個區間的大小,o表在URI中的offset;”The EXT-X-BYTERANGE tag appeared in version 4 of the protocol“。

#EXT-X-TARGETDURATION

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

#EXT-X-TARGETDURATION:<s>:s表示最大的秒數。

#EXT-X-MEDIA-SEQUENCE

每一個media URI 在 PlayList中只有唯一的序號,相鄰之間序號+1。

#EXT-X-MEDIA-SEQUENCE:<number>

一個media URI並不是必須要包含的,如果沒有,默認為0。

#EXT-X-KEY

表示怎么對media segments進行解碼。其作用范圍是下次該tag出現前的所有media URI,格式如下:

#EXT-X-KEY:<attribute-list>:

NONE 或者 AES-128。如果是NONE,則URI以及IV屬性必須不存在,如果是AES-128(Advanced Encryption

Standard),則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:<YYYY-MM-DDThh:mm:ssZ>

例如:

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

#EXT-X-ALLOW-CACHE:

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

#EXT-X-ALLOW-CACHE:<YES|NO>

#EXT-X-PLAYLIST-TYPE

提供關於PlayList的可變性的信息, 這個對整個PlayList文件有效,是可選的,格式如下:

#EXT-X-PLAYLIST-TYPE:<EVENT|VOD> :如果是VOD,則服務器不能改變PlayList 文件;如果是EVENT,則

服務器不能改變或是刪除PlayList文件中的任何部分,但是可以向該文件中增加新的一行內容。

#EXT-X-ENDLIST

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

#EXT-X-ENDLIST

#EXT-X-MEDIA

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

#EXT-X-MEDIA:<attribute-list>:該屬性列表中包含:URI、TYPE、GROUP-ID、LANGUAGE、NAME、DEFAULT、AUTOSELECT。

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

TYPE:AUDIO and VIDEO;

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

LANGUAGE:identifies the primary language used in the rendition。

NAME:The value is a quoted-string containing a human-readable description of the rendition. If the LANGUAGE attribute is present then this description SHOULD be in that language。

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

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

The EXT-X-MEDIA tag appeared in version 4 of the protocol。

o All EXT-X-MEDIA tags in the same group MUST have the same TYPE

attribute.

o All EXT-X-MEDIA tags in the same group MUST have different NAME

attributes.

o A group MUST NOT have more than one member with a DEFAULT

attribute of YES.

o All members of a group whose AUTOSELECT attribute has a value of

YES MUST have LANGUAGE [RFC5646] attributes with unique values.

o All members of a group with TYPE=AUDIO MUST use the same audio

sample format.

o All members of a group with TYPE=VIDEO MUST use the same video

sample format。

#EXT-X-STREAM-INF

指定一個包含多媒體信息的 media URI 作為PlayList,一般做M3U8的嵌套使用,它只對緊跟后面的URI有

效,格式如下:

#EXT-X-STREAM-INF:<attribute-list>

<URI>

有以下屬性:

BANDWIDTH:帶寬,必須有。

PROGRAM-ID:該值是一個十進制整數,惟一地標識一個在PlayList文件范圍內的特定的描述。一個PlayList 文件中可

能包含多個有相同ID的此tag。

CODECS:不是必須的。

RESOLUTION:分辨率。

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

VIDEO:同上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM