

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

# 使用 MediaTailor、 MediaPackage和 CDN 设置清单筛选
<a name="cdn-emp-manifest-filtering"></a>

AWS Elemental MediaTailor 使用清单筛选功能来自定义通过内容分发网络 (CDN) 交付给不同观众的清单中包含哪些音频和视频流。 AWS Elemental MediaPackage 这对于实施分层服务产品、特定于设备的优化或内容访问控制特别有用。

本主题专门介绍实现清单筛选功能。在实施清单筛选之前，您必须完成基本的内容分发网络集成设置。如果您尚未设置基本 MediaPackage 和内容分发网络集成，请从开始[MediaTailor 与 CDN MediaPackage 集成](mediapackage-integration.md)。

## 清单筛选功能
<a name="manifest-filtering-overview"></a>

在实现清单筛选之前，请先了解使用此功能可以完成什么：

### 核心过滤功能
<a name="filtering-capabilities"></a>

清单筛选提供了几项关键功能，可帮助您控制内容交付：
+ 限制观看者访问优质内容（例如 4K HEVC）
+ 使用适当的直播来定位特定的设备类型
+ 根据音频采样率、语言或视频编解码器筛选内容
+ 为不同的订阅者提供不同的质量等级

### 常见使用案例
<a name="filtering-use-cases"></a>

这些用例演示了清单筛选如何满足特定的业务需求：

**订阅套餐**  
为基本订阅者提供分辨率较低的直播，同时为高级订阅者提供4K内容的访问权限  
示例：基本等级限制为 720p，高级等级最高为 4K

**设备优化**  
根据设备功能自动提供适当的直播  
示例：移动设备获得更低的比特率，智能设备 TVs 获得更高的质量

**带宽管理**  
在使用高峰期限制直播质量以管理网络成本  
示例：在高流量事件期间降低最大比特率

**区域内容**  
根据观众的位置提供不同的音频语言或内容变体  
示例：自动筛选本地语言音轨

有关清单筛选概念的更多信息，请参阅 AWS Elemental MediaPackage 用户指南中的[清单筛选](https://docs.aws.amazon.com/mediapackage/latest/ug/manifest-filtering.html)。

## 配置您的 CDN 以进行清单筛选
<a name="cdn-filtering-configuration"></a>

清单筛选的 CDN 配置是必不可少的，因为您的 CDN 必须将`aws.manifestfilter`查询参数转发到才能 MediaPackage 进行筛选。如果没有正确的查询字符串转发，CDN 将删除过滤器参数，所有查看者都将收到未经过滤的清单，无论其订阅等级或设备功能如何。此配置可确保您的过滤逻辑达到预期 MediaPackage 并按预期运行。

要通过 CDN 启用清单筛选，您需要配置查询字符串转发：

1. 在您的 CloudFront 分配中，创建或编辑清单请求的缓存行为。

1. 对于**缓存策略，**请创建新策略或编辑现有策略。

1. 在 “**缓存密钥设置**” 下，选择 “包括指定的查询字符串”。

1. `aws.manifestfilter`添加到允许的查询字符串列表中。

1. 如果您还使用其他 MediaPackage 功能，请添加其查询参数：
   + `start`和 `end`-用于时移观看
   + `time_delay`-用于延时功能
   + `_HLS_msn`还有 `_HLS_part`-对于 LL-HLS

有关创建分配的更多信息，请参阅 Amazon CloudFront 开发者指南中的[创建分配](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html)。

## 实现客户端筛选
<a name="client-side-filtering-implementation"></a>

在客户端实现中，您可以定义视频播放器和应用程序如何请求经过筛选的内容。此配置根据每位观看者的订阅级别、设备功能或其他标准来确定他们接收的内容。适当的实施可确保观看者只收到他们本应有权访问的内容，同时保持最佳的 CDN 缓存效率。

要在视频播放器和应用程序中实现清单过滤，请执行以下操作：

### 筛选的工作原理
<a name="filtering-workflow"></a>

筛选过程的工作原理如下：

1. 您的视频播放器或应用程序请求包含过滤器参数的清单 URL

1. CDN 将请求（包括查询参数）转发到 MediaTailor

1. MediaTailor 在请求来源清单 MediaPackage 时将过滤器参数传递给

1. MediaPackage 应用筛选条件并返回仅包含符合您条件的变体的自定义清单

1. MediaTailor 处理过滤后的清单以进行广告插入，然后将其返回给玩家

### 用于过滤的 URL 格式
<a name="filtering-url-format"></a>

了解正确的 URL 格式对于成功实施过滤至关重要。不正确的 URL 格式会导致过滤参数被忽略或导致 HTTP 错误。URL 结构必须包含过滤器参数作为查询字符串，您的 CDN 会将其转发到该字符串。 MediaPackage请按照以下步骤实现正确的 URL 格式：

要在视频播放器中实现清单过滤，请执行以下操作：

1. 修改玩家的清单请求 URLs 以包含相应的过滤器参数。

1. 在查询参数中使用以下 URL 格式：

   ```
   https://CloudFront-Domain/v1/master/MediaTailor-Config/index.m3u8?aws.manifestfilter=video_codec:h264;audio_language:en-US
   ```

1. 当您的玩家请求此网址时， MediaTailor 会将这些参数传递给 MediaPackage，从而生成经过过滤的清单。

## 常见的过滤场景
<a name="filtering-examples"></a>

使用以下示例来实现常见的过滤场景：

**特定于设备的内容交付**  
要根据设备功能进行筛选，请将此参数添加到清单请求中：  

```
aws.manifestfilter=video_codec:h264;audio_sample_rate:0-44100
```
此示例将内容限制为采样率高达 44.1 kHz 的 H.264 视频和音频，适用于移动设备。

**付费内容限制**  
要限制对高比特率内容的访问，请在清单请求中添加以下参数：  

```
aws.manifestfilter=video_bitrate:0-9000000
```
此示例将视频比特率限制在 9 Mbps 或更低，适用于基本订阅级别。

**语言选择**  
要筛选特定的音频语言，请将此参数添加到清单请求中：  

```
aws.manifestfilter=audio_language:fr,en-US,de
```
此示例仅包括法语、美国英语和德语音轨。

**分辨率定位**  
要筛选特定的视频分辨率，请将此参数添加到您的清单请求中：  

```
aws.manifestfilter=video_height:240-360,720-1080
```
此示例包括高度介于 240-360 像素和 720-1080 像素之间的视频流，不包括中档分辨率。

**基于编解码器的过滤**  
要筛选特定的视频编解码器，请将此参数添加到清单请求中：  

```
aws.manifestfilter=video_codec:h264,h265
```
此示例仅包含 H.264 和 H.265 视频流，不包括其他编解码器。

## 特殊注意事项和限制
<a name="filtering-considerations"></a>

要避免在实现清单筛选时出现常见问题，请执行以下操作：

### 技术限制
<a name="technical-limitations"></a>
+ 对于 TS 清单，请使用音频再现组以避免移除与过滤掉的音频流多路复用的视频流
+ 在 TS 和 CMAF 清单中，音频采样率和视频比特率不容易在清单中显示以供验证
+ 附加到媒体播放列表或片段的请求参数将导致 HTTP 400 错误

### 错误条件
<a name="error-conditions"></a>
+ 如果筛选结果清单为空（没有符合筛选条件的流），则 MediaPackage 将返回 HTTP 400 错误
+ 过滤器配置（端点过滤器 \$1 查询参数）冲突会导致 HTTP 404 错误
+ 过滤器语法无效或不支持的过滤器类型会导致 HTTP 400 错误

### 性能注意事项
<a name="performance-considerations"></a>
+ 每个独特的过滤器组合都会创建一个单独的缓存条目，这可能会降低缓存效率
+ 具有许多标准的复杂筛选器可能会影响清单生成性能
+ 考虑在静态过滤场景中使用端点级过滤器来提高缓存性能

## 测试您的过滤实现
<a name="filtering-testing"></a>

测试清单筛选实现对于确保查看者根据访问级别和设备功能接收正确的内容至关重要。过滤失败可能会导致观看者收到不正确的质量等级、不支持的格式或他们不应该访问的内容。全面的测试有助于在这些问题影响您的观众之前识别和解决这些问题。

要验证您的清单筛选是否正常运行，请执行以下操作：

1. 请求具有不同筛选参数的清单并验证结果

1. 检查筛选后的清单是否仅包含预期的直播流

1. 测试边缘案例（空结果、过滤器无效）以确保正确处理错误

1. 验证您的 CDN 是否正确转发过滤器参数

1. 使用不同的设备和播放器进行测试以确保兼容性

有关筛选问题的疑难解答，请参阅*排除 MediaPackage CDN 集成问题*。

如果您遇到 HTTP 400 错误、空清单或过滤参数无法按预期工作，请参阅[故障排除 MediaPackage、CDN 和集成 MediaTailor](cdn-emp-troubleshooting.md)以获取具体的清单筛选疑难解答指南。