

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

# 集成 HLS 源代码
<a name="manifest-hls"></a>

AWS Elemental MediaTailor 支持等于`3`或更高的 `.m3u8` HLS 清单，用于直播和视频点播 (VOD)。`EXT-X-VERSION` MediaTailor 遇到广告插播时，它会根据内容类型尝试插入或替换广告。如果没有足够的广告来填补持续时间，则在广告插播的剩余时间内， MediaTailor 将显示底层内容流或配置的名单。有关基于内容类型的 HLS 广告行为的更多信息，请参阅[了解 AWS Elemental MediaTailor 广告插入行为](ad-behavior.md)。

以下各节提供了有关如何 MediaTailor 处理 HLS 清单的更多信息。

**Topics**
+ [HLS 支持的广告标记](hls-ad-markers.md)
+ [启用广告标记直通功能](ad-marker-passthrough.md)
+ [HLS 清单标签处理](manifest-hls-tags.md)
+ [HLS 清单示例](manifest-hls-example.md)

# HLS 支持的广告标记
<a name="hls-ad-markers"></a>

AWS Elemental MediaTailor 通过解析输入清单中支持的广告标记，识别 HLS 清单中的广告可用性边界。以下各节介绍 MediaTailor 使用什么样的标记。

## EXT-X-ASSET
<a name="hls-ad-markers-asset"></a>

标签 `EXT-X-ASSET` 包含广告决策服务器 (ADS) 用于为查看者个性化内容的元数据。`EXT-X-ASSET` 参数是以逗号分隔的键值对。

要使用该标签，必须满足以下要求：
+ 您必须对源清单中的 `EXT-X-ASSET` *值* 进行 URL 编码。以下示例显示了带有键和 URL 编码值的 `EXT-X-ASSET` 标签。

  ```
              #EXT-X-ASSET:GENRE=CV,CAID=12345678,EPISODE="Episode%20Name%20Date",SEASON="Season%20Name%20and%20Number",SERIES="Series%2520Name"
  ```
+ 您必须在 MediaTailor ADS 配置中包含动态`[asset.]`变量和*密钥*。以下示例显示了使用动态`[asset.]`变量和密钥的 MediaTailor ADS 配置。

  ```
              https://myads.com/stub?c=[asset.GENRE]&g=[asset.CAID]&e=[asset.EPISODE]&s=[asset.SEASON]&k=[asset.SERIES]
  ```

**VAST 请求示例**  
以下示例显示了一个针对 ADS 的 VAST `GET` 请求。

```
            https://myads.com/stub?c=CV&g=12345678&e=Episode%20Name%20Date&s=Season%20Name%20and%20Number&k=Series%2520Name
```

## EXT-X-CUE-OUT 和 EXT-X-CUE-IN
<a name="hls-ad-markers-cue"></a>

这种广告标记类型最为常见。以下示例显示了这些提示标记的选项。

```
#EXT-X-CUE-OUT:DURATION=120
    ...
    #EXT-X-CUE-IN
```

```
#EXT-X-CUE-OUT:30.000
    ...
    #EXT-X-CUE-IN
```

```
#EXT-X-CUE-OUT
    ...
    #EXT-X-CUE-IN
```

## EXT-X-DATERANGE
<a name="hls-ad-markers-range"></a>

借助 `EXT-X-DATERANGE` 广告标记标签，您可以使用 `SCTE35-OUT` 属性来指定广告效用的计时。

**注意**  
AWS Elemental MediaTailor 忽略为`EXT-X-DATERANGE`广告标记提供的任何`START-DATE`属性。

您可以通过以下方式之一指定广告效用：
+ 符合 `SCTE35-OUT` 和 `DURATION` 规范的 `EXT-X-DATERANGE` 标签。

  示例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",DURATION=60.000,SCTE35-OUT=0xF
  ```
+ 成对的 `EXT-X-DATERANGE` 标签，第一个符合 `SCTE35-OUT` 规范，第二个符合 `SCTE35-IN` 规范。

  示例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-OUT=0xF
      ...
      #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-IN=0xF
  ```
+ 先前选项的组合。使用 `SCTE35-OUT` 和 `DURATION` 规范指定 `EXT-X-DATERANGE` 标签，然后使用 `SCTE35-IN` 规范指定 `EXT-X-DATERANGE` 标签。在这种情况下， MediaTailor 使用两个规格中最早的提示设置。

  示例

  ```
  #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",DURATION=60.000,SCTE35-OUT=0xF
      ...
      #EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2019-01T00:15:00Z\",SCTE35-IN=0xF
  ```

## EXT-X-SPLICEPOINT-SCTE35
<a name="hls-ad-markers-splice"></a>

以 base64 编码的二进制附加具有 SCTE-35 有效负载的 `EXT-X-SPLICEPOINT-SCTE35` 广告标记。解码后的二进制必须为提供商放置机会开始时、广告插入标记 `0x35`、提供商放置机会结束时提供包含广告去除标记 `0x34` 的 SCTE-35 `splice_info_section`。

以下示例显示了带有 base64 编码的二进制有效负载的拼接点规范，这些有效负载指定了广告去除和广告插入标记。

```
    #EXT-X-SPLICEPOINT-SCTE35:/DA9AAAAAAAAAP/wBQb+uYbZqwAnAiVDVUVJAAAKqX//AAEjW4AMEU1EU05CMDAxMTMyMjE5M19ONAAAmXz5JA==
    ...
    #EXT-X-SPLICEPOINT-SCTE35:/DA4AAAAAAAAAP/wBQb+tTeaawAiAiBDVUVJAAAKqH+/DBFNRFNOQjAwMTEzMjIxOTJfTjUAAIiGK1s=
```

# 启用广告标记直通功能
<a name="ad-marker-passthrough"></a>

默认情况下，HLS 的 MediaTailor 个性化清单不包含来源清单中的 SCTE-35 广告标记。启用广告标记直通后， MediaTailor会将以下广告标记从来源清单传递到个性化清单中：
+ EXT-X-CUE-IN
+ EXT-X-CUE-OUT
+ EXT-X-SPLICEPOINT-SCTE35

 广告标记直通是一项可选设置。如果您希望将 SCTE 广告标记包含在 MediaTailor 个性化清单中，请使用广告标记直通。常见用例包括：
+ 内容替换-执行内容替换或内容限制。
+ 广告跟踪-根据是否存在一个或多个广告标记来触发广告跟踪信息。
+ 播放器设置-根据是否存在广告标记，在玩家的用户界面中启用清理或倒计时器功能。

**注意**  
MediaTailor 不会更改这些标记的值。例如，如果`EXT-X-CUE-OUT`来源清单`60`中的值为，但未投放广告，则 MediaTailor 不会在个性化清单`0`中将该值更改为。

## 启用广告标记直通功能
<a name="enable-ad-marker-passthrough"></a>

您可以使用 AWS 管理控制台 或 AWS Command Line Interface (AWS CLI) 启用广告标记直通功能。

**使用控制台启用广告标记直通功能**

1. 打开 MediaTailor 控制台，网址为[https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/)。

1.  选择 “**新建配置****” 或 “编辑配置”**。

1. 在 **“高级设置”** 部分，从下拉菜单中选择 “**启用**”。

**要启用广告标记直通功能，请使用 AWS Command Line Interface ()AWS CLI**  
使用 [put-playback-configuration](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/put-playback-configuration.html) 命令。

# HLS 清单标签处理
<a name="manifest-hls-tags"></a>

本节介绍如何 AWS Elemental MediaTailor 管理个性化输出清单中的标签。

## EXT-X-CUE 标签
<a name="manifest-hls-tags-cue"></a>

MediaTailor 将输入清单中的`EXT-X-CUE-OUT``EXT-X-CUE-OUT-CONT`、和`EXT-X-CUE-IN`标签替换为输出清单中的`EXT-X-DISCONTINUITY`标签。`DISCONTINUITY` 标记标出以下边界：
+ 主要内容过渡到广告的边界
+ 一个广告转换到另一个广告的位置
+ 广告过渡回主内容的边界

## EXT-X-DATERANGE 标签
<a name="manifest-hls-tags-daterange"></a>

MediaTailor 将`EXT-X-DATERANGE`标签从输入清单传递到输出清单。 MediaTailor 还会插入与`EXT-X-DISCONTINUITY`标签对应的`DATERANGE`标签。`DISCONTINUITY` 标记标出以下边界：
+ 主要内容过渡到广告的边界
+ 一个广告转换到另一个广告的位置
+ 广告过渡回主内容的边界

## EXT-X-KEY 标签
<a name="manifest-hls-tags-key"></a>

MediaTailor 传递输入清单中的`EXT-X-KEY`标签。这些标记指示主要内容已加密。由于广告未加密，因此 MediaTailor 可在广告效用的开头插入 `EXT-X-KEY:METHOD=NONE`。当回放返回到主内容时，通过插入定义为加密类型的`METHOD`值的`EXT-X-KEY`标签来 MediaTailor 重新启用加密。

## 无法识别的标签
<a name="manifest-hls-tags-unknown"></a>

MediaTailor 将所有未知标签和自定义标签从输入清单传递到输出清单。

# HLS 清单示例
<a name="manifest-hls-example"></a>

以下部分提供了 HLS 源清单和个性化清单的示例。了解这些示例可以帮助您配置 MediaTailor工作流程并对其进行故障排除。

有关如何将查询参数应用于 HLS 清单和区段的信息，请参阅。[MediaTailor HLS 隐式会话初始化](manifest-query-parameters-hls-implicit-session-initialization.md)

## 了解 HLS 播放列表类型
<a name="hls-playlist-overview"></a>

HTTP 直播 (HLS) 使用两种主要的播放列表类型：

多变体播放列表  
多变体播放列表是列出内容所有可用格式副本的顶级索引文件。它包含对媒体播放列表的引用，但本身不包含任何媒体片段。该播放列表允许玩家根据网络条件、设备功能或用户偏好选择最合适的节目。  
这种播放列表类型在各种上下文中也有其他几个名称，包括主播放列表、主清单、主播放列表、主播放列表、索引文件或主 M3U8。  
在 MediaTailor 工作流程中，多变体播放列表是播放请求的入口点，也是广告个性化的起点。

媒体播放列表  
媒体播放列表包含特定内容再现（质量级别）的实际媒体片段信息。它包括播放单个格式副本所需的时间信息 URLs、片段和其他元数据。  
这种播放列表类型也称为媒体播放列表、子清单、区块列表、媒体 M3U8 或格式副本播放列表。  
在 MediaTailor 工作流程中，媒体播放列表会进行个性化设置，以按适当顺序包括内容细分和广告细分。

有关 HLS 播放列表类型的更多详细信息，请参阅[HLS 播放列表类型](hls-playlist-types.md)。

## HLS 起源清单示例
<a name="manifest-hls-ex-origin"></a>

以下示例显示了 HLS 从内容来源 AWS Elemental MediaTailor 收到的 HLS 多变体播放列表。

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-INF:BANDWIDTH=2665726,AVERAGE-BANDWIDTH=2526299,RESOLUTION=960x540,FRAME-RATE=29.970,CODECS="avc1.640029,mp4a.40.2",SUBTITLES="subtitles"
    index_1.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=3956044,AVERAGE-BANDWIDTH=3736264,RESOLUTION=1280x720,FRAME-RATE=29.970,CODECS="avc1.640029,mp4a.40.2",SUBTITLES="subtitles"
    index_2.m3u8
    #EXT-X-STREAM-INF:BANDWIDTH=995315,AVERAGE-BANDWIDTH=951107,RESOLUTION=640x360,FRAME-RATE=29.970,CODECS="avc1.4D401E,mp4a.40.2",SUBTITLES="subtitles"
    index_3.m3u8
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",NAME="caption_1",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="eng",URI="index_4_0.m3u8"
```

在这个多变体播放列表示例中：
+ 这些`#EXT-X-STREAM-INF`标签定义了具有不同分辨率和比特率的不同格式副本
+ 每个格式副本都引用一个媒体播放列表（例如`index_1.m3u8`）
+ 该`#EXT-X-MEDIA`标签定义了字幕曲目

以下示例显示了 HLS 从内容来源 AWS Elemental MediaTailor 收到的 HLS 媒体播放列表。本示例使用 `EXT-X-CUE-OUT` 和 `EXT-X-CUE-IN` 标签来描述广告效用机会。

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:7
    #EXT-X-MEDIA-SEQUENCE:8779957
    #EXTINF:6.006,
    index_1_8779957.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779958.ts?m=1566416212
    #EXTINF:5.372,
    index_1_8779959.ts?m=1566416212
    #EXT-OATCLS-SCTE35:/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXT-X-CUE-OUT:20.020
    #EXTINF:0.634,
    index_1_8779960.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=0.634,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779961.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=6.640,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779962.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=12.646,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:6.006,
    index_1_8779963.ts?m=1566416212
    #EXT-X-CUE-OUT-CONT:ElapsedTime=18.652,Duration=21,SCTE35=/DAlAAAAAsvhAP/wFAXwAAAGf+/+AdLfiP4AG3dAAAEBAQAAXytxmQ==
    #EXTINF:1.368,
    index_1_8779964.ts?m=1566416212
    #EXT-X-CUE-IN
    #EXTINF:4.638,
    index_1_8779965.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779966.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779967.ts?m=1566416212
    #EXTINF:6.006,
    index_1_8779968.ts?m=1566416212
```

在此媒体播放列表示例中：
+ `#EXTINF`标签指定每个片段的持续时间
+ 该`#EXT-X-CUE-OUT`标签标志着广告插播的开始
+ 这些`#EXT-X-CUE-OUT-CONT`标签提供有关正在进行的广告中断的信息
+ 该`#EXT-X-CUE-IN`标签标志着广告插播的结束

## HLS 个性化清单示例
<a name="manifest-hls-ex-personalized"></a>

以下示例显示了个性化的 HLS 多变体播放列表。 AWS Elemental MediaTailor 

```
#EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-MEDIA:LANGUAGE="eng",AUTOSELECT=YES,FORCED=NO,TYPE=SUBTITLES,URI="../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/3.m3u8",GROUP-ID="subtitles",DEFAULT=YES,NAME="caption_1"
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-INF:CODECS="avc1.640029,mp4a.40.2",AVERAGE-BANDWIDTH=2526299,RESOLUTION=960x540,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=2665726
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0.m3u8
    #EXT-X-STREAM-INF:CODECS="avc1.640029,mp4a.40.2",AVERAGE-BANDWIDTH=3736264,RESOLUTION=1280x720,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=3956044
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/1.m3u8
    #EXT-X-STREAM-INF:CODECS="avc1.4D401E,mp4a.40.2",AVERAGE-BANDWIDTH=951107,RESOLUTION=640x360,SUBTITLES="subtitles",FRAME-RATE=29.97,BANDWIDTH=995315
    ../../../manifest/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/2.m3u8
```

请注意如何 MediaTailor 修改媒体播放列表 URLs 以包含特定会话的信息，从而实现个性化广告插入。

以下示例显示了 AWS Elemental MediaTailor 个性化的媒体播放列表。

```
#EXTM3U
    #EXT-X-VERSION:6
    #EXT-X-TARGETDURATION:7
    #EXT-X-MEDIA-SEQUENCE:8779957
    #EXT-X-DISCONTINUITY-SEQUENCE:0
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779957.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779958.ts?m=1566416212
    #EXTINF:5.372,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779959.ts?m=1566416212
    #EXT-X-DISCONTINUITY
    #EXTINF:3.066667,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779960
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779961
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779962
    #EXTINF:3.0,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779963
    #EXTINF:2.966667,
    ../../../../segment/43f3e412052f2808dd84ea1da90e92e914edddee/external-canary-hls/ee1696a8-4f7f-4c4c-99de-9821131847e8/0/8779964
    #EXT-X-DISCONTINUITY
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779963.ts?m=1566416212
    #EXTINF:1.368,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779964.ts?m=1566416212
    #EXTINF:4.638,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779965.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779966.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779967.ts?m=1566416212
    #EXTINF:6.006,
    https://777788889999.mediapackage.us-west-2.amazonaws.com/out/v1/e309ffd02ba8498d864dcaacff7a5ad9/index_1_8779968.ts?m=1566416212
```

在此个性化媒体播放列表示例中：
+ MediaTailor 在内容区段之间插入了广告区段
+ 这些`#EXT-X-DISCONTINUITY`标签标记了内容和广告之间的过渡
+ 内容分段由源服务器提供（MediaPackage 在本例中）
+ 广告区段是从 MediaTailor的广告细分存储空间中提供的

## 个性化清单的主要区别
<a name="manifest-hls-key-differences"></a>

 MediaTailor 对HLS清单进行个性化设置时，它会进行一些重要的更改：

多变体播放列表更改  
+ 变体播放列表 URLs 被重写为指向包含会话信息的 MediaTailor-man URLs aged
+ 为了获得最佳播放效果，可以重新组织标签的顺序

变体播放列表更改  
+ 广告标记 (`EXT-X-CUE-OUT`,`EXT-X-CUE-IN`) 将替换为实际的广告细分
+ 在边界处 content/ad 添加不连续标记 (`EXT-X-DISCONTINUITY`)
+ 内容段 URLs 被重写为指向源或 CDN
+ 广告区段 URLs 已添加到 point to MediaTailor 的广告区段存储空间

了解这些更改可以帮助您解决 MediaTailor 工作流程中的问题，并确保正确配置 CDN 和播放器。

## 相关主题
<a name="manifest-hls-related-topics"></a>

有关 HLS 清单和的更多信息 MediaTailor，请参阅以下主题：
+ [HLS 播放列表类型](hls-playlist-types.md)-HLS 播放列表类型的详细说明
+ [使用 CDN 优化 MediaTailor 广告个性化和内容交付](integrating-cdn.md)-有关将 CDN 与以下内容一起使用的信息 MediaTailor
+ [MediaTailor 广告插入的工作原理](what-is-flow.md)- MediaTailor 广告插入工作原理概述