·您当前的位置:首页 > 技术教程 > Html5技术 >

[HLS]切片文件M3U8格式的初步分析

时间:2016-08-04 15:01酷播
m3u8文件时m3u文件的一种,只不过它的编码方式是是UTF-8格式,M3U用Latin-1字符集编码

1. m3u8文件时m3u文件的一种,只不过它的编码方式是是UTF-8格式,M3U用Latin-1字符集编码。

2. m3u8文件里面是不会存放音视频文件的。它里面存放的是地址一个地址,最终是通过这个地址来实现在线点播的。
3. m3u8分顶级m3u8和二级m3u8, 顶级m3u8主要是做多码率适配的, 二级m3u8才是真正的切片文件,客户端默认会
首先选择码率最高的请求,如果发现码率达不到,会请求郊低码率的流
3. 再来看看m3u8文件的格式解析
英文参考地址在这里:http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
#EXTM3U               标头,此句必须在文件的第一行
#EXT-X-STREAM-INF 属性
BANDWIDTH               指定码率
PROGRAM-ID             唯一ID
CODECS                 指定流的编码类型
#EXT-X-TARGETDURATION 定义每个TS的最大的持续时间。
#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        唯一ID
CODECS            指定流的编码类型
#EXT-X-DISCONTINUITY 当遇到该tag的时候说明以下属性发生了变化
#EXT-X-VERSION         该属性用不用都可以,可以没有
4. 接下来看一个实际中应用的例子
在顶级m3u8文件中的内容:

  1. #EXTM3U
  2. #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000
  3. exam20140401.m3u8
  4. exam20140402.m3u8
复制代码

上面顶级M3U8文件中又定义了 exam20140401.m3u8和exam20140402.m3u8两个二级文件,客户端会选择其中一个获取其内容。
二级M3U8文件内容如下:

  1. #EXTM3U
  2. #EXT-X-TARGETDURATION:11
  3. #EXT-X-MEDIA-SEQUENCE:1
  4. #EXTINF:11,
  5. exam_2014032900024_400&startoffset=0&endoffset=10838764/1.ts
  6. #EXTINF:10,
  7. exam_2014032900024_400&startoffset=10838764&endoffset=20659884/2.ts
  8. #EXTINF:10,
  9. exam_2014032900024_400&startoffset=20659884&endoffset=31139944/3.ts
  10. #EXTINF:11,
  11. exam_2014032900024_400&startoffset=31139944&endoffset=41262804/4.ts
  12. #EXTINF:9,
  13. exam_2014032900024_400&startoffset=41262804&endoffset=0/5.ts
  14. #EXT-X-ENDLIST

客户端拿到上面的二级M3U8文件后,会继续请求里面的文件,这时就可进行播放了。
上面讲解的是点播的情况,直播的情况,M3U8文件里面会有属性告诉是直播,客户端会定时来请求新的M3U8文件。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器