主播放列表提供了多种码率等全局显示参数。
媒体播放列表标签不允许出现在主播放列表中。
1. EXT-X-MEDIA
每个EXT-X-MEDIA标签关联特定的媒体播放列表(这些媒体播放列表显示的是同一内容的不同表现形式)。例如一个主播放列表有五个EXT-X-MEDIA标签,其中三个分别是3种音频流,如英语音频流、法语音频流、西班牙音频流,另外2个是视频流,如两个摄像机拍摄的不同角度的两个视频流。
格式: #EXT-X-MEDIA:<attribute-list>
属性列表(attribute-list)
1) TYPE
值是枚举字符串类型:AUDIO, VIDEO, SUBTITLES 以及CLOSED-CAPTIONS. 分别表示 音频、视频、字幕以及(为失去听觉或听力不佳的观众设置的)电视字幕,闭路字幕
该值是必须要有的值
其中闭路字幕会随着视频流显示。
2)URI
这里表示一个URI索引,指示媒体播放列表的存储位置
该值是可选的,可以不出现,如果TYPE = CLOSED-CAPTIONS, 则该值一定不能出现
3)GROUP-ID
值为一个字符串,表示该组属于哪个流
该值是必须要有的值
4)LANGUAGE
是一个字符串,表示属于哪种语言
该值是可选的,可以不出现
5)ASSOC-LANGUAGE
是一个字符串 ,表示属于一些特殊的语言 如挪威语的另类说法
该值是可选的,可以不出现
6)NAME
用一个可读的字符描述当前唱片。如果LANGUAGE指定语言类型,则必须用该语言类型描述。
该值是必须要有的值
7)DEFAULT
值是枚举字符串类型:YES 和 NO 默认值为NO
在为YSE时,如果用户没有选择,则默认播放该唱片
8)AUTOSELECT
值是枚举字符串类型:YES 或者 NO 默认值为NO。 该值是可选的,可以不出现
如果该值为YES,用户需要选择所需要的播放环境。
如果DEFAULT为YES,则AUTOSELECT必须也为YES
9)FORCED
值是枚举字符串类型:YES 或者 NO 默认值为NO。 该值是可选的,可以不出现
只有TYPE为SUBTITLES 时,该属性才被应用。其它类型不应该出现该属性。
如果该值为YES,该唱片(媒体流)包含的内容被认为是至关重要的。当选择一个FORCED类型的媒体流,用户需要选择最佳的一个播放环境,例如系统语言。
如果该值为NO,唱片(媒体流)需要根据用户的请求进行播放。
10)INSTREAM-ID
值是字符串类型。
只有TYPE为CLOSED-CAPTIONS 时,该属性才被应用。其它类型不应该出现该属性。
11)CHARACTERISTICS
值是字符串类型。表示每个URI对应的特性。 该值是可选的,可以不出现
12)唱片组
一个或者多个EXT-X-MEDIA标签并且拥有相同的GROUP-ID和TYPE可以组合成为一组。
一组中必须播放同样的内容,即:我可以播放标清的《变形金刚》,也可以播放高清的《变形金刚》。但组内的内容必须是《变形金刚》。否则可以出现未知的错误。
2.EXT-X-STREAM-INF
本例在HLS中非常重要,xiaoc建议大家仔细阅读该列表信息
区别于前面枯燥的名词解释,先上来几个样例
#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
我们发现每个标签对应一些属性,以及一个新的m3u8文件,而每个m3u8文件可以对应前面科普1讲的一堆TS片段。
也就是说我们可以通过该标签,自动切换播放视频的码率等信息。
服务器可以提供多个播放列表文件来支持对同一个演示文稿的不同编码。提供变种播放列表文件列出每一个变种流,从而使得客户端可以在不同编码之间动态切换。
种播放列表文件必须为每一个变种流包含一个EXT-X-STREAM-INF标签。同一演示文稿的每个EXT-X-STREAM-INF都必须有相同的programid。每个演示文稿的programid在变种播放列表内必须是唯一的。
服务器在生成变种流的时候必须遵守以下规则:
1) 每一个变种流必须呈现相同的内容,包括流的间断性。
2) 每个变种播放列表文件必须有相同的target duration。
3) 只在个别变种播放列表文件中出现的内容必须放在列表文件的头或者尾,且不能超过target duration。
4) 变种流内匹配内容,必须有匹配时间戳。这可以使客户端同步流。
详细解释:
EXT-X-STREAM-INF标签可以用于索引播放列表中不同流的m3u8文件的播放位置,例如同一视频的不同码率的视频流位置等。
基本格式:
#EXT-X-STREAM-INF:<attribute-list>
<URI>
1)
2)
3)
4)
5)
3.
敬请期待