07_创建多变量播放列表

概述

多变体播放列表描述了您的内容的所有可用变体。每个变体都是特定比特率的流的一个版本,并包含在单独的播放列表中。客户端根据测量的网络比特率切换到最合适的变体。客户端的播放器经过调整,以最大程度地减少播放停滞,从而为用户提供最佳的流式传输体验。

显示索引文件拆分为多个备用文件的流程图。每个备用文件都会创建相应的 MP4 文件。

不会重新读取多变量播放列表。客户端读取播放列表后,它会假定变体集没有更改。一旦客户端在其中一个单独的变体播放列表上看到 EXT-X-ENDLIST 标签,流就会结束。

定义变体

以下示例显示了一个定义五个不同变体的多变量播放列表。

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=640000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8

播放列表示例中使用的标记包括:

EXTM3U
指示播放列表是扩展的 M3U 文件。这种类型的文件与基本的 M3U 文件区分开来,方法是将第一行的标签更改为 EXTM3U。所有 HLS 播放列表都必须以此标记开头。

EXT-X-STREAM-INF
指示播放列表文件中的下一个 URL 标识另一个播放列表文件。

EXT-X-STREAM-INF 标签具有以下参数:

AVERAGE-BANDWIDTH
(可选,但建议使用)一个整数,表示变体流的平均比特率。

BANDWIDTH
(必填)一个整数,它是每个媒体文件的总比特率的上限,以位/秒为单位。计算上限值以包括播放列表中出现或将出现的任何容器开销。

FRAME-RATE
(可选,但建议使用)描述变体流中最大帧速率的浮点值。

HDCP-LEVEL
(可选)指示使用的加密类型。有效值为 TYPE-0 和 NONE。如果流可能无法播放,除非输出受 HDCP 保护,请使用 TYPE-0。

RESOLUTION
(可选,但建议使用)在播放列表中显示视频的可选显示大小(以像素为单位)。对于包含视频的任何流,都应包含此参数。

VIDEO-RANGE
(根据编码需要)具有有效值 SDR 或 PQ 的字符串。如果未指定传输特征代码 1、16 或 18,则必须省略此参数。

CODECS
(可选,但建议使用)包含逗号分隔格式列表的带引号的字符串,其中每种格式指定播放列表文件中媒体段中存在的媒体示例类型。有效的格式标识符是 RFC 6381 定义的 ISO 文件格式命名空间中的标识符。

注意
虽然 CODECS 参数是可选的,但每个 EXT-X-STREAM-INF 标签都应包含该属性。此属性提供解码特定流所需的编解码器的完整列表。它允许客户端区分仅是音频的变体和同时具有音频和视频的变体。然后,客户端利用此信息在切换流时提供更好的用户体验。