m3u8 筆記:
在IOS device和mac上可以用http的方式進行分發,其中playlist標準為由m3u擴充而來的m3u8檔案,媒體檔案為MPEG2-TS或者AAC檔案(audio only)。
m3u8檔案有兩種應用情境:
multi bitrate adaptive streaming
#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
sbr bitrate adaptive streaming
#EXTM3U
#EXT-X-TARGETDURATION:5220
#EXTINF:5220,
http://media.example.com/entire.ts
#EXT-X-ENDLIST
rfc doc:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
m3u8 檔案是m3u檔案的擴充。在該rfc中定義了擴充的關鍵字:
其中:
#EXT-X-TARGETDURATION
定義每個TS的最大的duration。
#EXT-X-MEDIA-SEQUENCE
定義當前m3u8檔案中第一個檔案的序號,每個ts檔案在m3u8檔案中都有固定唯一的序號,該序號用於在MBR時切換碼率進行對齊。
#EXT-X-KEY
定義加密方式和key檔案的url,用於取得16bytes的key檔案解碼ts檔案。
屬性:
METHOD
URL
#EXT-X-PROGRAM-DATE-TIME
第一個檔案的絕對時間
#EXT-X-ALLOW-CACHE
是否允許cache。
#EXT-X-ENDLIST
表明m3u8檔案的結束。live m3u8沒有該tag。
#EXT-X-STREAM-INF
屬性:
BANDWIDTH
PROGRAM-ID
CODECS
#EXT-X-DISCONTINUITY
當遇到該tag的時候說明以下屬性發生了變化:
file format
number and type of tracks
encoding parameters
encoding sequence
timestamp sequence
#EXT-X-VERSION