

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

# 实施 trick-play 轨道
<a name="trick-play-solutions"></a>

数字视频播放器使用 trick-Play 来模仿模拟播放器的某些功能，包括快进和快退功能。这些功能通常包括一个 trick-play *轨道*，这是为使用视频播放器的人提供的视觉提示。在中 AWS Elemental MediaLive，您可以将轨道资产包含在输出组中。该输出组的下游系统可以使用这些资源在其 trick-play 实施中实施视觉提示。

MediaLive 提供了两种包含这些资产的方法：
+ 符合 HLS 规范的 I-frame-only清单。
+ 符合映像媒体播放列表规范（版本 0.4）的 trick-play 轨道。

MediaLive 支持这些方法，如下所示：
+ 在 HLS 输出组中， MediaLive 支持这两种方法。
+ 在 MediaPackage 输出组中， MediaLive 支持通过 Image Media 播放列表规范进行特技播放

## 选择实施 trick-play 轨道
<a name="trick-play-choosing"></a>

您可以在同一个输出组中使用一种或两种 trick-play 方法。

在使用任何一种方法之前，请联系输出组的下游系统，了解他们如何实施 trick-play。了解以下事项：
+ 下游系统能否支持 trick-play 轨道？ 如果可以，遵循哪个 trick-play 规范？
+ 支持的实施是必需的还是可选的？ 这两种实施都在 HLS 清单中引入了特定的行。如果线路不存在，则下游系统将无法处理来自 MediaLive? 的输出

  下游系统很可能认为这两种实施都是可选的。
+ 如果您选择 I-frame-only清单方法，请确认下游系统是否支持符合 HLS 规范的该方法。如果下游系统有变体，则下游系统可能无法处理来自的输出 MediaLive。 MediaLive 不支持方法的自定义。
+ 如果您选择映像媒体播放列表方法，请根据映像媒体播放列表规范，确认下游系统支持该方法。如果下游系统有变体，则下游系统可能无法处理来自的输出 MediaLive。 MediaLive不支持实现的自定义。

**Topics**
+ [选择实施 trick-play 轨道](#trick-play-choosing)
+ [通过 I 帧实施 Trick-play 轨道](trick-play-i-frames.md)
+ [符合映像媒体播放列表规范的 trick-play 轨道](trick-play-roku.md)

# 通过 I 帧实施 Trick-play 轨道
<a name="trick-play-i-frames"></a>

在 MediaLive HLS 输出组中，您可以通过提供清单来支持 trick-play 曲目。 I-frame-only

## 该方法的工作原理
<a name="trick-play-iframe-how-it-works"></a>

创建 HLS 输出组时，您可以按照常规方式创建一个或多个视频输出。要想了解输出组的结构，请查看 [整理 HLS 输出组中的编码](design-hls-package.md) 中的图表。在输出组中，您可以启用该字段来创建符合 HLS 规范的 I-frame-only清单。

MediaLive 为每个编码生成两个子清单，一个用于按常规方式处理视频的清单，另一个是清单。 I-frame-only I-frame-only清单允许下游玩家识别要请求的特定视频帧，以构造特技播放曲目。因此，这种 trick-play 轨道方法不会在输出组中生成额外的编码。

每份 I-frame-only清单都包含以下内容：
+ 一个`#EXT-X-I-FRAMES-ONLY `标签，表示清单是 I-frame-only。
+ 多个 `#EXT-X-BYTERANGE ` 条目。每个条目确定一个 I 帧位置的位置。

## 设置
<a name="trick-play-iframe-procedure"></a>

你只需为整个 MediaLive HLS 输出组设置一次特技游戏曲目。

**注意**  
此部分中的信息假定您熟悉[创建通道](creating-channel-scratch.md)的常规步骤。

**设置 I-frame-only清单**

创建 HLS 输出组时需执行以下步骤。

1. **在 **HLS 输出组**的**清单和分段**中，对于 **仅 I 帧播放列表**，选择启用**。

1. [按照常规方法](creating-hls-output-group.md)设置输出组中的其余字段。[按照常规方法](creating-a-channel-step6.md)设置视频、音频以及字幕输出和编码。

# 符合映像媒体播放列表规范的 trick-play 轨道
<a name="trick-play-roku"></a>

在 MediaLive HLS 或 MediaPackage 输出组中，您可以通过提供符合 Image Media Playlist 规范（版本 0.4）的资源来支持特技播放曲目。 MediaLive 实现遵循规范中基于时间的方法。该规范位于此处：

[https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf](https://github.com/image-media-playlist/spec/blob/master/image_media_playlist_v0_4.pdf)

Roku 就是实施该规范的一个平台。

## 该方法的工作原理
<a name="trick-play-roku-how-it-works"></a>

创建输出组时，您可以按常规方式为视频、音频和字幕编码创建标准输出。有关说明输出组中编码结构的图表，请参阅[整理 HLS 输出组中的编码](design-hls-package.md)。

您还可以创建一个包含一个帧捕获编码的输出。编码是一系列 JPEG 文件，每个视频片段对应一个文件，这意味着捕获是按照视频编码的分段进行的。此编码是下游播放器可以用来实施 trick-play 轨道的资产。

MediaLive 以通常的方式创建主清单和子清单。主清单包含一个用于帧捕获编码的 `EXT-X-IMAGE-STREAM-INF` 标签。帧捕获编码的子清单包含 `EXT-X-IMAGES-ONLY` 标签。这些标签的内容和格式符合映像媒体播放列表规范。

## 设置
<a name="trick-play-roku-procedure"></a>

在输出组中设置 trick-play 轨道的方法是创建一个附加输出，其中包含由帧捕获组成的视频编码。一个输出组中最多可以添加三个帧捕获输出，在通道中最多可以添加三个帧捕获编码。

**注意**  
此部分中的信息假定您熟悉[创建通道](creating-channel-scratch.md)的常规步骤。

**在 HLS 输出组中设置帧捕获编码**

**要在 HLS 输出组中创建帧捕获编码，您需要创建一种特殊类型的输出并将其视频编解码器设置为帧捕获**。

1. 在 **HLS 输出组**的 **HLS 输出**中，选择**添加输出**，以添加其它输出。

1. 对于该输出，选择**设置**，然后在**输出设置**中，将 **HLS 设置**设置为**帧捕获 HLS**。

1. 在**流设置**中，选择**视频**并设置视频字段，包括：
   + **宽度和****高度** – 请联系您的下游系统，获取正确的值。如果您猜测这些值，下游播放器的体验可能不会达到最佳。
   + **编解码器设置** – 选择**帧捕获**。
   + **捕获间隔** – 不要更改此字段的值。将此字段留空，以便帧捕获使用默认间隔。

1. 选择**音频 1**，然后选择**移除音频**，这样容器就只有一个编码（视频编码）了。

**要在 MediaPackage 输出组中设置帧捕获编码**

要在 MediaPackage 输出组中创建帧捕获编码，请创建常规输出并将其视频编解码器设置为 **F** rame Capture。

1. 在**MediaPackage 输出组**的**MediaPackage 输出**中，选择**添加输出**以添加其他输出。

1. 对于该输出，选择**设置**，然后选择**流设置**。在 **Stream settings (流设置)** 中，选择 **Video (视频)**。

1. 在**编解码器设置**中，选择**帧捕获**。

1. 设置其它视频字段，包括：
   + **宽度和****高度** – 请联系您的下游系统，获取正确的值。如果您猜测这些值，下游播放器的体验可能不会达到最佳。
   + **捕获间隔** – 不要更改此字段的值。将此字段留空，以便帧捕获使用默认间隔。

1. 选择**音频 1**，然后选择**移除音频**，这样容器就只有一个编码（视频编码）了。

输出是 ABR 堆栈的一部分，与 HLS 或 MediaPackage输出组中的其他编码具有相同的目的地。