

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

# IMSC、SCC、SMPTE-TT、SRT、STL、TTML (sidecar) 输入字幕
<a name="sidecar-input"></a>

IMSC、SCC、SMPTE-TT、SRT、STL 和 TTML 是附加字幕格式。借助这些格式，您输入字幕需要以单独的文件提供。根据您的输出字幕设置，服务会以相同的格式将字幕传递到输出中，或将它们转换为另一种附加格式。

**附加字幕**  
在任何情况下，您都可以为每个输入字幕文件创建一个字幕选择器。

在**源文件**中，输入存储在 Amazon S3 或 HTTP (S) 服务器上的字幕输入文件的 URI。对于 Amazon S3 输入，您可以直接指定 URI，也可以选择**浏览**以从 Amazon S3 存储桶中选择。对于 HTTP 输入，提供指向您的输入视频文件的 URL。有关更多信息，请参阅 [HTTP 输入要求](http-input-requirements.md)。

**IMSC 字幕**  
MediaConvert 支持 IMSC 作为输入字幕格式，可以作为边车文件或作为 IMF 来源的一部分。如果您的输入 IMSC 字幕是 IMF 包的一部分，请参阅 [IMSC 输入字幕（作为 IMF 来源的一部分）](IMSC-in-MXF.md)。有关 IMSC 支持的限制，请参阅 [IMSC 要求](imsc-captions-support.md)。

**SMPTE-TT 字幕**  
您可以使用纯文本 SMPTE-TT 输入字幕，这些字幕文件中包含的字幕图像采用 base64 编码 (`smpte:image encoding="Base64"`)，以及使用字幕图像的外部引用 (`smpte:backgroundImage`)。

当您的字幕使用图像的外部引用时，这些图像必须与字幕文件位于相同的 Amazon S3 存储桶和文件夹中。例如，假设这是您的 SMPTE\$1TT 文件的 Amazon S3 路径：`amzn-s3-demo-bucket/mediaconvert-input/captions/my-captions-spanish.ttml`。然后，您必须将字幕文件引用的图像文件存储在此处：`s3://amzn-s3-demo-bucket/mediaconvert-input/captions/`。

**SRT 字幕**  
MediaConvert 支持采用 UTF-8 字符编码的 SRT 输入字幕。

**同步附加字幕和视频**  
为确保字幕与视频正确同步，请检查 **Video selector** (视频选择器) 部分中的 **Timecode source** (时间码源) 的值与字幕文件中的时间码是否匹配。例如，如果视频的嵌入式时间码从 01:00:00:00 开始，但是字幕文件的时间码从零开始，请将 **时间码源** 的默认值从 **嵌入式** 更改为 **Start at 0** (以 0 开始)。如果您的任务的其他方面阻止了这种情况，请使用 **Time delta**（时间增量）设置来调整字幕，如 [时间增量的使用案例](time-delta-use-cases.md) 中所述。

**注意**  
MediaConvert 根据字幕格式是基于时间码还是基于时间戳，以不同的方式处理字幕与视频的对齐方式。有关更多信息，请参阅 [输入时间码源和字幕对齐](about-input-timecode-source-and-captions-alignment.md)。

在**时间增量**输入正数或负数来修改字幕文件中的时间。默认情况下，时间增量以秒为单位。例如，输入 **15**以将字幕文件中的所有时间增加 15 秒。或者输入 **-5**，将字幕文件中的所有时间减去 5 秒。要改为以毫秒为单位进行指定，请将 **时间增量单位 **设置为 **毫秒**。

如果您为 **时间增量**输入的值会在视频之前或之后生成字幕，则这些字幕将不会出现在输出中。

**注意**  
从 SCC 转换为 SRT 时， MediaConvert 首先将您为**时间增量**设置的值四舍五入到最接近的输入帧。 MediaConvert 在计算输出 SRT 时序时使用此四舍五入的值。

**Topics**
+ [输入时间码源和字幕对齐](about-input-timecode-source-and-captions-alignment.md)
+ [时间增量的使用案例](time-delta-use-cases.md)
+ [将双 SCC 输入文件转换为嵌入式字幕](converting-dual-scc-input-files-to-embedded-captions.md)
+ [TTML 样式格方式](ttml-style-formatting.md)

# 输入时间码源和字幕对齐
<a name="about-input-timecode-source-and-captions-alignment"></a>

当您通过将输入 **Timecode source (时间码源)** 设置为 **Start at 0 (以 0 开始)** 或 **Specified start (指定的开始值)** 以调整输入时间轴时， MediaConvert 的行为就像您的输入已经嵌入了您指定的开始时间码。但是 MediaConvert 不会更改 sidecar 字幕文件中的时间码或时间戳。因此，对齐字幕的方式取决于您的字幕格式。

**基于时间码的附加格式（SCC、STL）**  
包括 SCC 和 STL 在内的某些字幕格式会通过时间码来定义字幕置于视频中的位置。使用这些格式，根据输入时间轴中每帧的时间码，将每个标题 MediaConvert 放在字幕文件中指定的帧上。要将您的字幕调整为在另一个不同时间开始，请使用 **Time delta**（时间增量）设置。有关更多信息，请参阅 [时间增量的使用案例](time-delta-use-cases.md)。

MediaConvert 根据您为输入 **Timecode 源设置选择的值来建立输入时间**轴。

例如，如果您的 SCC 文件指定第一个字幕应出现在 00:05:23:00 处，并且您将 **Timecode source (时间码源)** 设置为 **Specified start (指定的开始值)**，将 **Start timecode (开始时间码)** 设置为 00:04:00:00，则第一个字幕将显示在视频输出一分二十三秒处。如果将 **Timecode source (时间码源)** 设置为 **Specified start (指定的开始时间)**，并且将 **Start timecode (开始时间码)** 设置为 01:00:00:00，您将不会看到预期的字幕，因为根据输入的时间轴，00:05:23:00 发生在视频开始之前。

**基于时间戳的附加格式（SRT、SMI、TTML）**  
包括 SRT、SMI 和 TTML 在内的某些字幕格式允许通过时间戳定义字幕置于视频中的位置。使用这些字幕，根据距离视频开头的距离、时间来 MediaConvert 测量字幕的位置。无论字幕文件通过时间码还是时间戳指定放置都是如此。

因此，您的字幕会出现在字幕文件中指定的时间，而不会考虑视频时间码。例如，如果您的 SRT 文件指定了第一个字幕应出现在 00:05:23:00 或 00:05:23,000 处，并且您将 **Timecode source (时间码源)** 设置为 **Specified start (指定的开始值)**，将 **Start timecode (开始时间码)** 设置为 00:04:00:00，则第一个字幕仍然显示在视频输出五分二十三秒处。

要将您的字幕调整为在另一个不同时间开始，请使用 **Time delta**（时间增量）设置。有关更多信息，请参阅 [时间增量的使用案例](time-delta-use-cases.md)。

**在视频流中嵌入字幕的格式 (CEA/EIA-608, CEA/EIA-708)**  
有些字幕格式直接将字幕嵌入在视频帧或视频帧元数据中。使用这些字幕，无论时间码设置如何，都将字幕与其嵌入的帧一起 MediaConvert 保存。

# 时间增量的使用案例
<a name="time-delta-use-cases"></a>

如何使用 **Time delta (TimeDelta)** 取决于你要解决的问题和你正在使用的字幕格式。

 默认情况下，您可以以秒为单位指定时间增量。如果要改为以毫秒为单位进行指定，请将**时间增量单位 (TimeDeltaUnits) 设置为毫秒 (**MILLIS** ECONDS)**。

## 调整视频和字幕文件之间的不同时间码
<a name="adjusting-for-different-timecodes-between-video-and-captions-files"></a>

使用基于时间码的字幕格式（如 SCC 和 STL），字幕中的时间码可能相对于开始时间码（该时间码与视频中嵌入的开始时间码不同）。您可以使用 **Time delta**（时间增量）来调整差异。

**问题示例：**您的视频文件可能嵌入了从 00:05:00:00 开始的时间码。第一个需要字幕的对话实例可能是视频中一分钟的位置，时间码为 00:06:00:00。您的字幕文件可能会根据以下假设编写：您的视频时间码从 00:00:00:00 开始，第一个字幕从 00:01:00:00 开始。如果您不使用 **Time delta (时间增量)**， MediaConvert 不会包含此第一个字幕，因为它出现在视频开始之前。

**解决方案：**在字幕中增加五分钟时间。输入**300** **时间增量**。

## 同步视频和音频后调整字幕
<a name="adjusting-captions-after-sychronizing-video-and-audio"></a>

您基于时间码（SCC 或 STL）的字幕可能会与您的视频中嵌入的时间码对齐，但您可能需要使用输入 **Timecode source (时间码源)** 设置来对齐音频。此设置会创建视频和字幕之间的差值，您需要对它进行调整。对于基于时间戳的字幕格式（如 SRT、SMI 和 TTML），您不需要进行此调整。

有关使用输入 **Timecode source (时间码源) ** 时对齐字幕的更多信息，请参阅 [输入时间码源和字幕对齐](about-input-timecode-source-and-captions-alignment.md)。

**示例问题**：您的视频文件可能嵌入了从 00:05:00:00 开始的时间码，并且需要字幕的第一个对话实例可能是视频的一分钟，时间码为 00:06:00:00。您的字幕文件已正确编写以实现同步，第一个字幕从 00:06:00:00 开始。但是，您需要在输入中更改嵌入式字幕，以便与音频文件正确同步。因此，您将 **Timecode source (时间码源)** 设置为 **Start at Zero (从零开始)**。如果你不使用 T **ime delta**，则 MediaConvert 会在视频播放六分钟后在输出中添加第一个字幕。

**解决方案：**从字幕中减去五分钟时间。输入**-300** **时间增量**。

## 更正字幕同步中的轻微错误
<a name="correcting-slight-errors-in-captions-sync"></a>

对于任何类型的附加字幕格式，输入字幕文件中可能会出现某个小错误，导致字幕始终延迟或提前。

**示例问题**：您的视频包含从零开始的嵌入式字幕。需要字幕的第一个对话实例是 00:06:15:00，但字幕在屏幕上显示时有 3 秒的延迟，即 00:06:18:00。

**解决方案：**从字幕减去三秒时间。输入**-3** **时间增量**。

# 将双 SCC 输入文件转换为嵌入式字幕
<a name="converting-dual-scc-input-files-to-embedded-captions"></a>

如果要将两个 SCC 文件用作字幕输入，并将字幕作为两个输出字幕通道嵌入到输出视频流中，请根据此过程设置字幕。

**将双 SCC 转换为嵌入式字幕**

1. 设置两个输入字幕选择器。按照[创建输入字幕选择器](including-captions.md#create-input-caption-selectors)中的程序操作。按以下所示指定值：
   + 在每个字幕选择器中，对于 **源**，选择**辅助**。
   + 对于 **Source file (源文件)**，请在每个选择器中选择其中一个输入 SCC 文件。
   + 如果您要在输出中同时嵌入 608 和 708 字幕，请在两个字幕选择器中选择 **Upconvert**（向上转换），**进行强制 608 到 708 的向上转换**。

1. 设置您的输出中的字幕。按照[设置输出中的字幕](set-up-captions-in-outputs.md)中的程序操作。按照以下特定选项操作：
   + 在与要嵌入字幕的视频相同的输出中指定字幕。
   + 选择 **Add captions**（添加字幕）两次，在 **Encoding settings**（编码设置）部分中创建 **Captions 1**（字幕 1）和 **Captions 2**（字幕 2）选项卡。
   + 对于 **Captions source (字幕源)**，在每个字幕选项卡中，选择您在此过程的上一步中创建的字幕选择器之一。
   + 对于 **CC channel number (CC 通道编号)**，为不共享字段的每个字幕选项卡选择一个数字。例如，在 **Captions 1**（字幕 1）中，选择 **1** 作为 **CC channel number**（CC 频道号），在 **Captions 2**（字幕 2）中，选择 **3** 作为 **CC channel number**（CC 频道号）。

     请勿选择组合 1 和 2 或 3 和 4，因为这些通道对共享相同的字段。
   + 如果在此过程的上一步中选择了 **Upconvert (向上转换)**，则可以选择为 **708 service number (708 服务编号)** 指定服务编号。在输出中，每个字幕选项卡必须指定不同的服务编号。

     如果您执行向上转换，但没有为 **708 service number (708 服务编号)** 指定值，则服务将使用您为 **CC channel number (CC 通道编号)** 指定的值作为 708 服务编号。

# TTML 样式格方式
<a name="ttml-style-formatting"></a>

AWS Elemental MediaConvert 作业运行时读取输入字幕的样式格式。如果您发现输出的样式格式存在问题，我们建议您检查输入字幕的格式或将 **Style passthrough**（样式直通）设置为“启用”。以下主题提供了在 TTML 输入字幕中使用字体、可继承和不可继承的属性以及以及从右向左语言提供了指导。

**指定字体** 

MediaConvert 支持 [TTML2 W3C 推荐](https://www.w3.org/TR/ttml2/#style-value-generic-family-name)中列出的以下通用字体系列：
+ 默认
+ 等宽
+ 无衬线
+ 衬线
+ monospaceSansSerif
+ 等宽衬线
+ proportionalSansSerif
+ 比例衬线

为获得最佳效果，请在 TTML 输入标题中指定通用字体系列。如果您改为指定单个字体，则 MediaConvert 会将该字体映射到上面列出的通用字体系列之一。

**可继承和不可继承的属性** 

样式属性要么是可继承的，要么是不可继承的。[TTML2 W3C 建议](https://www.w3.org/TR/ttml2/#styling-attribute-vocabulary)列出了每个样式属性的*继承*值。

将不可继承的样式属性包含在您希望其适用的每个元素中。

例如，`tts:backgroundColor` 是一个不可继承的样式属性。如下所示，*hello* 的背景色为红色，而 *world* 没有背景色：

`<span tts:backgroundColor="red">hello<br/>world</span>` 

您可以通过使用单独的跨距来修正上述格式（每个跨度都有自己的样式属性），使 *hello world* 都具有红色背景色，如下例所示：

`<span><span tts:backgroundColor="red">hello</span> <br/> <span tts:backgroundColor="red">world</span></span>` 

**从右到左的语言** 

MediaConvert 在 TTML 中支持从左到右和从右到左的文本方向。

如果不指定文本方向，则 MediaConvert 使用从左到右。

要指定从右到左，请添加一个 `tts:direction="rtl"` 属性。如果您的文本混合了双向字符，则还应按照 [TTML2 W3C](https://www.w3.org/TR/ttml2/#style-attribute-direction) 建议中的说明添加一个`tts:unicodeBidi="embed"`属性。请注意，`tts:unicodeBidi` 是一个不可继承的属性。