[时间:2018-06] [状态:Open]
[关键词:流媒体,HLS,m3u8,playlist,variant, alternate]
0 引言
本文主要是对apple官网上的echnical Note TN2288-Example Playlist Files for use with HTTP Live Streaming一文的整理,加上rfc8216 section 8的部分内容。
本文的目标在于整理不同类型的HLS m3u8格式,对其表征的多媒体数据做必要说明。希望读者读完本文能够基本知道目前HLS所支持的m3u8格式。至于对应字段的详细含义,建议参考rfc8216或其他资料。
言归正传,HLS通过一些列小文件来发送音视频等多媒体数据,通常该分片长度为10s。一个索引文件,也称为playlist(中译名为播放列表),通常提供对这一系列分片文件的描述信息,通常使用.m3u8
作为其后缀;对于mp3格式的playlist则使用.m3u
作为后缀。该索引文件将被客户端获取,客户端解析之后可得到对应的待请求序列的信息。
本文是对我的流媒体协议之H协议LS的扩展,如果你对HLS不了解,建议阅读之。
1 不同HLS playlist示例文件
本文将给出10种不同的playlist,包括内容如下:
- 点播(VOD,Video On Demand)playlist
- Event playlist
- 直播playlist(滑动窗口)
- byte-range playlist
- 包含密钥的playlist
- 内嵌广告的playlist
- master playlist
- 包含alternate media的playlist
- I-frame playlist
- 包含session的master playlist
其中加粗的是我在实际工作中可能遇到比较多的。其他的仅在标准文档中见到。
前三类playlist(VOD/Event/Live)我们可以将之称为basic playlist。master playlist是对basic playlist的描述信息。
2 点播playlist
HLS中点播playlist是静态的文件,生成之后一般不允许修改,server端可以预先生成切片文件。其格式如下:
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts
#EXT-X-ENDLIST
m3u8中支持绝对路径,也支持相对路径(推荐使用