清单筛选 - AWS Elemental MediaPackage

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

清单筛选

通过清单筛选,MediaPackage 可根据您在追加到播放请求的查询中指定的参数动态生成客户端清单。这使您能够执行诸如限制观看者访问优质 4K HEVC 内容或将目标确定为特定设备类型和音频采样率范围等此类操作,所有这些操作都来自单个终端节点。以前,您必须配置多个终端节点才能完成此行为。MediaPackage现在提供了一种经济高效的方式来在同一终端节点上动态生成不同的客户端

使用清单筛选条件

使用清单筛选条件时,生成的清单仅包括与您在查询中指定的特征匹配的音频流和视频流。如果未使用清单筛选条件,则所有接收的流都会出现在终端节点输出流中。例外情况是,如果您已为终端节点设置流筛选条件,例如最小视频比特率。在这种情况下,清单筛选条件会在流筛选条件之后应用,这可能会使输出偏斜,因而不建议使用。

清单筛选可用于 MediaPackage 支持的所有终端节点类型:

  • Apple HLS

  • DASH-ISO

  • Microsoft Smooth

  • CMAF

要使用清单筛选功能,请追加aws.manifestfilter查询播放请求的参数以MediaPackage. MediaPackage评估查询,并根据这些查询参数提供客户端清单。清单查询 区分大小写,长度最多为 1024 个字符。如果查询格式不正确,或者它没有与查询参数匹配的流,则 MediaPackage 返回不完整的清单或空清单。有关查询语法,请参阅以下部分。

注意

如果您使用的是 Apple HLS 或 CMAF 终端节点,则适用特殊条件。有关这些条件的信息,请参阅HLS 和 CMAF 清单的特殊条件

查询语法

基本查询参数为 aws.manifestfilter,后跟可选参数名称和值对。要构造查询,请将 ?aws.manifestfilter= 附加到 MediaPackage 终端节点 URL 的末尾,后跟参数名称和值。有关所有可用参数的列表,请参阅清单筛选条件查询参数

Apple HLS 筛选条件查询可能如下所示:

https://example-mediapackage-endpoint.mediapackage.us-west-2.amazonaws.com/out/v1/examplemediapackge/index.m3u8?aws.manifestfilter=audio_sample_rate:0-44100;video_bitrate:0-2147483647;video_codec:h265;audio_language:fr,en-US,de

下表列出了查询语法。

查询字符串组件 描述
? 标记查询开始的受限字符。
aws.manifestfilter= 基本查询,后跟由名称和值对构造的参数。有关所有可用参数的列表,请参阅清单筛选条件查询参数
: 用于将参数名称与值关联。例如:parameter_name:value
; 在包含多个参数的查询中分隔参数。例如:parameter1_name:value;parameter2_name:minValue-maxValue
, 分隔值的列表。例如:parameter_name:value1,value2,value3。列表中以逗号分隔的值表示存在 OR 关系。
- 用于定义参数的最小值-最大值范围。例如:audio_sample_rate:0-44100。当数值用在范围中时,数值将包含在范围定义中。这意味着流必须大于或等于最小值,并且小于或等于最大值。对于范围,最小值和最大值是必需的。支持的范围值为 0 - 2147483647
注意

如果你使用亚马逊CloudFront作为 CDN,您可能需要设置其他配置。有关更多信息,请参阅为所有终端节点配置缓存行为

清单筛选条件查询参数

MediaPackage 支持以下查询参数。

类别 名称 描述 示例
Audio audio_bitrate
  • 音频比特率,单位为每秒。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 0 - 2147483647

stream.mpd?aws.manifestfilter=audio_bitrate:0-2147483647
Audio audio_channels
  • 音频通道数。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 1 - 32767

stream.mpd?aws.manifestfilter=audio_channels:1-8
Audio audio_codec
  • 音频编解码器类型。

  • 接受的值AACLAACHAC-3EC-3. 您必须包含-为了AC-3EC-3.

    区分大小写。

stream.mpd?aws.manifestfilter=audio_codec:AACL,AC-3
Audio audio_language
  • 从编码器直通 (passthrough) 派生的音频语言或功能代码。

  • 接受的值:任意字符串,如两字符或四字符ISO-639-1语言代码。您必须使用为编码器设置的相同语言字符串。

    区分大小写。

stream.mpd?aws.manifestfilter=audio_language:fr,en-US,de
Audio audio_sample_rate
  • 音频采样率(以 Hz 为单位)。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 0 - 2147483647

stream.mpd?aws.manifestfilter=audio_sample_rate:0-44100
子标题 subtitle_language
  • 从编码器直通 (passthrough) 派生的子标题语言或功能代码。

  • 接受的值:任意字符串,如两字符或四字符ISO-639-1语言代码。您必须使用为编码器设置的相同语言字符串。

    区分大小写。

stream.mpd?aws.manifestfilter=subtitle_language:en-US, hi
视频 trickplay_height
  • 涓细播放图像的高度,以像素为单位。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 1 - 2147483647

stream.mpd?aws.manifestfilter=trickplay_height:200-1200
视频 trickplay_type
  • 涓细游戏轨道类型。

  • 可接受的值iframeimage

    区分大小写。

stream.mpd?aws.manifestfilter=trickplay_type:iframe
视频 video_bitrate
  • 视频比特率,单位为每秒。

    注意

    如果您使用此参数,我们建议您仅使用 video_bitrate 筛选条件参数来设置视频比特率。不要通过 MediaPackage 控制台或 AWS CLI 设置最小和最大视频比特率。video_bitrate 筛选条件应用于在终端节点上创建的视频比特率设置。如果您使用此参数并在控制台或 AWS CLI 中设置比特率,则输出可能会偏斜。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 0 - 2147483647

  • 注意

    您不能将此参数用于特技播放流。

stream.mpd?aws.manifestfilter=video_bitrate:0-2147483647
视频 video_codec
  • 视频编解码器类型。

  • 可接受的值H264H265

    区分大小写。

stream.mpd?aws.manifestfilter=video_codec:h264
视频 video_dynamic_range
  • 视频动态范围。

  • 可接受的值hdr10hlgsdr

    区分大小写。

stream.mpd?aws.manifestfilter=video_dynamic_range:hdr10
视频 video_framerate
  • NTSC 格式的视频帧速率范围。

  • 接受的值:用短划线聚合的两个浮点数,用于定义包含的范围(含两端的值)。每个浮点数最多可以有三个可选的小数值。例如,29.9729.764。支持的范围值为 1 - 999.999

stream.mpd?aws.manifestfilter=video_framerate:23.976-30
视频 video_height
  • 视频的高度,以像素为单位。

  • 接受的值:用短划线聚合的两个整数(用于定义包含的范围)。支持的范围值为 1 - 32767

stream.mpd?aws.manifestfilter=video_height:720-1080

清单筛选示例

这些是清单筛选示例。

例 1:确定目标为支持 AVC 和 44.1k 音频采样率的播放器

查看器正在仅支持 AVC 和 44.1k 音频采样率的设备上播放内容。您可以设置 video_codecaudio_sample_rate 以筛选掉不符合这些要求的流。

?aws.manifestfilter=audio_sample_rate:0-44100;video_codec:h264

例 2: 限制 4K HEVC 内容

您的 4K HEVC 流是 15 Mbps,所有其他流都小于 9 Mbps。要从流集中排除 4K 流,您可以将阈值设置为每秒 9,000,000 位,以筛选掉更高的比特率。

?aws.manifestfilter=video_bitrate:0-9000000

例 3: 包括帧速率在每秒 23.976 到 30 之间的视频

要只包含特定帧速率范围内的视频,请使用 video_framerate。此参数接受最多具有三个可选小数值的浮点数。

?aws.manifestfilter=video_framerate:23.976-30

HLS 和 CMAF 清单的特殊条件

如果您使用的是 HLS 或 CMAF 清单,则这些特殊条件适用。

  • 对于 HLS 清单,我们强烈建议您使用音频渲染组,以避免删除与筛选掉的音频流进行多路复用的视频流。有关副本组的更多信息,请参阅AWS Elemental 中的格式副本组参考MediaPackage

  • 在 HLS 和 CMAF 清单中,不会发出音频采样率信号,因此不容易直观地检查此设置的原始清单或筛选后的清单。要验证音频采样率,请检查编码器级别和输出级别的音频采样率。

  • 在 HLS 和 CMAF 清单中,变体的 BANDWIDTH 属性将音频轨道的带宽与视频轨道相关联,无论它是与视频轨道多路复用,还是它为由视频轨道引用的音频轨道。因此,您无法直观地检查原始清单和筛选后的清单来确认 video_bitrate 筛选条件是否正常发挥了作用。要验证筛选条件,请检查编码器级别和输出级别的视频比特率。

  • 对于 HLS 和 CMAF 清单,附加到比特率播放列表或分段的请求参数会导致 HTTP 400 错误。

错误条件

下表列出了常见错误条件。

错误条件 示例 HTTP 状态代码
列表参数未找到且不是约束列表的一部分 ?aws.manifestfilter=audio_language:dahlia 200
流中只存在字幕流 ?aws.manifestfilter=audio_sample_rate:0-1;video_bitrate=0-1 200
重复的筛选条件参数 ?aws.manifestfilter=audio_sample_rate:0-48000;aws.manifestfilter=audio_sample_rate:0-48000 400
参数无效 ?aws.manifestfilter=donut_type:rhododendron 400
范围参数无效 ?aws.manifestfilter=audio_sample_rate:300-0 400
范围值无效(大于 INT_MAX ?aws.manifestfilter=audio_sample_rate:0-2147483648 400
查询字符串格式错误 ?aws.manifestfilter=audio_sample_rate:is:0-44100 400
参数字符串大于 1024 个字符 ?aws.manifestfilter=audio_language:abcdef.... 400
HLS 或 CMAF 比特率清单上的查询参数 index_1.m3u8?aws.manifestfilter=video_codec:h264 400
分段请求上的查询参数 ..._1.[ts|mp4|vtt..]?aws.manifestfilter=video_codec:h264 400
重复的查询参数 ?aws.manifestfilter=audio_sample_rate:0-48000;aws.manifestfilter=video_bitrate:0-1 400
应用筛选条件会导致空清单(内容中没有可满足查询字符串中所定义的条件的流) ?aws.manifestfilter=audio_sample_rate:0-1;video_bitrate=0-1 400