将备用媒体添加到多变量播放列表允许提供商指定一组变体播放列表之一作为主演示文稿的覆盖。客户端仅播放替代媒体(音频或视频),并禁止主演示文稿中相同类型的任何媒体(如果存在)。这允许演示文稿提供媒体的多个版本,而无需提供程序存储重复的媒体,也不要求客户端在只需要一个变体时下载所有变体。它还允许随后提供其他媒体,而无需重新制作原始内容。
下面是提供其他音频呈现形式的多变量播放列表的示例:
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="fre/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="sp",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="sp/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=195023,CODECS="avc1.42e00a,mp4a.40.2",AUDIO="audio"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=591680,CODECS="avc1.42e01e,mp4a.40.2",AUDIO="audio"
hi/prog_index.m3u8
此多变量播放列表示例中使用的标记包括:
EXT-X-MEDIA
标识媒体选择组的元素。媒体选择组的所有元素必须具有相似的特征,例如,相同的编解码器和相同的最大带宽。
EXT-X-STREAM-INF
指示多变量播放列表中的下一个 URL 标识格式副本播放列表。
EXT-X-MEDIA 标签具有以下参数:
TYPE
(必填)指示媒体类型的字符串。有效值为音频、视频、字幕和隐藏式字幕。
GROUP-ID
(必填)一个字符串,指定媒体选择所属的组。
LANGUAGE
(可选)一个字符串,用于标识媒体选择中使用的主要语言。
NAME
(必填)描述媒体选择中使用的主要语言的字符串。
AUTOSELECT
(可选)一个字符串,指示客户端可以在没有显式用户首选项的情况下播放媒体选择。有效值为“是”和“否”。如果默认值为“是”,则此值也必须为“是”。
DEFAULT
(可选)一个字符串,指示如果用户未选择其他选项,则应播放媒体选择。有效值为“是”和“否”。
INSTREAM-ID
(隐藏式字幕需要)一个字符串,它指定媒体播放列表中片段中的格式副本。当 TYPE 属性为 CLOSED-CAPTIONS 时,INSTREAM-ID 必须具有以下值之一:CC1、CC3、CC3、CC4 或 SERVICEn,其中 n 介于 1 和 63 之间。
ASSOC-LANGUAGE
(可选)包含格式副本的语言标记的字符串。关联的语言通常不同于 LANGUAGE 属性中指定的语言。
CHANNELS
(当两个演绎版具有相同的编解码器但通道数不同时,需要)一个有序字符串,指示媒体段中存在的最大独立、同步音频通道数。
URI
(可选)一个字符串,其中包含标识媒体播放列表文件的 URI。如果 TYPE 是隐藏式字幕,则必须省略此属性。省略此属性时,媒体内容位于原始变体中。
当省略其 URI 属性时,EXT-X-MEDIA 标记可以指示所描述的媒体包含在 EXT-X-STREAM-INF 标记的 URI 中。
EXT-X-STREAM-INF 标签具有以下参数:
AUDIO
(可选)带引号的字符串,指示播放演示文稿时可能使用的音频流集。此值必须与多变量播放列表中 TYPE 属性为 AUDIO 的多变量播放列表中其他位置的 EXT-X-MEDIA 标记的 GROUP-ID 属性的值匹配。
VIDEO
(可选)带引号的字符串,指示播放演示文稿时可能使用的视频流集。此值必须与多变量播放列表中 TYPE 属性为 VIDEO 的多变量播放列表中其他位置的 EXT-X-MEDIA 标签的 GROUP-ID 属性的值匹配。
SUBTITLES
(可选)一个带引号的字符串,指示可以使用的字幕格式副本集。此值必须与多变量播放列表中 TYPE 属性为 SUBTITLE 的多变量播放列表中其他位置的 EXT-X-MEDIA 标签的 GROUP-ID 属性的值匹配。
CLOSED-CAPTIONS
(可选)指示可以使用的隐藏标题集的带引号的字符串或值为 NONE 的枚举字符串。当此值是带引号的字符串时,它必须与多变量播放列表中 TYPE 属性为隐藏式字幕的 EXT-X-MEDIA 标记的 GROUP-ID 属性的值匹配。如果枚举值为 NONE,则所有 EXT-X-STREAM-INF 标记都必须具有此属性,其值为 NONE。
我们可以有多个音频组以允许更改代码或比特率。但是,变体中的每个音频组都必须具有相同的替代项。例如,我们不能在一个音频组中使用英语,而将其排除在另一个组中。下面的示例定义两个音频组,一个用于低比特率,另一个用于高比特率。两个音频组定义相同的语言集,但根据可用带宽进行调用。
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="englo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="frelo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-lo",LANGUAGE="es",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="splo/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="eng",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="fre",NAME="Français",AUTOSELECT=YES, DEFAULT=NO,URI="fre/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi",LANGUAGE="es",NAME="Espanol",AUTOSELECT=YES, DEFAULT=NO,URI="sp/prog_index.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=195023,CODECS="mp4a.40.5", AUDIO="audio-lo"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=260000,CODECS="avc1.42e01e,mp4a.40.2", AUDIO="audio-lo"
hi/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=591680,CODECS="mp4a.40.2, avc1.64001e", AUDIO="audio-hi"
lo/prog_index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=650000,CODECS="avc1.42e01e,mp4a.40.2", AUDIO="audio-hi"
hi/prog_index.m3u8
我们可以在播放列表中同时包含组和单个流。当我们有多个都使用相同的音频的摄像机角度时,通常会执行此操作。为视频流创建一个组,然后声明单个音频流。以下示例显示了具有三个摄像头角度和一个音频流的播放列表:
#EXTM3U
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=754857,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="500kbs",AUDIO="aac"
Angle1/500kbs/prog_index.m3u8
若要为不同的比特率提供不同的流,每个比特率需要不同的视频组 ID。
#EXTM3U
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/200kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="200kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/200kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle1",AUTOSELECT=YES,DEFAULT=YES
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle2",AUTOSELECT=YES,DEFAULT=NO, URI="Angle2/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=VIDEO,GROUP-ID="500kbs",NAME="Angle3",AUTOSELECT=YES,DEFAULT=NO, URI="Angle3/500kbs/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",AUTOSELECT=YES, DEFAULT=YES,URI="eng/prog_index.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=300000,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="200kbs",AUDIO="aac"
Angle1/200kbs/prog_index.m3u
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=754857,CODECS="mp4a.40.2,avc1.4d401e", VIDEO="500kbs",AUDIO="aac"
Angle1/500kbs/prog_index.m3u8