

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

# MediaTailor 与 CDN MediaPackage 集成
<a name="mediapackage-integration"></a>

AWS Elemental MediaTailor 与集成 AWS Elemental MediaPackage ，通过内容分发网络 (CDN) 投放个性化视频广告。 MediaPackage 是一项 just-in-time视频打包和制作服务，用于准备和保护您的视频内容，以便通过互联网传送。它可以将你的直播或点播视频内容打包成HLS和DASH等流媒体格式，为各种设备上的观众做好准备。

当你 MediaPackage 与 MediaTailor 和 CDN 结合使用时，你就创建了一个完整的流媒体工作流程，可以大规模投放个性化广告。CDN 在全球范围内分发您的内容，从而减少延迟并改善观众体验，同时在您的直播中 MediaTailor 插入有针对性的广告。

本主题重点介绍让 MediaTailor MediaPackage、和 CDN 协同工作的基本集成步骤。有关高级配置选项、故障排除和监控指南，请参阅[后续步骤](#emp-cdn-next-steps)。

## 了解 MediaPackage 和 CDN 工作流程
<a name="emp-cdn-overview"></a>

在配置集成之前，请务必了解 MediaPackage MediaTailor、和 CDN 是如何协同工作的：

1. **内容准备**： MediaPackage 接收您的直播或点播视频内容，并将其打包成流媒体格式（HLS 或 DASH 清单和片段）。

1. **广告插入**： MediaTailor 向观众请求清单 MediaPackage，插入个性化广告，并将修改后的清单提供给观众。

1. **全球分发**：您的 CDN 会缓存内容区段（来自 MediaPackage）和广告细分（来自），并将其分发给全球 MediaTailor观众。

1. **观看者播放**：视频播放器通过 CDN 请求清单，CDN 在 MediaTailor（对于清单）和 MediaPackage （对于内容分段）之间适当地路由请求。

这种架构具有以下几个优点：
+ **可扩展性**：CDN 可在不影响源服务器的情况下处理高观看者负载
+ **性能**：内容从离观众最近的边缘位置传送
+ **成本效益**：通过缓存降低带宽成本
+ **可靠性**：多个边缘位置提供冗余

## 先决条件
<a name="emp-cdn-prerequisites"></a>

在开始之前，请确保已配置以下组件：

1. **MediaPackage 端点**：用于接收和打包您的视频内容的已配置 MediaPackage 端点。有关设置说明，请参阅 MediaPackage 用户指南 MediaPackage中的[入门](https://docs.aws.amazon.com/mediapackage/latest/ug/getting-started.html)。

1. **MediaTailor 配置**：使用您的 MediaPackage 终端节点作为内容来源的 MediaTailor 配置。有关设置说明，请参阅[整合用于 MediaTailor 广告插入的内容来源](integrating-origin.md)。

1. **CDN 分发**：配置为使用流媒体的 CDN 分发（例如 CloudFront）。有关设置说明，请参阅 CloudFront 开发者指南中的[创建发行版](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html)。

1. **广告决策服务器**：已配置的广告决策服务器，可返回 VAST 或 VMAP 响应以进行广告插入。

## 步骤 1：配置基本的 CDN 设置
<a name="mediapackage-best-practices"></a>

正确的 CDN 配置对于成功 MediaPackage 集成至关重要。设置不正确可能会导致播放失败、缓存性能不佳和成本增加。如果没有正确的缓存策略和查询参数转发，您的 CDN 可能无法正确交付清单，或者可能完全绕过缓存，从而导致源服务器负载过高和观看者体验降低。

### 配置基本缓存设置
<a name="mediapackage-cache-control"></a>

配置基本缓存至关重要，因为 MediaPackage 使用特定的缓存控制标头来优化内容交付。如果没有适当的缓存设置，您的 CDN 可能会忽略这些标头，从而导致不必要的源站请求和延迟增加。请按照以下步骤确保最佳的缓存行为：

要配置与之配合使用的基本缓存，请执行 MediaPackage以下操作：

1. 在 CloudFront 控制台中打开您的 CloudFront 分发设置。

1. 为您的 MediaPackage 源选择或创建缓存策略。

1. 启用 “Origin Cache-Control 标头” 选项。

1.  MediaPackage 允许通过其缓存控制标头来控制缓存行为。

此基本配置允许 MediaPackage 自动为不同的内容类型设置适当的缓存持续时间。要使用特定 TTL 值和性能调整实现高级缓存优化，请先完成此基本设置，然后继续。[优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付](cdn-emp-caching.md)

### 配置基本查询参数
<a name="mediapackage-query-strings"></a>

查询参数配置对于 MediaPackage 功能至关重要。您的 CDN 必须转发特定的查询参数才能启用时移观看和低延迟直播等功能。不正确的查询参数设置可能会使这些功能无法运行，我担心会降低缓存效率。按照以下步骤配置查询参数转发：

为确保您的 CDN 将所需的查询参数转发至： MediaPackage

1. 在 CloudFront 分发设置中，为清单请求选择或创建缓存策略。

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

1. 添加以下基本查询参数：
   + `start`和 `end`-用于时移查看功能。将这些参数传递 MediaPackage 到以定义特定的内容窗口，以便从头到尾查看和追赶查看
   + `_HLS_msn`和 `_HLS_part`-用于支持 LL-HLS 播放请求
   + `m`-用于捕获端点 ti/compame 的修改内容。 MediaPackage 响应始终包含用于捕获端点修改时间的`?m=###`标签。如果已经使用此标签的不同值缓存了内容，则会 CloudFront 请求新的清单，而不是提供缓存的版本
   + `aws.manifestfilter`-用于清单筛选功能。如果您使用的是清单筛选，则必须包含此参数才能将分配配置为将`aws.manifestfilter`查询字符串转发到 MediaPackage源，这是清单筛选功能起作用所必需的

1. 仅包括 MediaPackage 使用的查询字符串。包含不必要的查询字符串会为相同的内容创建多个缓存变体，从而降低缓存效率。

这些参数使您的 CDN 具有基本 MediaPackage 功能。如果您需要针对不同的订阅等级或设备类型实现内容筛选，请先完成此基本查询参数设置，然后继续[使用 MediaTailor、 MediaPackage和 CDN 设置清单筛选](cdn-emp-manifest-filtering.md)。

有关如何 MediaTailor 将查询参数传递给`start`和`end`传递到 MediaPackage 时移查看的信息，请参阅[MediaTailor 原点的查询参数处理](origin-query-parameters.md)中的。[MediaTailor 清单查询参数](manifest-query-parameters.md)

### 配置 LL-HLS 的响应超时
<a name="mediapackage-response-timeout"></a>

超时配置对于低延迟 HLS 至关重要，因为 LL-HLS 使用 “阻止请求” 机制，CDN 会等待新的内容分段。如果超时时间过短，请求就会失败，然后 MediaPackage 才能用新的片段进行响应，从而导致播放中断和观众体验不佳。配置适当的超时时间以确保流畅播放 LL-HLS：

如果您使用的是低延迟 HLS，请配置 CDN 超时设置：

1. 在您的 CDN 设置中，找到源站超时配置。

1. 将响应超时值设置为零件持续时间的至少三倍。

1. 例如，如果您的零件持续时间为 0.3 秒，请将超时设置为至少 0.9 秒。

这样可以确保 CDN 在使用阻止请求机制时等待足够长的时间 MediaPackage 才能做出响应。

## 第 2 步：验证您的集成
<a name="manifest-filtering-integration"></a>

测试您的集成对于确保所有组件在观众遇到问题之前都能正常协同工作至关重要。集成失败可能会导致播放中断、广告丢失或效果不佳。此验证过程可帮助您在受控环境中识别和解决问题。

配置 CDN 设置后，通过测试从内容请求到广告插入的完整工作流程，验证您的集成是否正常运行。

### 步骤 2.1：测试基本播放
<a name="manifest-filtering-overview"></a>

基本播放测试可验证您的 CDN 是否正确处理清单请求并将其转发给。 MediaTailor此测试有助于识别缓存策略、查询参数转发和清单处理方面的配置问题。请按照以下步骤测试基本清单交付：

通过您的 CDN 请求清单，测试您的基本集成是否正常运行：

1. 使用网络浏览器或 curl 通过您的 CDN 请求清单网址。

1. 验证清单是否成功加载并且包含内容和广告细分。

1. 检查清单 URLs 中的内容区段是否指向你的 CDN 域。

1. 确认广告区段 URLs 也指向您的 CDN 域名。

如果清单正确加载并包含预期内容 URLs，则说明您的基本集成正在运行。有关全面的测试方法和高级验证程序，请参阅[CDN 和集成的测试和 MediaTailor 验证](cdn-integration-testing.md)。要设置对集成的性能和运行状况的全面监控，请参阅[监控 CDN 和 MediaTailor 集成的性能 MediaPackage](cdn-emp-monitoring.md)。

### 步骤 2.2：测试视频播放
<a name="manifest-filtering-cdn-config"></a>

视频播放测试可确保您的完整集成正常运行 end-to-end，包括广告插入和通过 CDN 交付内容。此测试可验证内容细分和广告区段是否已正确缓存和投放，以及观看者体验是否符合您的质量标准。请按照以下步骤测试完整的播放功能：

测试插入广告后视频播放是否能正常播放：

1. 使用视频播放器（例如 Video.js 或 HLS.js）通过 CDN 播放您的内容。

1. 确认视频播放流畅无缓冲问题。

1. 确认广告在播放期间按预期的时间插入。

1. 检查内容和广告区段是否都从您的 CDN 加载（而不是直接来自来源）。

如果广告可以顺畅播放，则说明您的集成运行正常。有关全面的测试方法和高级验证程序，请参阅[CDN 和集成的测试和 MediaTailor 验证](cdn-integration-testing.md)。如果您遇到任何播放问题、缓冲或广告插入问题，请参阅[故障排除 MediaPackage、CDN 和集成 MediaTailor](cdn-emp-troubleshooting.md)。

## 后续步骤
<a name="emp-cdn-next-steps"></a>

完成基本集成后，您可以实现高级功能和优化：

**高级 CDN 优化**  
有关缓存优化、TTL 配置和性能调整的详细信息，请参阅[优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付](cdn-emp-caching.md)。

**清单筛选**  
要对分层服务、设备优化或访问控制实施内容筛选，请参阅[使用 MediaTailor、 MediaPackage和 CDN 设置清单筛选](cdn-emp-manifest-filtering.md)。

**问题排查**  
如果您在集成时遇到问题，请参阅[故障排除 MediaPackage、CDN 和集成 MediaTailor](cdn-emp-troubleshooting.md)。

**性能监控**  
要设置全面监控并了解关键性能指标，请参阅[监控 CDN 和 MediaTailor 集成的性能 MediaPackage](cdn-emp-monitoring.md)。

# 使用 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)以获取具体的清单筛选疑难解答指南。

# 优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付
<a name="cdn-emp-caching"></a>

AWS Elemental MediaTailor 当 AWS Elemental MediaPackage 用作内容来源时，需要适当的内容分发网络 (CDN) 缓存配置才能获得最佳性能。 MediaPackage 提供特定的缓存控制标头，告诉您的内容分发网络将不同类型的内容缓存多长时间。遵循这些建议可以确保流畅的播放和高效的内容交付。

本主题专门介绍如何优化缓存行为以最大限度地提高性能和降低成本。在实施高级缓存优化之前，请确保您已完成基本的内容交付网络集成设置。如果您尚未设置基本集成，请从开始[MediaTailor 与 CDN MediaPackage 集成](mediapackage-integration.md)。

## MediaPackage 缓存控制标头
<a name="emp-cache-control-headers"></a>

MediaPackage 为不同的内容类型设置特定的 TTL 值以优化缓存行为：

**多变体播放列表（HLS 和 LL-HLS）**  
TTL：媒体片段时长的一半  
原因：这些播放列表会随着新片段的推出而变化，因此需要经常更新

**媒体播放列表（常规 HLS）**  
TTL：媒体片段时长的一半  
原因：与多变体播放列表类似，这些播放列表会随着内容的进展而更新

**媒体播放列表 (LL-HLS)**  
TTL：1 秒  
原因：低延迟直播需要非常频繁的更新

**TS 媒体片段和初始化片段**  
TTL：1209600 秒（14 天）  
原因：媒体区段创建后不会更改，因此可以长时间缓存

**CMAF 媒体片段和初始化片段**  
TTL：1209600 秒（14 天）  
原因：就像 TS 区段一样，这些区段一旦创建就不可变

有关所有 MediaTailor 工作流程的全面 TTL 建议以及其他缓存优化策略，请参阅[针对 CDN 和 MediaTailor 集成的缓存优化](cdn-optimize-caching.md)。

## 配置 CDN 缓存策略
<a name="cdn-cache-policy-configuration"></a>

正确的缓存策略配置对于实现最佳性能和成本效益至关重要。不同类型的内容（清单、区段、初始化文件）有不同的缓存要求。使用单独的缓存行为可以优化每种内容类型的缓存，从而提高缓存命中率并减少源负载。如果没有适当的缓存策略，您可能会遇到不必要的原始请求、成本增加和播放性能不佳的情况。

要正确使用缓存 MediaPackage 控制标头并优化缓存，请执行以下操作：

1. 在 CloudFront 控制台中打开您的 CloudFront 分发设置。

1. 为不同的内容类型创建单独的缓存行为：
   + 清单请求（\$1.m3u8、\$1.mpd）
   + 媒体片段（\$1.ts、\$1.mp4、\$1.m4s）
   + 初始化片段

1. 对于每种缓存行为，请使用以下设置创建或选择缓存策略：
   + 启用 “Origin 缓存控制标头” 选项
   + 设置 “原始请求策略” 以转发必要的标头
   + 根据内容类型配置查询字符串转发

### 清单缓存行为
<a name="manifest-cache-behavior"></a>

对于清单请求（\$1.m3u8、\$1.mpd）：
+ **路径模式**：\$1.m3u8 和 \$1.mpd
+ **缓存策略**：Honor Origin 缓存控制标头
+ **查询字符串**：转发特定参数（请参阅[优化查询字符串的转发](#cdn-query-string-optimization)）
+ **标题**：转发所有标题（有关最低要求，请参阅[MediaTailor CDN 集成所需的标头](cdn-configuration.md#cdn-required-headers)）

### 媒体片段缓存行为
<a name="segment-cache-behavior"></a>

对于媒体片段（\$1.ts、\$1.mp4、\$1.m4s）：
+ **路径模式**：\$1.ts、\$1.mp4、\$1.m4s
+ **缓存策略**：Honor Origin 缓存控制标头（14 天 TTL）
+ **查询字符串**：无（区段不使用查询参数）
+ **压缩**：启用压缩可提高交付性能

## 优化查询字符串的转发
<a name="cdn-query-string-optimization"></a>

查询字符串优化对于缓存效率至关重要，因为不必要的查询参数会为相同的内容创建多个缓存变体。每个唯一的查询参数组合都会创建一个单独的缓存条目，从而降低缓存命中率并增加源请求。通过仅转发 MediaPackage 实际使用的查询字符串，可以在保持全部功能的同时最大限度地提高缓存效率。

将 CDN 配置为仅转发 MediaPackage 使用的查询字符串，从而提高缓存效率：

**基本查询字符串**  
`start`和 `end`-用于时移查看窗口  
`time_delay`-用于对清单内容应用延迟  
`_HLS_msn``_HLS_m`、和 `_HLS_part`-适用于 LL-HLS 播放请求

**特定功能的查询字符串**  
`aws.manifestfilter`-用于[清单筛选](cdn-emp-manifest-filtering.md)

**重要**  
请勿在缓存密钥中包含任何其他查询字符串。 MediaPackage 忽略无法识别的参数，包括这些参数会产生不必要的缓存变体，从而降低缓存效率。

## 性能优化技术
<a name="cache-performance-optimization"></a>

这些优化是在您的 CDN（例如 CloudFront）上配置的，而不是在或中 MediaPackage 配置的。 MediaTailor实施以下额外优化以最大限度地提高缓存性能：

### 起源盾牌
<a name="origin-shield-configuration"></a>

Origin shield 在您的 CDN 边缘站点和 MediaPackage 端点之间提供了额外的缓存层。这样可以减少到达 MediaPackage终端节点的请求数量，从而提高性能并降低成本，尤其是在流量高峰期间或缓存命中率低于最佳状态时。Origin shield 对于直播特别有用，因为在直播中，多个边缘站点可能会同时请求相同的内容。

启用 Origin shield 以减少 MediaPackage 终端的负载：

1. 在你的 CloudFront 分发中，为你的来源启用 Orig MediaPackage in Shield。

1. 选择靠近您的 MediaPackage 终端的起源盾牌区域。

1. 这会创建额外的缓存层，从而将请求减少到 MediaPackage。

### 压缩配置
<a name="compression-settings"></a>

为基于文本的响应启用压缩：
+ 为清单文件（\$1.m3u8、\$1.mpd）启用压缩
+ 不要压缩媒体片段（已压缩）
+ 确保所有标题都转发到 MediaPackage （有关最低要求，请参阅[MediaTailor CDN 集成所需的标头](cdn-configuration.md#cdn-required-headers)）

## 监控缓存性能
<a name="cache-monitoring-metrics"></a>

跟踪以下关键指标以确保最佳缓存性能：

**缓存命中率**  
目标：媒体细分为 90% 或更高，清单为 70% 或更高  
低比率可能表示 TTL 设置不正确或查询参数不必要

**源站请求量**  
监控到达 MediaPackage 终端节点的请求  
高音量可能表示存在缓存问题

**缓存密钥变体**  
查看缓存密钥模式以识别不必要的变体  
变体太多会降低缓存效率

实施这些缓存优化后，设置监控以跟踪其有效性。有关监控缓存命中率、源请求模式和其他关键性能指标的指导，请参阅[监控 CDN 和 MediaTailor 集成的性能 MediaPackage](cdn-emp-monitoring.md)。如果您发现缓存性能不佳或源请求意外，[故障排除 MediaPackage、CDN 和集成 MediaTailor](cdn-emp-troubleshooting.md)请参见以了解故障排除步骤。

# 监控 CDN 和 MediaTailor 集成的性能 MediaPackage
<a name="cdn-emp-monitoring"></a>

AWS Elemental MediaTailor 需要进行有效的监控，以保持您的 AWS Elemental MediaPackage 和内容分发网络 (CDN) 集成的最佳性能。本主题提供有关要跟踪的关键指标、要使用的监控工具以及如何设置警报以进行主动问题检测的指导。

在设置监控之前，请确保您的基本集成正常运行。如果您尚未完成基本的内容分发网络集成设置，请从开始[MediaTailor 与 CDN MediaPackage 集成](mediapackage-integration.md)。如果您需要对通过监控发现的问题进行故障排除，请参阅[CDN 集成疑难解答](cdn-emp-troubleshooting.md)...

## 关键绩效指标
<a name="key-performance-metrics"></a>

监控以下基本指标，确保您 MediaPackage 和 CDN 集成的最佳性能：

### CDN 性能指标
<a name="cdn-metrics"></a>

如需全面的 CDN 性能指标，包括缓存命中率目标、源站请求量监控和响应时间基准，请参阅 CDN 优化指南[CDN 和 MediaTailor 集成的性能基准](cdn-performance-benchmarks.md)中的。

针对 CDN 指标的 EMP 特定关键注意事项：

**EMP 缓存控制标头**  
**验证内容**：确保您的 CDN 支持 EMP 的缓存控制标头以实现最佳 TTL 行为  
**预期行为**：根据 EMP 的标头，不同的内容类型应具有不同的缓存持续时间  
有关 EMP 缓存优化的详细指南，请参阅[优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付](cdn-emp-caching.md)。

**查询参数的影响**  
**要监控的内容**：跟踪特定于 EMP 的查询参数如何影响缓存效率  
**优化目标**：确保缓存密钥中仅包含必要的 EMP 查询参数

**CDN 响应时间**  
**监控内容**：跟踪不同内容类型（清单与区段）的响应时间。  
**目标值**：  
+ 缓存内容：小于 100 毫秒
+ 源站请求：小于 500 毫秒

### MediaPackage 性能指标
<a name="emp-metrics"></a>

**错误率**  
**监控内容：监**控 CDN 和 MediaPackage 终端节点的 HTTP 错误率。请特别注意 4xx 错误，这可能表明存在配置问题。  
**关键错误代码**：  
+ 400 错误：通常与清单筛选问题有关
+ 404 错误：可能表示存在路由或配置问题
+ 504 错误：超时问题，尤其是 LL-HLS

**请求音量和图案**  
**监控内容**：跟踪 MediaPackage 端点的请求模式，以确定使用趋势和容量需求。  
**值得关注的模式**：  
+ 高峰使用时间
+ 请求的地理分布
+ 内容类型分发（直播与点播）

### 延迟指标
<a name="latency-metrics"></a>

**End-to-end 延迟**  
**监控内容**：对于 LL-HLS 实现，监控从内容摄取到观看者播放的 end-to-end延迟。高延迟可能表明 CDN 配置存在问题。  
**目标值**：  
+ LL-HLS：延迟小于 3 秒 glass-to-glass
+ 常规 HLS：小于 30 秒

**清单生成时间**  
**要监控的内容**：生成清单所 MediaPackage花费的时间，尤其是在应用筛选的情况下。  
**目标值**：清单生成小于 200 毫秒

## 监控工具和设置
<a name="monitoring-tools"></a>

设置全面的监控工具对于保持最佳性能和在问题影响观看者之前快速识别问题至关重要。如果没有适当的监控，性能下降、缓存效率低下或集成问题可能会被忽视，直到观众体验到较差的播放质量。正确的监控设置可让您全面了解您 MediaPackage 和 CDN 集成的各个方面。

使用以下 AWS 服务和工具来监控您 MediaPackage 和 CDN 的集成：

### Amazon CloudWatch
<a name="cloudwatch-monitoring"></a>

Amaz CloudWatch on 通过收集 MediaPackage 和存储来自这两项服务的指标，为监控您和 CDN 的集成奠定了基础。正确的 CloudWatch 配置可确保您拥有识别性能趋势、解决问题和优化集成所需的数据。如果没有 CloudWatch 指标，您将无法了解系统性能，并且可能要等到问题变得严重后才能发现问题。

设置 CloudWatch 监控以收集全面的指标：

1. **MediaPackage 指标**：为 MediaPackage 终端节点启用 CloudWatch 指标，以跟踪请求量、错误率和响应时间。

1. **CDN 指标**：配置 CloudWatch 为收集 CloudFront 指标，包括缓存命中率、源请求计数和错误率。

1. **自定义指标**：为特定业务创建自定义指标， KPIs 例如观众参与度或内容受欢迎程度。

### CloudWatch 仪表板
<a name="dashboard-setup"></a>

创建全面的仪表板以可视化您的指标：

1. **概述控制面板**：显示整体系统运行状况的高级指标

1. **CDN 性能控制面板**：详细的 CDN 指标，包括缓存性能和地理分布

1. **MediaPackage 性能控制面板**： MediaPackage特定指标，包括请求模式和错误率

1. **延迟控制面板**：不同内容类型和区域的 End-to-end延迟指标

### 日志分析
<a name="log-analysis"></a>

设置日志分析以进行详细的故障排除：

1. **CDN 访问日志**：启用和分析 CDN 访问日志，以了解请求模式并识别问题

1. **MediaPackage CloudWatch 日志**：监控 MediaPackage 日志中是否存在错误和性能问题

1. **日志聚合**：使用 Amazon L CloudWatch ogs Insights 或第三方工具分析日志模式

## 设置警报和通知
<a name="alerting-setup"></a>

警报配置对于主动检测和解决问题至关重要。如果没有适当的警报，问题可能会被忽视，直到它们严重影响观看者体验或导致服务中断。配置良好的警报可帮助您在问题影响观众之前识别和解决问题，并确保您的团队收到需要立即关注的关键问题的通知。

配置主动警报，以便在问题影响查看者之前将其识别出来：

### 关键警报
<a name="critical-alerts"></a>

为关键问题设置即时警报：
+ **错误率高**：当 4xx 或 5xx 错误率在 5 分钟内超过 5% 时发出警报
+ **缓存命中率下降**：当清单的缓存命中率低于 70% 或区段的缓存命中率低于 85% 时发出警报
+ **高延迟：延迟**超过目标阈值时 end-to-end发出警报
+ **源站请求峰值**：当源请求比基准增加超过 50% 时发出警报

### 警告警报
<a name="warning-alerts"></a>

为可能表明正在出现问题的趋势设置警告提醒：
+ **性能逐渐下降**：在 30 分钟内响应时间增加 20% 时发出警报
+ **缓存效率趋势**：当缓存命中率显示随时间推移而下降的趋势时发出警报
+ **异常流量模式**：针对请求量或地理分布的意外变化发出警报

## 使用监控数据进行优化
<a name="performance-optimization"></a>

利用监控数据持续提高性能：

### 定期绩效评估
<a name="regular-reviews"></a>

1. **每周回顾**：分析每周绩效趋势并确定优化机会

1. **每月容量规划**：使用流量模式规划容量需求和 CDN 优化

1. **季度架构审查**：评估整体架构效率并确定需要改进的领域

### 常见的优化操作
<a name="optimization-actions"></a>

根据监控数据，考虑以下优化操作：
+ **缓存策略调整**：根据实际内容更新模式修改 TTL 值。有关详细的 TTL 优化指南，请参阅[针对 CDN 和 MediaTailor 集成的缓存优化](cdn-optimize-caching.md)。
+ **地理优化**：在流量大的地区添加 CDN 边缘站点
+ **查询参数优化**：移除片段缓存中不必要的查询参数
+ **Origin shield 配置**：在起源请求量高的区域实施原点盾牌

有关特定于的详细监控指南 MediaPackage，请参阅 MediaPackage 用户指南 MediaPackage中的[监控](https://docs.aws.amazon.com/mediapackage/latest/ug/monitoring.html)。

# 故障排除 MediaPackage、CDN 和集成 MediaTailor
<a name="cdn-emp-troubleshooting"></a>

AWS Elemental MediaTailor AWS Elemental MediaPackage 与内容分发网络 (CDN) 的集成可能会遇到影响播放、缓存或其他集成功能的常见问题。遇到播放问题、缓存问题或其他与集成相关的错误时，请使用本指南。

有关全面的 CDN 故障排除指南，包括适用于所有 MediaTailor 实现的通用缓存性能问题、HTTP 错误解决方案、测试程序和诊断技术，请参阅[对 CDN 集成进行故障排除](cdn-troubleshooting.md)。本节重点介绍 MediaPackage 特定的故障排除要求。

在进行故障排除之前，请确保您已正确完成基本的集成设置。如果您尚未设置集成或需要查看设置步骤，请参阅[MediaTailor 与 CDN MediaPackage 集成](mediapackage-integration.md)。有关在解决问题后优化缓存性能的指导，请参阅[CDN 缓存](cdn-emp-caching.md)。

## 清单筛选错误
<a name="manifest-filtering-errors"></a>

根据记录的错误情况， MediaPackage 清单筛选功能存在问题：

**清单筛选时出现 HTTP 400 错误**  
**症状**：带`aws.manifestfilter`参数的请求返回 HTTP 400 错误请求  
**经过验证的原因（来自 AWS 文档）**：  
+ 筛选条件导致清单为空（没有符合过滤条件的直播流）
+ 过滤器参数名称或值无效
+ 格式错误的查询字符串语法
+ 重复或重复的过滤器参数
+ 筛选参数字符串超过 1024 个字符
+ 应用于媒体播放列表或片段的查询参数（不支持）
**解决方案**  

1. 查看您的过滤器参数，确保它们与可用的内容流相匹配。如果筛选结果没有匹配流，则 MediaPackage返回 HTTP 400。

1. 根据支持的参数名称和值格式验证过滤器语法。

1. 检查查询字符串中是否有重复的参数。

1. 确保过滤器参数仅适用于多变体播放列表，而不适用于媒体播放列表或片段。

1. 验证您的参数字符串总数是否低于 1024 个字符。
**参考**：[AWS Elemental MediaPackage 清单筛选错误情况](https://docs.aws.amazon.com/mediapackage/latest/userguide/error-conditions-and-handling.html)

**清单筛选不起作用（HTTP 200 但未应用筛选）**  
**症状**：请求返回 HTTP 200 但清单包含所有流，而不是过滤后的子集  
**可能的原因：**  
+ CDN 未将`aws.manifestfilter`查询参数转发到 MediaPackage
+ 在可用流中找不到过滤器参数（返回未经过滤的带有 HTTP 200 的清单）
**解决方案**  

1. 验证您的 CDN 缓存策略是否包含`aws.manifestfilter`在转发的查询字符串列表中。

1. 直接针对 MediaPackage 端点测试过滤器参数（绕过 CDN），以验证它们是否按预期工作。

1. 检查过滤器值是否与内容流的实际特征相匹配。
**参考**：[AWS Elemental MediaPackage 清单筛选错误情况](https://docs.aws.amazon.com/mediapackage/latest/userguide/error-conditions-and-handling.html)

## 诊断程序
<a name="validated-diagnostic-steps"></a>

系统的诊断程序可帮助您快速、高效地确定集成问题的根本原因。遵循结构化方法可以防止将时间浪费在错误的假设上，并确保您解决的是实际问题而不是症状。这些基于证据的诊断步骤旨在隔离问题并指导您找到适当的解决方案。

按照以下循证诊断步骤识别问题：

### 分析缓存性能
<a name="cache-performance-analysis"></a>

缓存性能分析对于 EMP 集成至关重要，因为较差的缓存效率会导致源负载增加、成本上涨和潜在的播放问题。

有关全面的缓存性能故障排除，包括缓存命中率分析、缓存密钥优化和系统诊断步骤，请参阅 CDN 主故障排除指南[CDN 缓存性能问题](diagnose-performance-issues.md#cache-performance-troubleshooting)中的。

EMP 特定的缓存注意事项：
+ **EMP 缓存控制标头**：验证你的 CDN 是否支持 EMP 的缓存控制标头，而不是覆盖它们
+ **EMP 查询参数**：确保缓存密钥中仅包含必要的 EMP 查询参数
+ **EMP TTL 行为**：确认不同的 EMP 内容类型具有适当的缓存持续时间

有关优化 EMP 缓存策略和 TTL 设置的详细指南，请参阅。[优化 CDN 缓存 MediaTailor 和 MediaPackage 内容交付](cdn-emp-caching.md)

### 验证清单筛选配置
<a name="manifest-filtering-validation"></a>

清单筛选验证至关重要，因为筛选问题可能会导致查看者收到不正确的内容、不支持的格式或他们不应该访问的内容。系统测试有助于确定问题是否与 CDN 配置、过滤器参数语法或内容可用性有关。

系统地测试清单筛选功能：

1. 直接针对 MediaPackage 端点测试过滤器参数（绕过 CDN），以验证它们是否正常工作。

1. 比较已筛选和未经过滤的清单，以确认包含/排除预期的直播流。

1. 验证您的 CDN 缓存策略是否转发了`aws.manifestfilter`查询参数。

1. 检查 HTTP 400 错误，并将其与记录的错误条件进行匹配。

如果您在解决问题后需要实现或修改清单筛选，请参阅[使用 MediaTailor、 MediaPackage和 CDN 设置清单筛选](cdn-emp-manifest-filtering.md)以获取完整的设置指南。

### 验证查询参数配置
<a name="query-parameter-validation"></a>

确保您的 CDN 仅转发所需的查询参数：

1. 查看您的 CDN 缓存策略以确认其仅包含 AWS 推荐的参数：
   + `aws.manifestfilter`-用于清单筛选
   + `aws.manifestsettings`-用于时移观看
   + `_HLS_msn`还有 `_HLS_part`-用于 LL-HLS 支持

1. 从缓存密钥中移除任何其他查询参数，因为 MediaPackage 忽略它们会降低缓存效率。

**参考**：[使用 AWS Elemental MediaPackage 和 CDNs](https://docs.aws.amazon.com/mediapackage/latest/userguide/cdns.html)

## 错误代码参考
<a name="documented-error-reference"></a>

有关记录在案的错误情况及其原因的参考资料：

**HTTP 400 错误请求（清单筛选）**  
**记录在案的原因**：  
+ 应用过滤器会导致清单为空
+ 参数名称或值无效
+ 格式错误的查询字符串语法
+ 重复的过滤器参数
+ 参数字符串超过 1024 个字符
+ 查询媒体播放列表或片段的参数
**参考**：[MediaPackage 清单筛选错误情况](https://docs.aws.amazon.com/mediapackage/latest/userguide/error-conditions-and-handling.html)

**HTTP 200 OK（未应用任何筛选）**  
**记录在案的原因**：  
+ 在可用直播中找不到过滤器参数（返回未经过滤的清单）
+ 筛选后仅显示字幕流（返回未经过滤的清单）
**参考**：[MediaPackage 清单筛选错误情况](https://docs.aws.amazon.com/mediapackage/latest/userguide/error-conditions-and-handling.html)

## 其他故障排除资源
<a name="additional-resources"></a>

对于本主题中未涉及的问题，请查阅以下官方 AWS 资源：
+ [从中预览清单 AWS Elemental MediaPackage](https://docs.aws.amazon.com/mediapackage/latest/userguide/endpoints-preview.html)-使用清单预览来解决内容打包问题
+ [提高 CloudFront 缓存命中率](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cache-hit-ratio.html)-CDN 缓存优化综合指南
+ [清单筛选](https://docs.aws.amazon.com/mediapackage/latest/userguide/manifest-filtering.html)- MediaPackage 筛选功能完整指南