HLS科普1 HLS和M3U8簡介

2021-07-09 11:29:24 字數 2433 閱讀 4921

1.   m3u8檔案概念2.   m3u8檔案舉例

例如使用雲圖tv點播直播節目時,傳送請求:

返回m3u8檔案,檔案內容如下

#extm3u

#ext-x-media-sequence:140651513

#ext-x-targetduration:10

#extinf:8,

#extinf:9,

#extinf:11,

#extinf:10,

#extinf:12,

#extinf:8,

#extinf:12,

#extinf:8,

#extinf:9,

#extinf:13,

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

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

#extm3u

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

#ext-x-media-sequence:140651513

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

#extinf:

指定最大的**段時間長(秒)。所以#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

指定乙個包含多**資訊的 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:同上

hls歷史

hls草案的第乙個版本制定在2023年

最新的版18:   2023年5月失效 會更新新的版本

參考文章:m3u8檔案簡介

流**開發之--hls--m3u8解析(1) 

流**開發之--hls--m3u8解析(2): hls草案  

網路直播電視之m3u8解析篇(上)

網路直播電視之m3u8解析篇 (下)

RTMP和HLS的比較

網際網路上的兩種主要的分發方式 hls和rtmp,什麼時候用誰,完全決定於應用場景。還有其他的分發方式,這些分發方式不屬於網際網路常見和通用的方式,不予以比較 p2p 譬如rtmfp或者各家自己的協議。這類應用的特點是節省頻寬。目前pc flash上的rtmfp比較成熟,android上的p2p屬於...

HLS 直播協議m3u8詳解

ios上苛刻的穩定性要求 ios上最穩定的當然是hls,穩定性不差於rtmp在pc flash上的表現。友好的cdn分發方式 目前cdn對於rtmp也是基本協議,但是hls分發的基礎是http,所以cdn的接入和分發會比rtmp更加完善。能在各種cdn之間切換,rtmp也能,只是可能需要對接測試。總...

nginx 和 ffmpeg搭建HLS環境

環境 ubuntu 14 需要安裝 nginx和ffmpeg 直接安裝apt不行,需要新增源 add apt repository ppa kirillshkrogalev ffmpeg next apt get update apt get install ffmpeg 因為目前沒涉及開發,未嘗試...