What is M3U8

来源:互联网 发布:dota2新人选手知乎 编辑:程序博客网 时间:2024/04/30 11:20

M3U8是一种可扩展的播放列表文件格式,它是一个包含UTF-8编码文字的m3u播放列表。这种格式被用来作为HTTP Live Stream索引文件的格式。索引文件里面包含真正的视频连接:

#EXTM3U#EXT-X-TARGETDURATION:5220#EXTINF:5220,http://media.example.com/1.ts#EXT-X-ENDLIST

也可以嵌套使用于多码流的适配:

    #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
  • 关键字含义
    EXT-X-TARGETDURATION:定义每个TS的最大的duration;
    EXT-X-MEDIA-SEQUENCE:定义当前m3u8文件中第一个文件的序列号,每个ts文件在m3u8文件中都有固定唯一的序列号;
    EXT-X-KEY:定义加密方式和key文件的url,用于取得16bytes的key文件解码ts文件;
    EXT-X-PROGRAM-DATE-TIME:第一个文件的绝对时间;
    EXT-X-ALLOW-CACHE:是否允许cache;
    EXT-X-ENDLIST:表明m3u8文件的结束,直播 m3u8没有该tag;
    EXT-X-STREAM-INF:属性值(BANDWIDTH、PROGRAM-ID、CODECS )分别表示(指定码率、唯一ID、指定流的编码类型);

多级M3U8栗子呈上

一级的M3U8:

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

在一级m3u8中定了test1.m3u8和test2.m3u8两个二级文件,假设播放器选了test1.m3u8,获取其内容如下:

#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#EXT-X-ENDLIST

播放器拿到上述内容后,进一步请求里面的ts链接,就可以开始播放了。

0 0