

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

# 实现管道锁定
<a name="pipeline-lock"></a>

您可以配置 MediaLive 为使用管道锁定来同步输出。管道锁定适用于标准通道（有两个管道）和使用链接通道的单管道通道。流水线锁定可确保输出彼此之间帧精确。默认情况下，管道锁定处于启用状态。

启用管道锁定时。 MediaLive 尽最大努力锁定管道。当无法锁定管道时，处理会继续。无法锁定管道不被视为故障情况。

管道锁定的默认模式是管道锁定。您无法在适用的输出类型中禁用管道锁定。但是，您应该配置行为，确保它适合您的工作流。

**注意**  
您可能熟悉术语*输出锁定*。在中 MediaLive，使用的术语是*管道锁定*。无论使用什么术语，效果都一样：精确到帧的输出。

**管道锁定模式**

有两种输出锁定模式：
+ 管道锁定（默认）：将两条管道彼此锁定
+ 纪元锁定：使用 Unix 纪元作为参考来锁定管道。

**管道锁定方法**

使用管道锁定模式时，可以选择 MediaLive 用于同步管道的方法：
+ 源时间码（默认）： MediaLive 使用来自输入源的嵌入式时间码来同步管道。使用可靠的时间码时，此方法效果最佳。
+ 视频对齐： MediaLive 使用编码器之间的视觉签名比较来同步管道。此方法不需要嵌入式时间码，当您的输入源缺少时间码或时间码不可靠时，此方法非常有用。有关更多信息，请参阅 [视频对齐管道锁定的要求](pipeline-locking-verify-input.md#pipeline-locking-video-alignment-inputs)。

**适用的输出**

**源时间码**管道锁定仅适用于以下类型的输出：
+ HLS（直播模式）
+ MediaPackage
+ CMAF 摄取
+ Microsoft Smooth
+ 分段的 UDP 输出。您可能已经为分段输出配置了 UDP 输出组。要进行验证，请在 UDP 输出组中，选择**输出**，然后选择**网络设置**，然后选择**容器设置**。查找以 “*分割*” 一词开头的三个字段。

**视频对齐**管道锁定仅适用于以下类型的输出：
+ HLS（直播模式）
+ CMAF 摄取

该通道可以包含其他类型的输出，但 MediaLive 不会尝试锁定其输出。这意味着，在其他输出组中，无法保证两个管道的内容彼此精确到帧。

**Topics**
+ [输入与输出要求](pipeline-locking-verify-input.md)
+ [设置锁定](pipeline-locking-set-up.md)
+ [问题排查](pipeline-locking-tshoot.md)

# 输入与输出要求
<a name="pipeline-locking-verify-input"></a>

 MediaLive 为了锁定管道，信道中必须满足以下条件。当无法锁定管道时，处理会继续。只要所需条件再次生效，就会再次 MediaLive 开始锁定。

## 不支持 HLS 输入
<a name="pipeline-locking-verify-no-hls"></a>

通道不能包含 HLS 输入。

如果频道包含 HLS 输入，则 MediaLive 停止尝试锁定通道中的管道。即使在通道切换到另一个输入之后，管道锁定也不会恢复。

## 输入必须包含嵌入式时间码（源时间码方法）
<a name="pipeline-locking-embedded-tcode"></a>

使用源时间码管道锁定方法（默认）时，输入必须包含嵌入式时间码。这些规则适用于：
+ 使用源时间码方法时，输入必须具有嵌入式时间码。此要求适用于管道锁定模式和纪元锁定模式。
+ 对于纪元锁定模式，嵌入式时间码必须在 2 分钟的纪元时间内。如果时间码的关闭时间超过 2 分钟，则 MediaLive 认为源不符合管道锁定的要求。

MediaLive 持续探测电流源以获取嵌入式时间码。每当它没有检测到时间码时，它会暂时暂停尝试锁定管道。

## 视频对齐管道锁定的要求
<a name="pipeline-locking-video-alignment-inputs"></a>

当您使用视频对齐的管道锁定（**管道锁定方法**设置为 **VIDEO\$1ALLIGNMEN** T）时，不需要嵌入式时间码。

**输入要求**

某些输入类型与视频对齐不兼容：
+ 文件输入（MP4\$1FILE、TS\$1FILE）
+ HLS 输入（带有 HLS 内容的 URL\$1PULL）
+ RTMP\$1PULL 输入

当不兼容的输入类型处于活动状态时，视频对齐的管道锁定将在 “开环” 模式（已解锁）下运行，但会继续处理。不会引发验证错误，这支持某些输入可能不兼容的输入切换工作流程。

对于所有其他输入类型，视频对齐管道锁定使用视觉签名比较来同步管道。两个管道必须接收相同的视频内容才能成功同步。

## 帧速率要求
<a name="pipeline-locking-requirements-frame-rate"></a>

输入帧率（或多个帧率）和所需输出帧速率之间的转换必须*简单*，这意味着必须满足下面其中一种表述：
+ 输出帧速率必须是输入帧速率的整数倍。例如，输入帧速率可能为 45FPS，输出帧速率可能为 90FPS。
+ 输入帧速率必须是输出帧速率的整数倍。例如，输入帧速率可能为 60FPS，输出帧速率可能为 30FPS。

MediaLive 识别源输入切换到新输入时的帧速率，并确定是否适用简单转换。如果不是，则 MediaLive 停止锁定管道的尝试，直到通道切换到下一个输入。即使源输入帧速率在中间源中发生变化（因此适用简单的转换），也 MediaLive不会开始尝试再次锁定。

请注意，根据这些规则，帧速率可能是整数。例如，如果输入帧速率为 29.97FPS，输出帧速率为 59.94FPS。

以下是*复杂*帧速率的示例。如果以下某种组合适用于您的通道，您*无法*使用输入：
+ 不支持此功能：输入 FPS 为 59.4，输出 FPS 为 60。
+ 不支持此功能：输入 FPS 为 45，输出 FPS 为 60。
+ 不支持此功能：输入 FPS 为 29.97 FPS，输出 FPS 为 23.978。

## Epoch 锁定和 SCTE 35
<a name="pipeline-locking-requirements-scte35"></a>

在 HLS 或 MediaPackage 输出组中使用纪元锁定存在限制。

**HLS 输出组**

在使用纪元锁定的通道中，无法在 HLS 输出组中启用 SCTE 35 直通或清单装饰。您在保存通道时会遇到验证错误。您必须决定如何解决此冲突：
+ 不要在整个通道中启用纪元锁定：您可以在整个通道中[将模式设置为](pipeline-locking-set-up.md#pipeline-locking-mode)常规管道锁定，并在 HLS 输出组中保留 SCTE 35 直通。
+ 在 HLS 输出组中禁用 SCTE 35 直通：您可以保持纪元锁定，但在 HLS 输出组中禁用 SCTE 35 直通和清单修饰。您仍然可以在其他输出组中启用 SCTE 35 直通。

**MediaPackage 输出组**

对于 MediaPackage 输出组，如果输入包含 SCTE 35 消息，则约束条件适用：
+ 当频道中未启用纪元锁定时， MediaLive 会自动传递来自输入的任何 SCTE 35 消息，并自动启用清单装饰。
+ 启用纪元锁定后， MediaLive 会自动禁用输出组中的 SCTE 35 直通和清单装饰。 MediaPackage 

您应决定要保留的功能。您可以保留 SCTE 35 消息（在这种情况下，您必须在整个通道中禁用纪元锁定）。或者，您可以启用纪元锁定，但失去 SCTE 35 消息传递。请注意，将输出设置为 HLS 输出组没有任何好处，因为如上所述，类似的限制也适用。

# 设置锁定
<a name="pipeline-locking-set-up"></a>

默认情况下，标准频道中的管道锁定处于启用状态。你可以将其禁用。如果您决定将其保持启用状态，则应将该模式配置为在特定频道中使用。而且，您应该配置输出组，以确保 MediaLive 可以成功锁定管道。

**注意**  
此部分中的所有过程假定您熟悉通道创建的常规步骤，如[从头开始创建通道](creating-channel-scratch.md)中所述。

## 配置输出锁定和设置模式
<a name="pipeline-locking-mode"></a>

您可以按如下方式配置频道：
+ 锁定已禁用
+ 在管道锁定模式下启用锁定：将两条管道彼此锁定
+ 在纪元锁定模式下启用锁定：使用 Unix 纪元作为参考来锁定管道。

**配置管道锁定模式和方法**

1. 在您正在创建或编辑的频道中，在导航窗格中，选择**常规设置**。然后，选择**全局配置**。

1. 选择**启用全局配置**。

1. 在**输出锁定模式下**，选择**禁用**。**或者选择模式 — **PIPELINE\$1LOCKING 或 EPOCH\$1LOCKING**。**如需选项的详细信息，请选择字段旁边的**信息**链接。

1. **要配置管道锁定方法（仅在 **PIPELINE\$1LOCKING** 模式下可用），请展开其他设置。**

1. 在 “**输出锁定设置”** 中，找到 “**管道锁定方法**” 字段，然后选择同步方法：
   + **SOURCE\$1TIMECODE**（默认）：使用来自输入源的嵌入式时间码。需要具有可靠嵌入式时间码的输入。请参阅[输入必须包含嵌入式时间码（源时间码方法）](pipeline-locking-verify-input.md#pipeline-locking-embedded-tcode)。
   + **VIDEO\$1ALLIGN** MENT：使用编码器之间的视觉签名比较。不需要嵌入式时间码。[视频对齐管道锁定的要求](pipeline-locking-verify-input.md#pipeline-locking-video-alignment-inputs)有关输入兼容性，请参阅。

1. （可选）对于 CMAF Ingest 和 MediaPackage V2 输出组，您可以配置自定义 epoch。展开**其他设置**，然后在**输出锁定设置**中，找到**自定义纪元**字段并输入自定义纪元时间。

## 设置 HLS MediaPackage、或 Microsoft 平滑输出组
<a name="pipeline-locking-outputgroups"></a>

在 HLS 输出组或 Microsoft Smooth 输出组中，您必须为每个视频编码设置帧速率。

**设置管道锁定**

1. 在您创建的通道中，在导航窗格中选择 HLS 或 Microsoft Smooth 输出组。如有必要，请在每个输出中创建输出和视频编码。

1. 在每个包含视频编码的输出中，选择视频编码。在**编解码器设置**字段中，选择编解码器。此时将显示更多字段。

1. 选择**帧速率**部分并设置以下字段：
   + **帧速率控制**：我们建议您选择**指定**。选项 **Initialize\$1from\$1source** 不能很好地处理管道锁定。
   + **帧速率分子**和**帧速率分母**：为输出设置所需的分辨率。确保从输入帧速率到输出帧速率的转换符合[要求](pipeline-locking-verify-input.md)。

1. 重复操作，在每个输出中设置视频编码的帧速率。

## 设置 UDP 输出组
<a name="pipeline-locking-udp"></a>

在 UDP 输出组中，您必须获取关于分段标记的信息，并为每个视频编码的帧速率设置分段标记。

**设置管道锁定**

1. 您需要有关如何在输出中配置分段的信息。控制台上**创建通道**页面的字段中包含此信息。要显示字段，请在导航窗格中选择**存档组**。然后，选择输出和**网络设置**。选择以下每个字段旁边的**信息**链接：
   + **分段标记**
   + **分段时间**
   + **EBP 前瞻毫秒**
   + **片段时间**
   + **分段样式**
   + **EBP 放置**
   + **EBP 音频间隔**

1. 与下游系统的联系人交流，获取这些字段的建议值。

1. 在您创建的通道中，在导航窗格中选择存档输出组。如有必要，请创建输出。然后，在**输出设置**中，选择**网络设置**。此时将显示更多字段。

1. 选择**容器设置**，然后为第 1 步中列出的分段字段设置值。某些字段可能不适用于您选择的分段标记。

1. 如有必要，请在输出中创建视频编码，然后选择视频编码。在**编解码器设置**字段中，选择编解码器。此时将显示更多字段。

1. 选择**帧速率**部分并设置以下字段：
   + **帧速率控制**：我们建议您选择**指定**。选项 **Initialize\$1from\$1source** 不能很好地处理管道锁定。
   + **帧速率分子**和**帧速率分母**：为输出设置所需的帧速率。确保从输入帧速率到输出帧速率的转换符合[要求](pipeline-locking-verify-input.md)。

# 问题排查
<a name="pipeline-locking-tshoot"></a>

在 MediaLive 执行管道锁定的输出组中，管道锁定可确保管道彼此的帧精确。

如果您或下游系统的操作员注意到管道不同步，则可以执行以下故障排除。

## 一般故障排除
<a name="pipeline-locking-tshoot-general"></a>

以下故障排除步骤适用于所有管道锁定方法：
+ 确保 MediaLive [支持频道中输入类型的管道锁定](pipeline-locking-verify-input.md)。
+ 确保受影响的输出符合管道锁定的条件。管道锁定[仅适用于以下类型的输出](pipeline-lock.md)。
+ 确保您更改了**帧速率控制**，使其*不是 ***Initialize\$1from\$1source**。
+ 检查 “复**杂**” FRCPresent CloudWatch 指标。值为 1 表示 Medialive 正在执行复杂的帧速率转换，并且没有尝试锁定管道。管道锁定仅支持[简单的帧速率转换。](pipeline-locking-verify-input.md#pipeline-locking-requirements-frame-rate)
+ 如果源中的帧速率发生变化，则可能 MediaLive 无法在持续时间内执行流水线锁定，因为对于该段视频，没有简单的帧速率转换。

## 基于时间码的锁定疑难解答
<a name="pipeline-locking-tshoot-source-timecode"></a>

如果您使用的是纪元锁定，或者使用源时间码方法（默认）进行管道锁定，除了常规故障排除步骤外，还要检查以下内容：
+ 确保输入源具有嵌入式时间码。
+ 如果您选择了纪元锁定模式，请确保嵌入的时间码在 2 分钟的纪元时间内。
+ 如果输入源中没有嵌入时间码的部分，则 MediaLive停止执行精确帧的管道锁定。 MediaLive 自动回退到执行近似管道锁定。每当嵌入式时间码重新出现时，就会 MediaLive 恢复帧精确的管道锁定。
+ 确保您记得在 UDP 输出组中设置分段标记。对于其他支持的输出组，您无需关注此操作，因为它们的输出始终分段。
+ 确保您设置了下游系统期望的分段标记类型。

## 视频对齐管道锁定疑难解答
<a name="pipeline-locking-tshoot-video-alignment"></a>

如果您使用的是视频对齐管道锁定（**管道锁定方法**设置为 **VIDEO\$1** ALLIGNMENT），并且遇到同步问题，请除常规故障排除步骤外，还要检查以下内容：
+ 验证当前输入类型是否兼容。HLS、RTMP\$1PULL 和文件输入会导致视频对齐的管道锁定在开环模式（已解锁）下运行。请参阅[视频对齐管道锁定的要求](pipeline-locking-verify-input.md#pipeline-locking-video-alignment-inputs)。
+ 检查 **InputVideoAligned** CloudWatch 指标。值为 1 表示管道锁定已成功对齐管道之间的输入视频内容。如果值为 0：
  + 确保两个管道接收的视频内容相同。视频对齐的管道锁定会比较编码器之间的视觉签名，如果内容不同，则无法锁定。
+ 检查 **PipelinesLocked** CloudWatch 指标。视频对齐的管道锁定通过相同的指标报告其锁定状态。值为 1 表示同步成功。
+ 如果同步是间歇性的，请验证两条管道的网络连接是否稳定。视觉签名比较需要向两个编码器提供一致的视频。