

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

# 处理作业
<a name="working-with-jobs"></a>

一个作业负责对一个或多个媒体文件进行转码。除了创建作业之外，您还可以复制、导出、导入和取消作业。您还可以查看作业历史记录并搜索作业。

本章提供 step-by-step有关如何处理 MediaConvert 作业的说明。它还介绍了作业中的关键概念、基本示例作业设置以及有关适用于常见作业配置的重要输入和输出设置的详细信息。

**Topics**
+ [创建作业](creating-a-job.md)
+ [复制作业](create-new-job-from-completed-job.md)
+ [导出和导入作业](exporting-and-importing-jobs.md)
+ [查看您的作业历史记录](viewing-job-history.md)
+ [取消作业](canceling-a-job.md)
+ [教程：配置作业设置](setting-up-a-job.md)
+ [作业设置示例 JSONs](example-job-settings.md)
+ [输入设置](specifying-inputs.md)
+ [输出设置](output-settings.md)

# 创建作业
<a name="creating-a-job"></a>

要创建作业，您需要指定输入设置、输出设置和任何作业范围设置。有关详细 step-by-step步骤，请参见[教程：配置作业设置](setting-up-a-job.md)。以下过程简要概述了如何创建作业，请使用 AWS 管理控制台。

在创建作业时，您需要将其提交到队列以进行处理。处理过程从资源允许的队列中自动开始。有关资源分配的信息，请参阅[并行处理多个作业](working-with-on-demand-queues.md#queue-resources)。

**使用 MediaConvert 控制台创建作业**

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. 请选择**创建作业**。

1. 在**创建作业**页面上，提供转码说明和作业设置。有关更多信息，请参阅 [教程：配置作业设置](setting-up-a-job.md)。

   确保 AWS 区域 为任务和文件存储选择相同的选项。

1. 选择**创建**。

您也可以使用[模板](using-a-job-template.md)、[预设](using-a-preset-to-specify-a-job-output.md)、[复制作业](create-new-job-from-completed-job.md)或[作业设置 JSON](exporting-and-importing-jobs.md) 创建作业。

# 复制作业
<a name="create-new-job-from-completed-job"></a>

要创建与您之前运行的一个作业类似的作业，您可以从作业历史记录中复制一个作业。如果您想更改设置，也可以对其进行修改。

**使用 MediaConvert 控制台根据最近的任务创建作业**

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. 选择要复制的作业的**作业 ID**。

1. 选择**复制**。

1. 可选择修改任何作业设置。

   可能在作业之间更改的设置包括以下内容：输入文件位置、输出目标位置和输出名称修饰符。如果您为与您的账户不同的 AWS 账户 客户运行转码任务，则还必须在 **Job 设置**下更改 **IAM 角色**。

1. 在页面底部，选择**创建**。

# 导出和导入作业
<a name="exporting-and-importing-jobs"></a>

已完成的 MediaConvert 任务会在 “**工作**” 页面上保留三个月。如果要在运行任务超过三个月后根据已完成的任务运行新作业，请在任务完成后将其导出并保存。根据您运行的作业数量，导出然后导入作业可能比在列表中查找特定作业并进行复制要简单得多。

**使用 MediaConvert 控制台导出作业**

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. 选择要导出的作业的**作业 ID**。

1. 在**作业摘要**页面上，选择**查看 JSON**按钮。

1. 选择**复制**将 JSON 复制到剪贴板。

1. 粘贴到 JSON 编辑器中并保存。

**使用 MediaConvert 控制台导入作业**

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. 选择**导入作业**。

# 查看您的作业历史记录
<a name="viewing-job-history"></a>

您可以查看您在 AWS 账户 给定条件下使用自己创建的 MediaConvert 职位的最新历史记录 AWS 区域。三个月过后，该服务会自动删除该作业记录。

**作业**页面显示已成功完成的作业、已取消、当前正在处理中和正在队列中等待以及以错误结束的作业。您可以按状态和作业已发送到的队列筛选作业历史记录列表。也可以从列表中选择某个特定作业来查看该作业的设置。

------
#### [ Console  ]

使用 MediaConvert 控制台查看作业

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. （可选）通过从下拉列表中选择来按状态和队列筛选列表。

1. 要查看作业的详细信息，请选择一个**作业 ID**以查看其**作业摘要**页面。

------
#### [ CLI  ]

以下 `list-jobs` 示例列出了您最近创建的多达二十个作业。

```
aws mediaconvert list-jobs
```

有关如何使用 AWS CLI 取消任务的更多信息，请参阅 C [AWS LI 命令参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/mediaconvert/list-jobs.html)。

------

# 取消作业
<a name="canceling-a-job"></a>

以下过程说明了如何使用 AWS Elemental MediaConvert 控制台取消作业。

------
#### [ Console  ]

使用 MediaConvert 控制台取消作业

1. 在 MediaConvert 控制台中打开 “[作业](https://console.aws.amazon.com/mediaconvert/home#/jobs/list)” 页面。

1. 通过选择作业旁边的选项 (![\[Empty circle outline representing a placeholder or selection option.\]](http://docs.aws.amazon.com/zh_cn/mediaconvert/latest/ug/images/circle-icon.png)) 来选择要取消的作业的**作业 ID**。

1. 选择**取消作业**。

------
#### [ CLI  ]

以下 `cancel-job` 示例取消一个作业。

```
aws mediaconvert cancel-job \
	--id 1234567890123-efg456
```

有关如何使用 AWS CLI 取消任务的更多信息，请参阅 C [AWS LI 命令参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/mediaconvert/cancel-job.html)。

------

# 教程：配置作业设置
<a name="setting-up-a-job"></a>

本页提供有关如何在中配置作业的 step-by-step指导 MediaConvert。

要配置作业，请为服务定义要转码的输入文件，然后指定每个视频、音频和字幕媒体元素的源。源可能是主要输入文件的特定部分，也可能是一个单独的文件。接下来，指定要从输入中生成的输出文件和包的类型。 AWS Elemental MediaConvert 另请指定详细编码设置以生成所需的输出的质量和类型。

本教程介绍如何在中配置作业 MediaConvert 以将媒体文件转码为不同的格式。

**Topics**
+ [可选步骤：暂停队列](#optional-pause-the-queue)
+ [步骤 1：指定输入文件](#specify-input-settings)
+ [步骤 2：创建输入选择器](#create-selectors)
+ [步骤 3：创建输出组](#specify-output-groups)
+ [步骤 4：创建输出](#create-outputs)
+ [步骤 5：指定全局作业设置](#specify-global-job-settings)

## 可选步骤：暂停队列
<a name="optional-pause-the-queue"></a>

如果您是新客户或正在尝试使用 MediaConvert 控制台，则可以暂停队列，以免在准备就绪之前意外开始工作。有关队列的更多信息，请参阅[队列](working-with-queues.md)。

使用暂停或重新激活按需队列 AWS 管理控制台

1. 在 MediaConvert 控制台中打开 “[队列](https://console.aws.amazon.com/mediaconvert/home/#/queues/list)” 页面。

1. 在**队列**页面上，选择要暂停或重新激活的队列的名称。

1. 在队列的页面上，选择**编辑队列**按钮。

1. 在**编辑队列**页面上，为**状态**选择**暂停**或**活动**。

1. 选择**保存队列**。

## 步骤 1：指定输入文件
<a name="specify-input-settings"></a>

设置 MediaConvert 作业的第一部分是指定一个或多个输入文件的位置。

**指定输入的位置**

1. 在 [https://console.aws.amazon.com/medi](https://console.aws.amazon.com/mediaconvert) a MediaConvert Convert 上打开控制台。

1. 在**创建作业**页面左侧的**作业**窗格中，选择**输入 1**。

1. 在**输入 1** 窗格中，提供指向存储在 Amazon S3 或 HTTP(S) 服务器中的视频输入文件的 URI。对于 Amazon S3 输入，您可以直接指定 URI，也可以选择**浏览**以从 Amazon S3 存储桶中选择。对于 HTTP 输入，提供指向您的输入视频文件的 URL。有关更多信息，请参阅 [HTTP 输入要求](http-input-requirements.md)。
**注意**  
如果您的输入音频或字幕位于单独的文件中，请不要为它们创建单独的输入。在此过程中，您稍后在音频和字幕选择器中指定这些文件。

1. 要将多个输入文件连接到单个资产（输入拼接）中，请将另一个输入添加到作业。为此，请在 **Job (作业)** 窗格的 **Inputs (输入)** 部分中，选择 **Add (添加)**。

   对于具有多个输入文件的作业，通过按照您在作业中指定的顺序连接输入来 MediaConvert 创建输出。一个作业中最多可以包含 150 个输入。
**提示**  
您可以对部分输入进行转码。有关更多信息，请参阅 [输入设置](specifying-inputs.md)。

## 步骤 2：为视频、音频和字幕创建输入选择器
<a name="create-selectors"></a>

接下来，创建输入选择器以标记输入中的将用于输出的视频、音频和字幕元素。这将标记每个输入元素，以便您在设置输出时能够指向相应的输入元素。在设置输入选择器时，还将为服务提供有关数据查找位置和数据解释方式的信息。

**设置输入选择器**

1. 在 **Video selector (视频选择器)** 部分中，指定适用于您的作业的字段值。

   您无需创建视频选择器，因为在您开始设置作业时 MediaConvert 会自动创建视频选择器。但是，此服务不会自动检测有关视频源的信息。您可以在 **Video selector (视频选择器)** 字段中提供此信息。如果将这些设置保持默认状态，将创建一个有效的作业。有关各个设置的更多信息，请选择相应设置旁边的**信息**链接。
**注意**  
 MediaConvert 不支持具有多个视频流的输入，例如Quad 4k。每个输入只能有一个视频选择器。因此，控制台上没有**添加视频选择器**按钮。

1. 在 **Audio selectors (音频选择器)** 部分中的 **Audio selector 1 (音频选择器 1)** 下，指定有关主要音频资产的信息。由于服务将在您设置作业时自动创建第一个音频选择器，因此，您无需创建音频选择器 1。
**注意**  
*音频资产* 通常是同时位于一个音轨中的对话、背景声音和音乐。音轨通常包含多个声道。例如，Dolby 5.1 声音在每个音轨具有六个声道。

   1. 对于 **Selector type (选择器类型)**，请选择标识您的音频资产的方式。通常，通过音轨标识。如果您使用的是 HLS 输入，并且想要选择备用音频呈现，请参阅 [备用 HLS 音频渲染要求](using-alternate-audio-renditions.md)。

   1. 提供您的主要音频资产的标识符（即音轨编号、PID 或语言代码）。您的主要音频资产可能是音轨 1。
**注意**  
对于大多数使用案例，为每个输入选择器关联一个输入音轨。如果您的使用案例需要将多个音轨合并为一个音轨，或将多个音轨合并为一个流式处理包呈现，请通过键入一个逗号分隔的列表来将多个输入音轨合并为一个音频选择器。有关合并音轨的更多信息，请参阅[设置音频轨道和音频选择器](more-about-audio-tracks-selectors.md)

   1. 如果您的音频与视频位于单独的文件中，请选择**外部文件**滑块切换元素，并提供指向存储在 Amazon S3 中或 HTTP(S) 服务器上的音频输入文件的 URI。对于 Amazon S3 输入，您可以直接指定 URI，也可以选择**浏览**以从 Amazon S3 存储桶中选择。对于 HTTP 输入，提供指向您的输入视频文件的 URL。有关更多信息，请参阅 [HTTP 输入要求](http-input-requirements.md)。

1. 如果您还有其他音频资产，例如多语言轨道，请选择**添加音频选择器**。然后提供此过程上一步所述的下一项资产的信息。

1. 在**字幕选择器**部分中，选择**添加字幕选择器**。这将为您计划在输出中使用的任何字幕组创建输入字幕选择器。有关为您的作业设置字幕的更多信息，请参阅[设置输入字幕](including-captions.md)。

## 步骤 3：创建输出组
<a name="specify-output-groups"></a>

在指定输入后，请创建输出组。设置输出组时所做的选择将影响作业生成的资产的类型以及可播放资产的设备。

您可以使用 MediaConvert 创建大致分为两类的媒体资产：
+ **ABR 流式处理包**。您可以创建自适应比特率 (ABR) 包，以便最终查看者在观看时可以逐步下载资产。根据您设置输出的方式，最终查看者的设备可通过下载更高或更低质量的分段来适应可用带宽的变化。ABR 包也称为 ABR *堆栈*，因为它们由一堆视频、音频或字幕组件组成。堆栈或包中的每个组件均称为*呈现*。
+ **独立文件**。您可以创建这些文件并将其托管一个位置，以便最终查看者能够一次下载整个文件并查看此文件。您也可以创建独立文件，然后将其发送到下游系统以进行打包和分配。

**创建输出组**

1. 在 **Job (作业)** 窗格的 **Output groups (输出组)** 部分中，选择 **Add (添加)**。

1. 选择一种输出组类型，然后选择 **Select** (选择)。

   为要创建的所有独立文件创建一个文件输出组。为要创建的每个 ABR 流式处理包创建一个 ABR 流式处理输出组。有关在作业中包含哪些 ABR 流式处理输出组的指南，请参阅[选择您的 ABR 流式处理输出组](choosing-your-streaming-output-groups.md)。

1. （可选）对于 **Custom group name (自定义组名称)**，为您的组输入名称。您在此处提供的任何名称都会显示在控制台的 **Output groups (输出组)** 部分中，但不会影响您的输出。

1. 对于**目标**，指定转码服务将在其中存储输出文件的 Amazon S3 位置的 URI。可以直接指定 URI，也可以选择**浏览**以从 Amazon S3 存储桶中选择。
**注意**  
您可以选择将一个基本名称附加到目标 URI 后面。为了创建最终资产的文件名，转码服务将使用此基本名称与您在各个输出设置中提供的任何名称修饰符。  
如果未在 URI 中提供基本名称，则转码服务将从输入 1 文件名中去除扩展名来生成基本名称。

1. 指定适用于整个输出组的任何其他设置的值。这些设置因您选择的输出组的类型而异。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

## 步骤 4：创建输出
<a name="create-outputs"></a>

创建输出组之后，请在每个组中设置您的输出。每个输出组的输出数量取决于输出组类型，如下所示：
+ 对于 **File (文件)** 输出组，在一个输出中包含媒体资产的所有元素。这包括您在单独的文件中提供的任何音频或字幕。
+ 对于 ABR 流式处理输出组—**CMAF**、**Apple HLS**、**DASH ISO** 和 **Microsoft 平滑流**—为每个媒体元素创建一个单独的输出。也就是说，每种视频分辨率一个输出，每个音轨一个输出，每种字幕语言一个输出。

从下面的过程中，选择一个对应于您在[步骤 3：创建输出组](#specify-output-groups)中创建的输出组类型的过程。

### 在 ABR 流式处理输出组中创建输出
<a name="create-outputs-in-abr-streaming-output-groups"></a>

对于您在[步骤 3：创建输出组](#specify-output-groups)中设置的每个 ABR 流式处理输出组，为要包含在 ABR 流式处理包中的每个媒体元素创建并设置一个输出。

#### 创建视频 ABR 流式处理输出
<a name="video-abr-streaming-outputs"></a>

对于输出组中包含的每个视频输出， MediaConvert 创建一个视频格式副本或一组分段的视频文件。流式处理包中的多个视频呈现（具有不同的分辨率和视频质量）允许最终查看者的设备根据可用带宽调整视频质量。

**注意**  
尽管作业只有一个视频*输入* 选择器，但每个 ABR 流式处理输出组通常有多个视频*输出*。

**创建和设置视频 ABR 流式处理输出**

1. 在**创建作业**页面左侧的**作业**窗格中，在**输出组**下方，在要将输出添加到的 **CMAF**、**Apple HLS**、**DASH ISO** 或 **Microsoft 平滑流**输出组下，选择**输出 1**。

   创建输出组时， MediaConvert 会自动使用输出 1 填充输出组。无需明确创建第一个输出。

1. 在 **Output settings (输出设置)** 窗格中，对于 **Name modifier (名称修饰符)**，输入一个值。

   MediaConvert 将名称修饰符附加到为该输出创建的文件名中。输入一个名称标识符，该标识符可让您轻松标识哪些文件来自哪些输出（如 `-video-hi-res`）。

1. 如果在 **Preset** (预设) 下面列出的某个预定义的设置组适用于您的工作流，请从列表中选择该组。如果使用预设，请跳过此过程的下一步骤。

1. 指定视频设置，如下所示：

   1. 在 **Output settings (输出设置)** 部分中，为任何其余常规设置指定值。根据输出组类型，这些设置可能包括传输流设置或其他容器设置。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

   1. 在 **Stream settings (流设置)** 部分中，为视频编码指定值。默认情况下将选择视频设置，因此，您无需显式选择此组设置。

      每个作业只有一个输入视频选择器，因此，您在设置视频输出时无需显式选择输入视频选择器。

   有关各个设置的更多信息，请选择控制台上的 **Info (信息)** 链接。

1. 如果默认情况下您的输出包含一组音频设置，请将其删除，如下所示：

   1. 在 **Stream settings (流设置)** 部分中，选择 **Audio 1 (音频 1)**。

   1. 选择 **Remove audio (删除音频)**。

1. 如果您需要 ABR 流式处理包中的多个视频呈现，请重复此过程的前述步骤。这将为每个视频创建额外的视频输出。

#### 创建音频 ABR 流式处理输出
<a name="audio-abr-streaming-outputs"></a>

对于输出组中包含的每个音频输出， MediaConvert 创建一个音频格式副本或一组分段的视频文件。包含多个音频呈现的最常见原因是，提供多个语言选项。如果您仅提供一种语言，则可能只需要一个音频输出。

**注意**  
对于 AAC 流式处理输出，初始段的持续时间要比其他段长。这是因为，对于 AAC，初始片段必须在片段的可听部分之前包含静音 AAC 前置样本。 MediaConvert 在时间戳中考虑了这些额外的样本，因此音频可以正确播放。

**创建和设置音频 ABR 流式处理输出**

1. 如果您正在使用 CMAF 输出组，请跳过此步骤。将为您创建第一个音频输出。

   为第一个音轨创建输出。通常，一个音轨对应于一种语言。

   1. 在 **Job (作业)** 窗格中，选择您正使用的输出组。

   1. 在 **Outputs (输出)** 窗格中，选择 **Add output (添加输出)**。

   1. 选择您刚刚创建的输出。

   1. 如果默认情况下您的输出包含一组视频设置，请选择 **Remove video (删除视频)** 以将其删除。这将使设置的**音频 1** 组继续显示。

1. 在 **Output settings (输出设置)** 窗格中，对于 **Name modifier (名称修饰符)**，输入一个值。

   MediaConvert 将名称修饰符附加到为该输出创建的文件名中。输入一个名称标识符，该标识符可让您轻松标识哪些文件来自哪些输出（如 `-audio-english`）。

1. 如果在 **Preset** (预设) 下面列出的某个预定义的设置组适用于您的工作流，请从列表中选择该组。如果使用预设，请跳过此过程的下一步骤。

1. 指定音频设置，如下所示：

   1. 在 **Output settings (输出设置)** 部分中，为任何其余常规设置指定值。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

   1. 在 **Stream settings (流设置)** 下，对于 **Audio source (音频源)**，选择您在[步骤 2：为视频、音频和字幕创建输入选择器](#create-selectors)中创建的音频选择器之一。

   1. 在**流设置**部分中，为音频编码指定值。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

1. 如果您有要包含在 ABR 流式处理包中的其他音频资产，请为其中的每个资产创建一个输出，如下所示：

   1. 在 **Job (作业)** 窗格中，选择您正使用的输出组。

   1. 在 **Outputs (输出)** 窗格中，选择 **Add output (添加输出)**。

   1. 选择您刚刚创建的输出。

   1. 如果默认情况下您的输出包含一组视频设置，请选择 **Remove video (删除视频)** 以将其删除。这将使设置的**音频 1** 组继续显示。

   1. 设置输出，如此过程的步骤 2 到步骤 4 中所述。

#### 创建 ABR 流式处理输出的字幕
<a name="captions-abr-streaming-outputs"></a>

设置字幕可能很复杂。有关详细信息，请参阅 [设置输入字幕](including-captions.md)。有关基本说明，请完成以下过程。

**创建和设置 ABR 流式处理输出的字幕**

1. 为第一组字幕创建输出。通常，一组字幕对应于一种语言。

   1. 在 **Job (作业)** 窗格中，选择您正使用的输出组。

   1. 在 **Outputs (输出)** 窗格中，选择 **Add output (添加输出)**。

   1. 选择您刚刚创建的输出。

   1. 如果默认情况下您的输出包含视频和音频设置组，请选择 **Remove video (删除视频)** 和 **Remove audio (删除音频)** 以将其删除。

   1. 选择 **Add captions (添加字幕)** 以显示一组字幕设置。

1. 在 **Output settings (输出设置)** 窗格中，对于 **Name modifier (名称修饰符)**，输入一个值。

   MediaConvert 将名称修饰符附加到为该输出创建的文件名中。输入一个名称标识符，该标识符可让您轻松标识哪些文件来自哪些输出（如 `-captions-english`）。

1. 指定字幕设置，如下所示：

   1. 在 **Output settings (输出设置)** 部分中，为任何其余常规设置指定值。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

   1. 在 **Stream settings (流设置)** 下，对于 **Captions source (字幕源)**，选择您在[步骤 2：为视频、音频和字幕创建输入选择器](#create-selectors)中创建的字幕选择器之一。

   1. 在 **Stream settings (流设置)** 部分中，为其余字幕设置指定值。

#### 创建附加清单
<a name="create-additional-manifests"></a>

默认情况下， MediaConvert 会为您的、CMAFDASH ISOApple HLS、和Microsoft Smooth Streaming输出组生成一个多变体播放列表。此默认清单引用输出组中的所有输出。

或者，您可以创建其他多变播放列表，这些播放列表仅引用输出组中部分输出。例如，您可能希望为不具备包含 HDR 的订阅的查看者创建一个不包含 HDR 输出的清单。

**注意**  
对于 CMAF 输出组，如果您保留**写入 HLS 清单和**写入 DASH 清单****的默认启用值，则会以这两种格式 MediaConvert 创建其他清单。如果禁用这些设置中的任一设置，则 MediaConvert 不会以该格式创建附加清单。

**创建附加清单**

1. 在**创建作业**页面左侧的**作业**窗格中，选择要为其创建附加清单的输出组。

1. 在右侧的 **Additional manifests (附加清单)** 部分中，选择 **Add manifest (添加清单)**。

1. 对于**清单名称修饰符**，请在扩展名之前输入要添加到清单文件名末尾的文本。此设置是必需的，因为它会为每个清单提供不同的文件名。

1. 对于 **Select outputs (选择输出)**，选择您希望清单引用的输出。

1. 重复这些步骤以创建最多 10 个附加清单。每个附加清单必须具有不同的 **Manifest name modifier (清单名称修饰符)** 值。

### 在文件输出组中创建和设置输出
<a name="create-outputs-in-file-output-groups"></a>

对于文件输出组，服务创建的每个资产均对应于一个输出而不是一个输出组。每个资产包括所有视频、音频和字幕元素。因此，通过先创建输出，然后设置所有输出选择器来进行设置是最简单的。

#### 创建文件输出
<a name="create-file-outputs"></a>

如果您在[步骤 3：创建输出组](#specify-output-groups)中创建了一个文件输出组，请在您要创建的每个独立文件的文件输出组中创建和设置输出。

**在文件输出组中创建输出**

1. 创建输出组时， MediaConvert 会自动使用输出 1 填充输出组，因此您无需显式创建它。如果您仅创建一个独立文件，请跳过此过程的其余步骤。

1. 如果您要创建多个独立文件，请创建其他输出，如下所示：

   1. 在**创建作业**页面上左侧的**作业**窗格中，在**输出组**下方选择**文件组**。

   1. 在 **Outputs (输出)** 窗格中，选择 **Add output (添加输出)**。

#### 在文件输出中设置输出选择器
<a name="set-up-output-selectors-in-file-outputs"></a>

接下来，为您刚刚创建的每个文件输出设置输出选择器。

**在文件输出中设置输出选择器**

1. 在**创建作业**页面上左侧的**作业**窗格中，在**输出组**下的**文件组**下方选择**输出 1**。

1. 在 **Output settings (输出设置)** 窗格中，对于 **Name modifier (名称修饰符)**，输入一个值。

   MediaConvert 将名称修饰符附加到为该输出创建的文件名中。输入一个名称修饰符，该修饰符可标识哪些文件来自哪些输出（如 `-standalone-hi-res`）。

1. 如果在 **Preset** (预设) 下面列出的某个预定义的设置组适用于您的工作流，请从列表中选择该组。如果使用预设，请跳过此过程的步骤 4。

   输出预设可包含最多一组视频、音频和字幕设置。因此，如果您的独立输出文件包含多个音频或字幕资产，则您不能使用预设。如果您无法在输出中使用预设，但要使用预设设置作为起点，请选择预设，然后从 **Preset (预设)** 下拉列表中选择 **No preset (无预设)**。这将使用预设中的相同设置预填充输出。

1. 指定输出设置，如下所示：

   1. 在 **Output settings (输出设置)** 部分中，为任何其余常规设置指定值。这些设置因您选择的容器而异。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

   1. 在 **Stream settings (流设置)** 部分中，为视频编码指定值。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。
**注意**  
默认情况下，将选择视频设置选项卡，因此，您不需要明确选择该组设置。每个作业只有一个输入视频选择器，因此，您在设置视频输出时无需显式选择输入视频选择器。

   1. 选择 **Audio 1 (音频 1)** 以显示第一个音频资产的编码设置组。**Audio 1 (音频 1)** 位于 **Stream settings (流设置)** 窗格的左侧（位于 **Video (视频)** 下）。

   1. 在 **Stream settings (流设置)** 下，对于 **Audio source (音频源)**，选择您在[步骤 2：为视频、音频和字幕创建输入选择器](#create-selectors)中创建的音频选择器之一。

   1. 在**流设置**部分中，为音频编码指定值。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

   1. 要在输出中包含字幕，请选择**添加字幕**。这将显示一组字幕设置。有关设置字幕的更多信息，请参阅[设置输入字幕](including-captions.md)。

## 步骤 5：指定全局作业设置
<a name="specify-global-job-settings"></a>

全局作业设置适用于作业创建的每个输出。

如果您的作业纳入了来自输入的单个文件中提供的音频或字幕，或如果您使用叠加图像（图像插入器）功能，则正确设定这些设置尤其重要。

有三个不同的时间码设置组。全局作业时间码配置是这三个组中的一个组。有关不同的时间码设置集以及如何 MediaConvert 管理时间码的更多信息，请参阅。[设置时间码](setting-up-timecode.md)

**指定全局作业设置**

1. 在**作业**窗格的**作业设置**部分中，选择 **AWS 集成**。

1. 对于 **IAM 角色**，请选择有权访问保存输入和输出文件的 Amazon S3 存储桶的 IAM 角色。IAM 角色必须与建立信任关系 MediaConvert。有关创建此角色的信息，请参阅 [设置 IAM 权限](iam-role.md)。

1. （可选）在 **Timecode configuration (时间码配置)** 窗格中指定作业范围的时间码设置。

1. 指定其他作业设置的值并启用全局处理器。有关各个设置的更多信息，请选择相应设置旁边的 **Info (信息)** 链接。

# 作业设置示例 JSONs
<a name="example-job-settings"></a>

这些示例中的任务设置表示您可以运行的最简单的有效任务。它们非常适合尝试该服务。如果您想要执行更复杂的转码或创建不同的输出，请使用控制台设置任务并生成 JSON 任务规范。若要执行此操作，在左侧的 **作业** 窗格中的 **作业设置** 下，选择 **显示作业 JSON**。

有关以编程方式提交作业的更多信息，请参阅《*AWS Elemental MediaConvert API 参考*》的介绍性主题之一：
+ [开始 AWS Elemental MediaConvert 使用 AWS SDKs 或 AWS CLI](https://docs.aws.amazon.com/mediaconvert/latest/apireference/custom-endpoints.html)
+ [开始 AWS Elemental MediaConvert 使用 API](https://docs.aws.amazon.com/mediaconvert/latest/apireference/getting-started.html)

**重要**  
我们建议您使用 MediaConvert 控制台生成生产 JSON 作业规范。  
您的任务规格必须符合转码引擎的验证。转码引擎验证表示设置组之间的复杂依赖关系以及转码设置和输入文件属性之间的依赖关系。 MediaConvert 控制台充当交互式作业生成器，可轻松创建有效的作业 JSON 规范。您可以使用[作业模板](using-a-job-template.md)和[输出预设](using-a-preset-to-specify-a-job-output.md)快速入门。

要使用以下示例，请将以下占位符值替换为实际值：
+ 角色 ARN
+ s3://amzn-s3-demo-bucket
+ s3://amzn-s3-demo-bucket1

**Topics**
+ [示例： MP4 输出](#mp4-example)
+ [示例：ABR 输出](#HLS-ABR-example)
+ [示例：自动化 ABR](#auto-abr-example)

## 示例： MP4 输出
<a name="mp4-example"></a>

```
{
  "UserMetadata": {},
  "Role": "ROLE ARN",
  "Settings": {
    "OutputGroups": [
      {
        "Name": "File Group",
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "s3://amzn-s3-demo-bucket1/out"
          }
        },
        "Outputs": [
          {
            "VideoDescription": {
              "ScalingBehavior": "DEFAULT",
              "TimecodeInsertion": "DISABLED",
              "AntiAlias": "ENABLED",
              "Sharpness": 50,
              "CodecSettings": {
                "Codec": "H_264",
                "H264Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "NumberReferenceFrames": 3,
                  "Syntax": "DEFAULT",
                  "Softness": 0,
                  "GopClosedCadence": 1,
                  "GopSize": 48,
                  "Slices": 1,
                  "GopBReference": "DISABLED",
                  "SlowPal": "DISABLED",
                  "SpatialAdaptiveQuantization": "ENABLED",
                  "TemporalAdaptiveQuantization": "ENABLED",
                  "FlickerAdaptiveQuantization": "DISABLED",
                  "EntropyEncoding": "CABAC",
                  "Bitrate": 4500000,
                  "FramerateControl": "SPECIFIED",
                  "RateControlMode": "CBR",
                  "CodecProfile": "HIGH",
                  "Telecine": "NONE",
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "HIGH",
                  "CodecLevel": "LEVEL_4_1",
                  "FieldEncoding": "PAFF",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "SINGLE_PASS_HQ",
                  "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                  "UnregisteredSeiTimecode": "DISABLED",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "NumberBFramesBetweenReferenceFrames": 3,
                  "RepeatPps": "DISABLED",
                  "HrdBufferSize": 9000000,
                  "HrdBufferInitialFillPercentage": 90,
                  "FramerateNumerator": 24000,
                  "FramerateDenominator": 1001
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT",
              "Width": 1920,
              "Height": 1080
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL",
                    "Bitrate": 96000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "RawFormat": "NONE",
                    "SampleRate": 48000,
                    "Specification": "MPEG4"
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "ContainerSettings": {
              "Container": "MP4",
              "Mp4Settings": {
                "CslgAtom": "INCLUDE",
                "FreeSpaceBox": "EXCLUDE",
                "MoovPlacement": "PROGRESSIVE_DOWNLOAD"
              }
            }
          }
        ]
      }
    ],
    "AdAvailOffset": 0,
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Tracks": [
              1
            ],
            "Offset": 0,
            "DefaultSelection": "DEFAULT",
            "SelectorType": "TRACK",
            "ProgramSelection": 1
          },
          "Audio Selector 2": {
            "Tracks": [
              2
            ],
            "Offset": 0,
            "DefaultSelection": "NOT_DEFAULT",
            "SelectorType": "TRACK",
            "ProgramSelection": 1
          }
        },
        "VideoSelector": {
          "ColorSpace": "FOLLOW"
        },
        "FilterEnable": "AUTO",
        "PsiControl": "USE_PSI",
        "FilterStrength": 0,
        "DeblockFilter": "DISABLED",
        "DenoiseFilter": "DISABLED",
        "TimecodeSource": "EMBEDDED",
        "FileInput": "s3://amzn-s3-demo-bucket"
      }
    ]
  }
}
```



## 示例：ABR 输出
<a name="HLS-ABR-example"></a>

```
{
  "UserMetadata": {},
  "Role": "ROLE ARN",
  "Settings": {
    "OutputGroups": [
      {
        "Name": "Apple HLS",
        "Outputs": [
          {
            "ContainerSettings": {
              "Container": "M3U8",
              "M3u8Settings": {
                "AudioFramesPerPes": 2,
                "PcrControl": "PCR_EVERY_PES_PACKET",
                "PmtPid": 480,
                "PrivateMetadataPid": 503,
                "ProgramNumber": 1,
                "PatInterval": 100,
                "PmtInterval": 100,
                "VideoPid": 481,
                "AudioPids": [
                  482,
                  483,
                  484,
                  485,
                  486,
                  487,
                  488,
                  489,
                  490,
                  491,
                  492
                ]
              }
            },
            "VideoDescription": {
              "Width": 1920,
              "Height": 1080,
              "VideoPreprocessors": {
                "Deinterlacer": {
                  "Algorithm": "INTERPOLATE",
                  "Mode": "DEINTERLACE"
                }
              },
              "AntiAlias": "ENABLED",
              "Sharpness": 100,
              "CodecSettings": {
                "Codec": "H_264",
                "H264Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "ParNumerator": 1,
                  "NumberReferenceFrames": 3,
                  "Softness": 0,
                  "FramerateDenominator": 1001,
                  "GopClosedCadence": 1,
                  "GopSize": 90,
                  "Slices": 1,
                  "HrdBufferSize": 12500000,
                  "ParDenominator": 1,
                  "SpatialAdaptiveQuantization": "ENABLED",
                  "TemporalAdaptiveQuantization": "DISABLED",
                  "FlickerAdaptiveQuantization": "DISABLED",
                  "EntropyEncoding": "CABAC",
                  "Bitrate": 8500000,
                  "FramerateControl": "SPECIFIED",
                  "RateControlMode": "CBR",
                  "CodecProfile": "HIGH",
                  "Telecine": "NONE",
                  "FramerateNumerator": 30000,
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "MEDIUM",
                  "CodecLevel": "LEVEL_4",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "SINGLE_PASS_HQ",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "SPECIFIED",
                  "NumberBFramesBetweenReferenceFrames": 3,
                  "HrdBufferInitialFillPercentage": 90,
                  "Syntax": "DEFAULT"
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT"
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "AudioSourceName": "Audio Selector 1",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "Bitrate": 128000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "SampleRate": 48000
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "NameModifier": "_high"
          },
          {
            "VideoDescription": {
              "ScalingBehavior": "DEFAULT",
              "TimecodeInsertion": "DISABLED",
              "AntiAlias": "ENABLED",
              "Sharpness": 50,
              "CodecSettings": {
                "Codec": "H_264",
                "H264Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "NumberReferenceFrames": 3,
                  "Syntax": "DEFAULT",
                  "Softness": 0,
                  "GopClosedCadence": 1,
                  "GopSize": 90,
                  "Slices": 1,
                  "GopBReference": "DISABLED",
                  "SlowPal": "DISABLED",
                  "SpatialAdaptiveQuantization": "ENABLED",
                  "TemporalAdaptiveQuantization": "ENABLED",
                  "FlickerAdaptiveQuantization": "DISABLED",
                  "EntropyEncoding": "CABAC",
                  "Bitrate": 7500000,
                  "FramerateControl": "INITIALIZE_FROM_SOURCE",
                  "RateControlMode": "CBR",
                  "CodecProfile": "MAIN",
                  "Telecine": "NONE",
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "HIGH",
                  "CodecLevel": "AUTO",
                  "FieldEncoding": "PAFF",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "SINGLE_PASS",
                  "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                  "UnregisteredSeiTimecode": "DISABLED",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "NumberBFramesBetweenReferenceFrames": 2,
                  "RepeatPps": "DISABLED"
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT",
              "Width": 1280,
              "Height": 720
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL",
                    "Bitrate": 96000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "RawFormat": "NONE",
                    "SampleRate": 48000,
                    "Specification": "MPEG4"
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "OutputSettings": {
              "HlsSettings": {
                "AudioGroupId": "program_audio",
                "AudioRenditionSets": "program_audio",
                "IFrameOnlyManifest": "EXCLUDE"
              }
            },
            "ContainerSettings": {
              "Container": "M3U8",
              "M3u8Settings": {
                "AudioFramesPerPes": 4,
                "PcrControl": "PCR_EVERY_PES_PACKET",
                "PmtPid": 480,
                "PrivateMetadataPid": 503,
                "ProgramNumber": 1,
                "PatInterval": 0,
                "PmtInterval": 0,
                "Scte35Source": "NONE",
                "Scte35Pid": 500,
                "TimedMetadata": "NONE",
                "TimedMetadataPid": 502,
                "VideoPid": 481,
                "AudioPids": [
                  482,
                  483,
                  484,
                  485,
                  486,
                  487,
                  488,
                  489,
                  490,
                  491,
                  492
                ]
              }
            },
            "NameModifier": "_med"
          },
          {
            "VideoDescription": {
              "ScalingBehavior": "DEFAULT",
              "TimecodeInsertion": "DISABLED",
              "AntiAlias": "ENABLED",
              "Sharpness": 100,
              "CodecSettings": {
                "Codec": "H_264",
                "H264Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "NumberReferenceFrames": 3,
                  "Syntax": "DEFAULT",
                  "Softness": 0,
                  "GopClosedCadence": 1,
                  "GopSize": 90,
                  "Slices": 1,
                  "GopBReference": "DISABLED",
                  "SlowPal": "DISABLED",
                  "SpatialAdaptiveQuantization": "ENABLED",
                  "TemporalAdaptiveQuantization": "ENABLED",
                  "FlickerAdaptiveQuantization": "DISABLED",
                  "EntropyEncoding": "CABAC",
                  "Bitrate": 3500000,
                  "FramerateControl": "INITIALIZE_FROM_SOURCE",
                  "RateControlMode": "CBR",
                  "CodecProfile": "MAIN",
                  "Telecine": "NONE",
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "HIGH",
                  "CodecLevel": "LEVEL_3_1",
                  "FieldEncoding": "PAFF",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "SINGLE_PASS_HQ",
                  "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                  "UnregisteredSeiTimecode": "DISABLED",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "NumberBFramesBetweenReferenceFrames": 2,
                  "RepeatPps": "DISABLED"
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT",
              "Width": 960,
              "Height": 540
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL",
                    "Bitrate": 96000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "RawFormat": "NONE",
                    "SampleRate": 48000,
                    "Specification": "MPEG4"
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "OutputSettings": {
              "HlsSettings": {
                "AudioGroupId": "program_audio",
                "AudioRenditionSets": "program_audio",
                "IFrameOnlyManifest": "EXCLUDE"
              }
            },
            "ContainerSettings": {
              "Container": "M3U8",
              "M3u8Settings": {
                "AudioFramesPerPes": 4,
                "PcrControl": "PCR_EVERY_PES_PACKET",
                "PmtPid": 480,
                "PrivateMetadataPid": 503,
                "ProgramNumber": 1,
                "PatInterval": 0,
                "PmtInterval": 0,
                "Scte35Source": "NONE",
                "Scte35Pid": 500,
                "TimedMetadata": "NONE",
                "TimedMetadataPid": 502,
                "VideoPid": 481,
                "AudioPids": [
                  482,
                  483,
                  484,
                  485,
                  486,
                  487,
                  488,
                  489,
                  490,
                  491,
                  492
                ]
              }
            },
            "NameModifier": "_low"
          }
        ],
        "OutputGroupSettings": {
          "Type": "HLS_GROUP_SETTINGS",
          "HlsGroupSettings": {
            "ManifestDurationFormat": "INTEGER",
            "SegmentLength": 10,
            "TimedMetadataId3Period": 10,
            "CaptionLanguageSetting": "OMIT",
            "Destination": "s3://bucket/hls1/master",
            "TimedMetadataId3Frame": "PRIV",
            "CodecSpecification": "RFC_4281",
            "OutputSelection": "MANIFESTS_AND_SEGMENTS",
            "ProgramDateTimePeriod": 600,
            "MinSegmentLength": 0,
            "DirectoryStructure": "SINGLE_DIRECTORY",
            "ProgramDateTime": "EXCLUDE",
            "SegmentControl": "SEGMENTED_FILES",
            "ManifestCompression": "NONE",
            "ClientCache": "ENABLED",
            "StreamInfResolution": "INCLUDE"
          }
        }
      }
    ],
    "AdAvailOffset": 0,
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Tracks": [
              1
            ],
            "Offset": 0,
            "DefaultSelection": "DEFAULT",
            "SelectorType": "TRACK",
            "ProgramSelection": 1
          },
          "Audio Selector 2": {
            "Tracks": [
              2
            ],
            "Offset": 0,
            "DefaultSelection": "NOT_DEFAULT",
            "SelectorType": "TRACK",
            "ProgramSelection": 1
          }
        },
        "VideoSelector": {
          "ColorSpace": "FOLLOW"
        },
        "FilterEnable": "AUTO",
        "PsiControl": "USE_PSI",
        "FilterStrength": 0,
        "DeblockFilter": "DISABLED",
        "DenoiseFilter": "DISABLED",
        "TimecodeSource": "EMBEDDED",
        "FileInput": "s3://INPUT"
      }
    ]
  }
}
```



## 示例：自动化 ABR
<a name="auto-abr-example"></a>

此示例 JSON 任务规范指定了 Apple HLS 中的自动化 ABR 堆栈。除了指定自动化 ABR 设置外，它还会显式设置以下值：
+ 加速转码 `Mode` 到 `PREFERRED`
+ `rateControlMode` 到 `QVBR`
+ `qualityTuningLevel` 到 `MULTI_PASS_HQ`

有关自动化 ABR 设置的信息，请参阅 [自动化 ABR](auto-abr.md)。

```
{
  "UserMetadata": {},
  "Role": "ROLE ARN",
  "Settings": {
    "TimecodeConfig": {
      "Source": "ZEROBASED"
    },
    "OutputGroups": [
      {
        "Name": "Apple HLS",
        "Outputs": [
          {
            "ContainerSettings": {
              "Container": "M3U8",
              "M3u8Settings": {
                "AudioFramesPerPes": 4,
                "PcrControl": "PCR_EVERY_PES_PACKET",
                "PmtPid": 480,
                "PrivateMetadataPid": 503,
                "ProgramNumber": 1,
                "PatInterval": 0,
                "PmtInterval": 0,
                "Scte35Source": "NONE",
                "NielsenId3": "NONE",
                "TimedMetadata": "NONE",
                "VideoPid": 481,
                "AudioPids": [
                  482,
                  483,
                  484,
                  485,
                  486,
                  487,
                  488,
                  489,
                  490,
                  491,
                  492
                ]
              }
            },
            "VideoDescription": {
              "ScalingBehavior": "DEFAULT",
              "TimecodeInsertion": "DISABLED",
              "AntiAlias": "ENABLED",
              "Sharpness": 50,
              "CodecSettings": {
                "Codec": "H_264",
                "H264Settings": {
                  "InterlaceMode": "PROGRESSIVE",
                  "NumberReferenceFrames": 3,
                  "Syntax": "DEFAULT",
                  "Softness": 0,
                  "FramerateDenominator": 1,
                  "GopClosedCadence": 1,
                  "GopSize": 60,
                  "Slices": 2,
                  "GopBReference": "DISABLED",
                  "EntropyEncoding": "CABAC",
                  "FramerateControl": "SPECIFIED",
                  "RateControlMode": "QVBR",
                  "CodecProfile": "MAIN",
                  "Telecine": "NONE",
                  "FramerateNumerator": 30,
                  "MinIInterval": 0,
                  "AdaptiveQuantization": "AUTO",
                  "CodecLevel": "AUTO",
                  "FieldEncoding": "PAFF",
                  "SceneChangeDetect": "ENABLED",
                  "QualityTuningLevel": "MULTI_PASS_HQ",
                  "FramerateConversionAlgorithm": "DUPLICATE_DROP",
                  "UnregisteredSeiTimecode": "DISABLED",
                  "GopSizeUnits": "FRAMES",
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "NumberBFramesBetweenReferenceFrames": 2,
                  "RepeatPps": "DISABLED",
                  "DynamicSubGop": "STATIC"
                }
              },
              "AfdSignaling": "NONE",
              "DropFrameTimecode": "ENABLED",
              "RespondToAfd": "NONE",
              "ColorMetadata": "INSERT"
            },
            "OutputSettings": {
              "HlsSettings": {
                "AudioGroupId": "program_audio",
                "AudioRenditionSets": "program_audio",
                "AudioOnlyContainer": "AUTOMATIC",
                "IFrameOnlyManifest": "EXCLUDE"
              }
            },
            "NameModifier": "video"
          },
          {
            "ContainerSettings": {
              "Container": "M3U8",
              "M3u8Settings": {
                "AudioFramesPerPes": 4,
                "PcrControl": "PCR_EVERY_PES_PACKET",
                "PmtPid": 480,
                "PrivateMetadataPid": 503,
                "ProgramNumber": 1,
                "PatInterval": 0,
                "PmtInterval": 0,
                "Scte35Source": "NONE",
                "NielsenId3": "NONE",
                "TimedMetadata": "NONE",
                "TimedMetadataPid": 502,
                "VideoPid": 481,
                "AudioPids": [
                  482,
                  483,
                  484,
                  485,
                  486,
                  487,
                  488,
                  489,
                  490,
                  491,
                  492
                ]
              }
            },
            "AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT",
                "AudioSourceName": "Audio Selector 1",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL",
                    "Bitrate": 96000,
                    "RateControlMode": "CBR",
                    "CodecProfile": "LC",
                    "CodingMode": "CODING_MODE_2_0",
                    "RawFormat": "NONE",
                    "SampleRate": 48000,
                    "Specification": "MPEG4"
                  }
                },
                "LanguageCodeControl": "FOLLOW_INPUT"
              }
            ],
            "OutputSettings": {
              "HlsSettings": {
                "AudioGroupId": "program_audio",
                "AudioTrackType": "ALTERNATE_AUDIO_AUTO_SELECT_DEFAULT",
                "AudioOnlyContainer": "AUTOMATIC",
                "IFrameOnlyManifest": "EXCLUDE"
              }
            },
            "NameModifier": "audio"
          }
        ],
        "OutputGroupSettings": {
          "Type": "HLS_GROUP_SETTINGS",
          "HlsGroupSettings": {
            "ManifestDurationFormat": "FLOATING_POINT",
            "SegmentLength": 10,
            "TimedMetadataId3Period": 10,
            "CaptionLanguageSetting": "OMIT",
            "Destination": "s3://amzn-s3-demo-bucket1/main",
            "TimedMetadataId3Frame": "PRIV",
            "CodecSpecification": "RFC_4281",
            "OutputSelection": "MANIFESTS_AND_SEGMENTS",
            "ProgramDateTimePeriod": 600,
            "MinSegmentLength": 0,
            "MinFinalSegmentLength": 0,
            "DirectoryStructure": "SINGLE_DIRECTORY",
            "ProgramDateTime": "EXCLUDE",
            "SegmentControl": "SEGMENTED_FILES",
            "ManifestCompression": "NONE",
            "ClientCache": "ENABLED",
            "AudioOnlyHeader": "INCLUDE",
            "StreamInfResolution": "INCLUDE"
          }
        },
        "AutomatedEncodingSettings": {
          "AbrSettings": {
            "MaxRenditions": 6,
            "MaxAbrBitrate": 5000000,
            "MinAbrBitrate": 300000
          }
        }
      }
    ],
    "AdAvailOffset": 0,
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Offset": 0,
            "DefaultSelection": "DEFAULT",
            "ProgramSelection": 1
          }
        },
        "VideoSelector": {
          "ColorSpace": "FOLLOW",
          "Rotate": "DEGREE_0",
          "AlphaBehavior": "DISCARD"
        },
        "FilterEnable": "AUTO",
        "PsiControl": "USE_PSI",
        "FilterStrength": 0,
        "DeblockFilter": "DISABLED",
        "DenoiseFilter": "DISABLED",
        "InputScanType": "AUTO",
        "TimecodeSource": "ZEROBASED",
        "FileInput": "s3://amzn-s3-demo-bucket/test.mov"
      }
    ]
  },
  "AccelerationSettings": {
    "Mode": "PREFERRED"
  },
  "StatusUpdateInterval": "SECONDS_60",
  "Priority": 0
}
```



# 指定输入文件和输入片段
<a name="specifying-inputs"></a>

可用于*装配 MediaConvert 工作流程*。装配工作流程是一项无需单独编辑软件即可执行基本输入剪辑和拼接以汇编来自不同来源的输出资产 MediaConvert 的工作。例如，组装工作流程可能会放置一个缓冲片，后跟与广告交错的特征内容。特征内容可能在每个特征段的开始处具有徽标图形叠加。

使用这些类型的作业，你可以使用*输入拼接从多个输入汇编输出，或者使用输入**剪辑来汇编部分输*入。 MediaConvert 从该程序集创建作业的所有输出。如果希望输出具有不同的输入文件剪辑或具有不同的输入排列，则必须为每个组装创建单独的任务。

**Topics**
+ [如何 MediaConvert 使用时间表来整理作业](#how-mediaconvert-uses-timelines-to-assemble-jobs)
+ [设置组装工作流程任务](#setting-up-an-assembly-workflow-job)
+ [设置音频轨道和音频选择器](more-about-audio-tracks-selectors.md)
+ [设置输入字幕](including-captions.md)

## 如何 MediaConvert 使用时间表来整理作业
<a name="how-mediaconvert-uses-timelines-to-assemble-jobs"></a>

MediaConvert 根据输入时间轴和*输出**时间轴组装输入*和输入片段。该服务根据您的设置构造这些时间轴，然后根据这些时间轴将您的输入组装到输出中。下图显示三个独立的输入时间轴和一个输出时间轴。

![\[三个独立的输入文件用三个矩形表示。每个矩形都由一个表示输入时间轴的数字行标记。一个时间轴从零开始。一个时间轴显示嵌入式时间码。一个时间轴反映从 1 小时开始的指定开始设置。其中两个矩形在内部有剪辑，只用矩形的部分颜色填充表示。其中一个矩形完全填充，表示输出中使用了整个输入文件。输入矩形下方是一个较宽的矩形，表示组装在一起的所有剪辑和输入。该矩形标有一个数字行，此行表示输出时间轴，该时间轴从 00:00:00:00 开始。\]](http://docs.aws.amazon.com/zh_cn/mediaconvert/latest/ug/images/assembly.png)


### 输入时间轴
<a name="input-timelines"></a>

每个输入都有自己的*输入时间轴*。输入时间轴是 MediaConvert 生成的一系列时间码，用于表示输入文件的每一帧。

默认情况下，输入时间轴与输入视频中嵌入的任何时间码相同。您可以在输入设置**时间码源**中指定不同的起始时间码。如果您使用 API 或 SDK，则可以在任务的 JSON 文件中找到此设置。设置名称为 `TimecodeSource`，位于`Settings`、`Inputs`中。有关更多信息，请参阅 [使用输入时间码源调整输入时间轴](timecode-input.md)。

MediaConvert 使用输入时间轴执行以下操作：
+ 确定输入图形叠加（插入的图像）何时出现在视频中。有关输入和输出叠加之间差异的更多信息，请参阅[在输入和输出叠加之间选择](choosing-between-input-overlay-and-output-overlay.md)。
+ 确定动态图形叠加（插入的图像）何时出现在视频中。有关不同类型的图形叠加的更多信息，请参阅[图像插入器](graphic-overlay.md)。
+ 将视频与基于时间码格式的*附加字幕* 同步。附加字幕是您作为独立于视频的输入文件提供的字幕。
+ 解释在指定输入剪辑时提供的时间码。

### 输出时间轴
<a name="output-timeline"></a>

*输出时间轴*是 MediaConvert 生成并嵌入到输出中的一系列时间码。 MediaConvert 还使用输出时间轴的时间码来实现适用于作业中每个输出的功能。

默认情况下，输出时间轴与嵌入在第一个输入文件的视频中的任何时间码相同。您可以在 **Job settings**（任务设置）下的任务范围的**时间码配置**设置中指定不同的起始时间码。如果您使用 API 或 SDK，则可以在任务的 JSON 文件中找到这些设置。这些设置位于 `Settings`、`TimecodeConfig` 下。有关更多信息，请参阅 [使用作业范围的时间码配置调整输出时间轴](timecode-jobconfig.md)。

MediaConvert 使用输出时间轴执行以下操作：
+ 当您在输出时间码设置中启用 **Timecode insertion (时间码插入)** 时，确定要嵌入到输出视频中的时间码。
+ 确定输出叠加（插入的图像）何时出现在视频中。有关不同类型的图形叠加的更多信息，请参阅[图像插入器](graphic-overlay.md)。
+ 确定 HLS 变体播放列表显示时间的方式。
+ 解释为 **Anchor timecode (锚点时间码)** 指定值时提供的时间码。

## 设置组装工作流程任务
<a name="setting-up-an-assembly-workflow-job"></a>

按照以下步骤设置组合组装工作流程特征（如输入剪辑、输入拼接、图形叠加和附加字幕同步）的任务。按此顺序执行这些任务可以使设置过程变得更容易。特别是，我们建议您最后指定输入剪辑。这是因为每个输入时间轴计算整个输入中的帧，而不是每个单独剪辑中的帧。

这个过程依赖于输入和输出时间轴的概念。有关更多信息，请参阅 [如何 MediaConvert 使用时间表来整理作业](#how-mediaconvert-uses-timelines-to-assemble-jobs)。

**设置组装工作流程任务（控制台）**

1. **指定您的视频输入文件。**

   一个作业中最多可以有 150 个输入。 MediaConvert 按照添加的顺序将输入拼接在一起。要使用同一输入文件中的多个剪辑，并且希望它们按时间顺序排列，而它们之间不需要其他输入，请仅指定一次输入文件。

   有关完整说明，请参阅[步骤 1：指定输入文件](setting-up-a-job.md#specify-input-settings)。

1. **设置您的音频选择器。**

   在每个输入中，您都会创建音频选择器以将输入音频映射到输出。有关说明，请参阅[步骤 2：为视频、音频和字幕创建输入选择器](setting-up-a-job.md#create-selectors)。

   使用 sidecar 音频文件，无需考虑时间码即可 MediaConvert 同步音频和视频。 MediaConvert 将音频文件的开头与视频文件的开头对齐。

   无论您的音频是在附加文件中还是嵌入到视频中，您都可以使用输入音频选择器中的 **偏移** 设置来调整其同步。对 **Offset (偏移)** 使用正数可在输入时间轴中将音频移向更晚的时间；使用负数可将其移向更早的时间。

1. **同步任何附加字幕。**

   如何设置附加字幕同步取决于输入字幕格式：
   + 如果输入字幕格式是基于时间码的（例如，SCC 或 STL），则服务将字幕文件中的时间码与输入时间轴同步。
   + 如果输入字幕格式是基于时间戳的（例如，SRT、SMI 或 TTML），则服务将字幕与视频同步，而不考虑时间码。

**相关信息**
   + [关于输入时间码源和字幕对齐](about-input-timecode-source-and-captions-alignment.md)
   + [使用输入时间码源调整输入时间轴](timecode-input.md)
   + [字幕和字幕选择器](including-captions.md) 

1. **当您希望显示任何图形叠加或动态图形叠加时进行设置。**

   如何指定叠加显示的时间取决于您指定的叠加类型：
   + 对于输入静止图形叠加，请在输入中您希望显示叠加的位置指定叠加。使用与该输入的时间轴匹配的时间码指定开始时间和结束时间。
   + 对于输出静止图形叠加，请根据输出时间轴指定显示叠加的时间。
   + 对于动态图形叠加，请根据输入的时间轴指定显示叠加的时间。

**相关信息**
   + [使用输入时间码源调整输入时间轴](timecode-input.md)
   + [使用作业范围的时间码配置调整输出时间轴](timecode-jobconfig.md)
   + [图像插入器](graphic-overlay.md)

1. **指定输入剪辑。**

   除非 MediaConvert 要包括输入的完整时长，否则请为每个输入指定输入片段。使用与该输入的时间轴匹配的时间码指定开始时间和结束时间。

   设置输入剪辑，如下所示：

   1. 在 **创建任务**页面上，在左侧的 **任务**窗格中，选择一个输入。

   1. 在 **Input clips** (输入剪辑) 部分中，选择 **Add input clip** (添加输入剪辑)。

   1. 输入您想包含的第一个剪辑的开始和结束时间码。使用以下 24 小时格式和帧号：HH: MM: SS: FF。

      为纯音频输入指定输入片段时，您所输入的时间码中的最后一个数字对应于百分之一秒。例如，00:00:30:75 等于 30.75 秒。

      请确保提供与您的输入时间轴一致的时间码。默认情况下，输入剪辑以嵌入在输入视频中的时间码为 MediaConvert 基础。对齐时间码的方式取决于您的输入视频是否嵌入了时间码：
      + 如果您的输入没有嵌入的时间码，则您必须将**时间码源**设置为**开始于 0** 或**指定的开头**。
      + **如果您的输入*确实*嵌入了时间码并且您 MediaConvert 想使用它们，那么对于**时间码源**，请保留默认值 “嵌入式”。**适当地指定剪辑的开始和结束时间。

        例如，如果您输入 **时间码源**设置为**嵌入**，并且您的视频具有从 01:00:00:00 开始的嵌入时间码，则将 30 秒剪辑的开始时间码定义为 01:00:30:00，而不是 00:00:30:00。默认情况下，输入时间线与视频中所嵌入的时间码相同。您可以通过调整输入的**时间码源**设置，更改确定输入时间线的内容。
      + 指定长度小于 12 小时的输入片段。

      有关更多信息，请参阅 [使用输入时间码源调整输入时间轴](timecode-input.md)。

   1. 指定任何其他剪辑。多个剪辑必须按时间顺序排列，不能重叠；每个 **Start timecode (开始时间码)** 必须晚于上一个剪辑的 **End timecode (结束时间码)**。

      如果您指定多个输入剪辑，则所有剪辑都会按您指定的顺序逐一出现在输出中。

# 设置音频轨道和音频选择器
<a name="more-about-audio-tracks-selectors"></a>

您可使用音频选择器将输入与输出音频关联。您可以设置一个音频选择器来代表输入中的一个或多个轨道。在此之后，在输出中创建音频轨道，并将单个音频选择器与每个输出轨道关联。

输入音频轨道、音频选择器和输出音频轨道之间的关联遵守以下规则：
+  每个输入轨道都可以与一个或多个音频选择器关联 
+  每个音频选择器有一个或多个输入轨道 
+  每个输出轨道都有一个音频选择器 

下图显示了这些关系。在此图中，输入文件包含三个音频轨道。音频选择器 1 选择输入轨道 1。音频选择器 1 与输出音频轨道 1 关联，因此输出的轨道 1 与输入的轨道 1 内容相同。没有音频选择器选择第二个输入音频轨道，因此在输出中未使用该轨道。音频选择器 2 选择输入轨道 1 和 3。音频选择器 2 与输出音频轨道 2 关联，因此输出轨道 2 包含输入轨道 1 和 3 的通道。

![\[使用音频选择器将输入轨道与输出轨道关联。\]](http://docs.aws.amazon.com/zh_cn/mediaconvert/latest/ug/images/audio-selectors-shared-vsd.png)


对于需要通道级别控制的工作流程，请使用音频通道混音功能，该功能支持以下工作流程：
+ 更改音频轨道中的通道顺序
+ 将音频通道从一个或多个输入轨道移动到不同的输出轨道
+ 将多个通道的音频合并到单个通道
+ 将单通道的音频分割到多个通道
+ 调整音频通道的音量级别

# 设置输入字幕
<a name="including-captions"></a>

要在任务中包含字幕，请按所列顺序执行以下步骤：

1. 如果输入字幕是基于时间码的附加字幕格式（如 SCC 或 STL），[请设置时间码源设置](#set-the-timecode-source-settings)。

1. [收集所需字幕信息。](#gather-required-captions-information)

1. [创建输入字幕选择器。](#create-input-caption-selectors)

1. [设置输出中的字幕。](set-up-captions-in-outputs.md)

有关支持的输入和输出字幕的完整列表，请参阅 [字幕参考表](captions-support-tables.md)。

有关为您的输出设置字幕的更多信息，请参阅 [设置输出中的字幕](set-up-captions-in-outputs.md)。

**提示**  
您可以 Amazon Transcribe 与一起使用 MediaConvert 来生成字幕并将其包含在输出中。*有关更多信息，请参阅示例中的[使用 Amazon Transcribe 进行AWS VOD 字幕](https://github.com/aws-samples/aws-transcribe-captioning-tools)。AWS * GitHub

## 指定时间码源
<a name="set-the-timecode-source-settings"></a>

要使字幕与视频正确同步，必须将输入时间轴设置为与字幕文件中嵌入的时间码相匹配。 MediaConvert 根据您为输入 **Timecode 源设置选择的值来建立输入时间**轴。有关更多信息，请参阅 [输入时间码源和字幕对齐](about-input-timecode-source-and-captions-alignment.md)。

有关调整 **Timecode source (时间码源)** 设置的说明，请参阅[使用输入时间码源调整输入时间轴](timecode-input.md)。

## 收集所需字幕信息
<a name="gather-required-captions-information"></a>

在任务中设置字幕之前，请记录以下信息：
+ *输入字幕格式*。您必须提前获得这些信息； MediaConvert 不要从您的输入文件中读取这些信息。
+ 输入字幕包含的将用于任一输出的 *tracks (轨道)*。
+ 要通过任务创建的*输出程序包和文件*。有关指定输出程序包或文件类型的信息，请参阅[创建输出](output-settings.md)。
+ 要在每个输出中使用的*输出字幕格式*。

  有关基于您的输入容器、输入字幕格式以及输出容器的受支持输出字幕的信息，请参阅[视频容器中支持的输入字幕](captions-support-tables-by-container-type.md)。
+ 要为每个输出包含的 *output captions tracks (输出字幕轨道)*。如果您通过 teletext-to-teletext，则输入中的所有轨道都可以在输出中使用。否则，包含在输出中的轨道可能只是输入中的部分可用轨道。

## 创建输入字幕选择器
<a name="create-input-caption-selectors"></a>

设置字幕时，请首先创建字幕选择器。字幕选择器确定输入的特殊字幕资产，并将一个标签与之关联。字幕资产为单个轨道或输入文件中包含的所有轨道的集合，具体取决于输入字幕格式。例如，您可以添加 **Captions selector 1** (字幕选择器 1)，并将法语字幕与之关联。当您[设置输出以包含字幕](set-up-captions-in-outputs.md)时，可通过指定字幕选择器执行此操作。

**创建输入字幕选择器**

1. 在 **创建任务**页面上，在左侧的 **任务**窗格中，选择一个输入。
**注意**  
在具有多个输入的任务中，每个输入都必须包含相同数目的字幕选择器。对于没有字幕的输入，请创建空字幕选择器。对于这些选择器，在 **Source**（源）中选择 **Null source**（空源）。如果没有输入有字幕，请移除所有字幕选择器。

1. 在页面底部附近的 **Captions selectors** (字幕选择器) 部分中，选择 **Add captions selector** (添加字幕选择器)。

1. 在 **Source** (源) 下，选择输入字幕格式。

1. 对于大多数格式，会显示更多字段。根据输入字幕格式相关主题的描述为这些字段指定值。从该过程后面的列表中选择相应的主题。

1. 根据需要创建更多字幕选择器。您需要的字幕选择器的数量取决于输入字幕格式。从该过程后面的列表中选择相应的主题。

# QuickTime MXF VANC 数据中的字幕曲目或字幕（辅助）输入字幕
<a name="ancillary"></a>

如果您的输入字幕为以下任一格式，则服务会将其作为“辅助”数据进行处理：
+ QuickTime 字幕曲目（格式 QTCC）
+ MXF VANC 数据

MediaConvert 不会创建这些格式的输出字幕，但您可以将其转换为[支持的输出格式](captions-support-tables-by-container-type.md)。

**对于辅助字幕**
+ 为将用于输出的每个轨道创建一个字幕选择器。
+ 在每个字幕选择器中，对于 **Source** (源)，选择 **Ancillary** (辅助)。
+ 在每个字幕选择器中，对于 **CC channel (CC 通道)**，选择与选择器关联的轨道的通道编号。

  例如，输入字幕在 CC 通道 1 中使用英语，在 CC 通道 2 中使用西班牙语。要使用这些字幕，请创建字幕选择器 1，然后在 **CC channel** (CC 通道) 下拉列表中选择 1。接下来，创建字幕选择器 2，然后在 **CC channel** (CC 通道) 下拉列表中选择 2。

# 嵌入式 (CEA/EIA-608, CEA/EIA-708)、嵌入式 \$1scte-20 和 scte-20\$1 嵌入式输入字幕
<a name="embedded"></a>

如果您的输入字幕为以下任意格式，则服务会将其作为“嵌入式”数据进行处理：
+ CEA-608
+ EIA-608
+ CEA-708
+ EIA-708

如果您的输入字幕同时具有嵌入式字幕和 SCTE-20 字幕，并且您希望输出中具有这两种类型，请为 SCTE-20 和嵌入式字幕轨道设置单独的输入字幕选择器。通过与设置嵌入式选择器相同的方式来设置 SCTE-20 字幕选择器。

**注意**  
对于 MXF 输入，您的字幕很可能位于辅助轨道上。某些第三方媒体分析工具错误地将这些字幕报告为 608/708 嵌入式字幕。有关设置辅助字幕的信息，请参阅 [QuickTime MXF VANC 数据中的字幕曲目或字幕（辅助）输入字幕](ancillary.md)。

## 嵌入式字幕的字幕选择器的数量
<a name="embedded-how-many-caption-selectors"></a>
+ 如果所有输出字幕也采用嵌入式格式，则只创建一个字幕选择器，即使您希望在输出中包含多个轨道也是如此。利用此设置， MediaConvert 将自动提取所有轨道并将其包含在输出中。
+ 如果所有输出都采用非嵌入式格式，则为要包含在输出中的每个轨道创建一个字幕选择器。
+ 如果您的一些输出具有嵌入式格式的字幕，而一些输出具有其他格式的字幕，则为具有嵌入式字幕的输出创建一个字幕选择器。还可为带其他未嵌入标题的输出创建单独的选择器，每个标题均对应于输出中所需的一个轨道。

## 嵌入式字幕的字幕选择器字段
<a name="embedded-caption-selector-fields"></a>

**Source** (源)：选择 **Embedded** (嵌入式)

**CC channel number (CC 通道编号)**：此字段指定要提取的轨道。完成步骤如下：
+ **如果您正在制作 embedded-to-embedded字幕（也就是说，您只为输入的嵌入式字幕创建一个字幕选择器），则 MediaConvert 会忽略此字段，因此请保留 CC 频道号的默认值。**
+ 如果要将嵌入式字幕转换为另一种格式（即创建多个字幕选择器，每个选择器对应一个轨道），请指定包含所需轨道的输入中的字幕通道编号。要进行该操作，请从下拉列表中选择通道编号。例如，选择 **1** 进行选择 CC1。

**注意**  
MediaConvert 不会自动检测每个频道中使用哪种语言。您可以在设置输出字幕时指定这一点，以便将字幕通道的语言代码元数据 MediaConvert 传递到输出中以供下游使用。



# DVB-Sub 输入字幕
<a name="dvb-sub-or-scte-27"></a>

MediaConvert 仅在 TS 输入中支持 DVB-Sub。

在大多数情况下，为每个轨道创建一个字幕选择器。在每个选择器中，通过提供 PID 或语言代码来指定所需的轨道。

**注意**  
请勿在 **PID** 字段和 **Language** (语言) 下拉列表中指定字幕。请只指定其中一项。

如果您正在使用 DVB-sub-to-DVB-sub，并且想要将所有字幕轨道从输入传递到输出，请为所有轨道创建一个字幕选择器。在这种情况下，请将 **PID** 字段留空，然后不要从 **Language (语言)** 下拉列表中选择任何语言。

# 图文输出字幕
<a name="teletext"></a>

如何设置图文电视输入字幕选择器取决于您计划如何在输出中使用字幕。您可以通过下面的一种方式来使用图文字幕：
+ [图文电视转图文电视直通](#input-teletext-to-output-teletext-passthrough)

  使用图文电视直通， MediaConvert 可以将输入字幕从输入到输出保持不变。字幕样式、图文电视页码和非字幕的图文电视数据在输出中的显示与在输入中的显示完全相同。

  图文电视直通是在输出中包含非字幕的图文电视数据的唯一方法。
+ [图文电视到图文电视，页面重新映射](#input-teletext-to-output-teletext-with-page-remapping)

  如果您希望输出的图文电视页码与输入的页码不同，则可以重新映射内容。当您这样做时，您的输出字幕的样式很简单，您会丢失所有不是字幕的图文电视数据。
+ [将图文电视转换为其他字幕格式](#input-teletext-to-other-format-output-captions)

  您可以使用图文电视输入字幕生成其他格式的输出字幕。要查看可以从图文电视输入中生成哪些字幕，请参阅 [字幕参考表](captions-support-tables.md)。

有关为每个工作流设置字幕的信息，请参阅以下主题。

## 图文电视转图文电视直通
<a name="input-teletext-to-output-teletext-passthrough"></a>

在进行图文电视转图文电视直通时，为整组输入字幕创建一个输入字幕选择器。请不要指定的**页码**值。

有关设置此字幕工作流输出的信息，请参阅 [图文电视转图文电视直通](teletext-output-captions.md#teletext-to-teletext-passthrough)。

## 图文电视到图文电视，页面重新映射
<a name="input-teletext-to-output-teletext-with-page-remapping"></a>

当输入和输出字幕的字幕格式均为图文电视时，并且您希望输出图文电视页码与输入页码不同时，请为输入的每个图文电视页面创建一个单独的输入字幕选择器。为页码指定输入图文电视**页码**。

有关设置此字幕工作流输出的信息，请参阅 [图文电视到图文电视，页面重新映射](teletext-output-captions.md#teletext-to-teletext-page-remapping)。

## 将图文电视转换为其他字幕格式
<a name="input-teletext-to-other-format-output-captions"></a>

如果您的输入字幕是图文电视，而输出字幕是另一种格式时，请为每个输入图文电视页面设置一个输入字幕选择器。为页码指定输入图文电视**页码**。

有关设置此字幕工作流程输出的信息，请参阅 [设置输出中的字幕](set-up-captions-in-outputs.md) 中有关输出格式的部分。

# 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` 是一个不可继承的属性。

# IMSC 输入字幕（作为 IMF 来源的一部分）
<a name="IMSC-in-MXF"></a>

AWS Elemental MediaConvert 支持 IMSC 作为输入字幕格式，可以作为边车文件或作为 IMF 来源的一部分。如果您的输入 IMSC 字幕在附加文件中，请参阅 [IMSC、SCC、SMPTE-TT、SRT、STL、TTML (sidecar) 输入字幕](sidecar-input.md)。

如果您的输入 IMSC 字幕是 IMF 源的一部分，则不必指定 IMSC 字幕的源文件。该信息位于您为任务输入指定的 CPL 文件中。有关 IMSC 支持的限制，请参阅 [IMSC 要求](imsc-captions-support.md)。

**IMSC 的字幕选择器的数量**  
为每个轨道创建一个字幕选择器。

**轨道编号**  
通过提供轨道编号指定所需的字幕。轨道编号对应于轨道在 CPL 文件中的显示顺序。例如，如果 CPL 文件首先列出法语字幕，请将 **Track number (轨道编号)** 设置为 **1** 以指定法语字幕。

**在 JSON 任务规范中**  
如果您使用 API 或 SDK，则可以在任务的 JSON 文件中找到这些设置。上述设置位于下方`Inputs`，如下例所示：

```
"Inputs": [

 
      {
        ...
        		
        "CaptionSelectors": {
          "Captions Selector 1": {
            "SourceSettings": {
              "SourceType": "IMSC",
              "TrackSourceSettings": {
                "TrackNumber": 1
              }
            }
          },

          "Captions Selector 2": {
            "SourceSettings": {
              "SourceType": "IMSC",
              "TrackSourceSettings": {
                "TrackNumber": 4
              }
            }
          },
          ...
```

# WebVTT 输入字幕（作为 HLS 来源的一部分）
<a name="WebVTT-in-HLS"></a>

AWS Elemental MediaConvert 支持 WebVTT 作为输入字幕格式，可以作为边车文件或作为 HLS 源的一部分。如果您的输入 WebVTT 字幕在附加文件中，请参阅 [IMSC、SCC、SMPTE-TT、SRT、STL、TTML (sidecar) 输入字幕](sidecar-input.md)。

如果您的输入 WebVTT 字幕是 IMF 源的一部分，则不必指定 WebVTT 字幕的源文件。该信息位于您为任务输入指定的 HLS 文件中。您需要启用 **Use HLS Rendition Group**（使用 HLS 副本组）并使用以下设置。

**WebVTT 的字幕选择器的数量**  
为每个 WebVTT 来源创建一个字幕选择器。

**副本组 Id**  
通过提供分组 ID 指定所需字幕组。群组 ID 对应于 HL EXT-X-MEDIA S 清单中的 GROUP-ID 标签。例如，如果您的 HLS 清单文件在特定组“订阅”中列出了您的法语字幕，请将 **Rendition Group ID**（副本组 ID）设置为 **subs**（订阅）以指定法语字幕组 ID。

**条件名称**  
通过提供副本名称指定您想要的字幕组。格式副本名称对 EXT-X-MEDIA应于 HLS 清单中的 NAME 标签。例如，如果您的 HLS 清单文件以名为“法语”的副本名称列出了您的法语字幕，请将 **Rendition Name**（副本名称）设置为 **French**（法语）以指定法语字幕副本名称。

**副本语言代码**  
通过提供 ISO 639-3 语言代码来指定您想要的字幕组。该语言对 EXT-X-MEDIA应于 HLS 清单中的 LANGUAGE 标签。例如，如果您的 HLS 清单文件以“FRA”的语言代码列出了您的法语字幕，请将 **Rendition Language Code**（副本语言代码）设置为 **FRA** 以指定法语字幕的副本语言代码。

**在 JSON 任务规范中**  
如果您使用 API 或 SDK，则可以在任务的 JSON 文件中找到这些设置。上述设置位于下方`Inputs`，如下例所示：

```
"Inputs": [

 
      {
        ...
        		
"CaptionSelectors": {
  "Caption Selector 1": {
    "SourceSettings": {
      "SourceType": "WebVTT",
      "WebvttHlsSourceSettings": {
        "RenditionGroupId": "subs",
        "RenditionName": "French",
        "RenditionLanguageCode": "FRA"
      }
    }
  }
}
          ...
```

# 创建输出
<a name="output-settings"></a>

单个 MediaConvert 作业可以将输出创建为独立文件（例如，.mp4 文件）、一组用于自适应比特率 (ABR) 流媒体的文件（例如，一个Apple HLS包）或两者的组合。创建输出组及其内部的输出时，可以指定作业生成的文件的数量和类型。

 MediaConvert 任务完成后，您可以使用 Amazon CloudFront 或其他内容分发网络 (CDN) 来交付您的直播套餐。CDN 会将您的视频发送给想要观看的人。有关更多信息，请参阅[使用 CloudFront提供视频点播 (VOD)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/on-demand-video.html)。

本节中的主题解释了 MediaConvert 输出组、 MediaConvert 输出和 MediaConvert 交付给您的实际输出文件之间的关系。

**Topics**
+ [设置输出中的字幕](set-up-captions-in-outputs.md)
+ [使用输出组指定流媒体程序包类型或独立文件](outputs-file-ABR.md)
+ [选择您的 ABR 流式处理输出组](choosing-your-streaming-output-groups.md)
+ [推荐的视频质量编码设置](video-quality.md)
+ [在作业设置中使用变量](using-variables-in-your-job-settings.md)

# 设置输出中的字幕
<a name="set-up-captions-in-outputs"></a>

作业中的字幕位置取决于输出字幕格式：字幕可能在与视频相同的输出中、在与视频相同的输出组中的不同输出中，或在完全不同的输出组中。您设置多个字幕轨道的方式也取决于输出字幕格式。

有关支持的输入和输出字幕的完整列表，请参阅 [字幕参考表](captions-support-tables.md)。

有关为您的输入设置字幕的更多信息，请参阅 [设置输入字幕](including-captions.md)。

以下过程演示如何为不同输出设置字幕。

**为不同输出设置字幕**

1. 在 [https://console.aws.amazon.com/medi](https://console.aws.amazon.com/mediaconvert) a MediaConvert Convert 上打开控制台。

1. 请选择 **Create job（创建任务）**。

1. 为视频和音频设置输入、输出组和输出，如[教程：配置作业设置](setting-up-a-job.md)和[创建输出](output-settings.md)中所述。

1. 如[创建输入字幕选择器](including-captions.md#create-input-caption-selectors)中所述创建输入字幕选择器。

1. 确定在您的作业中何处指定字幕。此选择取决于输出字幕格式。请参阅下面的相关主题，以查询所需信息。

1. 在 **Create job** (创建作业) 页面的左侧窗格中，从输出列表中选择相应的输出。

1. 在 **Encoding settings** (编码设置) 下，选择 **Add caption** (添加字幕)。此操作会在 **Encoding settings** (编码设置) 下显示字幕设置区域。

1. 如果输出字幕格式要求输出中的每个轨道均对应一组单独的字幕设置，请再次选择 **Add captions (添加字幕)**，直至每个轨道对应一个字幕组。要确定是所有轨道需要一个字幕设置组，还是每个轨道一个字幕设置组，请参阅以下相关主题。

1. 在 **Encoding Settings** (编码设置) 下，从列表中选择 **Captions 1** (字幕 1)。

1. 在 **Captions source** (字幕源) 下，选择一个字幕选择器。这会选择您在设置输入时与选择器关联的一个或多个曲目，因此这些字幕 AWS Elemental MediaConvert 将在此输出中包含这些字幕。

1. 在 **Destination type** (目标类型) 中，选择输出字幕格式。按[视频容器中支持的输入字幕](captions-support-tables-by-container-type.md)进行检查以确保选择受支持的格式。

1. 按下面的相关主题中所述，为任何附加字段提供值。



**Topics**
+ [CEA/EIA-608 and CEA/EIA-708（嵌入式）输出字幕](embedded-output-captions.md)
+ [DVB-Sub 输出字幕](dvb-sub-output-captions.md)
+ [IMSC、TTML 和 WebVTT（附加）输出字幕](ttml-and-webvtt-output-captions.md)
+ [SCC、SRT 以及 SMI (sidecar) 输出字幕](scc-srt-output-captions.md)
+ [图文输出字幕](teletext-output-captions.md)
+ [烧入输出字幕](burn-in-output-captions.md)
+ [无障碍字幕的设置](accessibility-captions.md)

# CEA/EIA-608 and CEA/EIA-708（嵌入式）输出字幕
<a name="embedded-output-captions"></a>

 本节介绍如何在中 AWS Elemental MediaConvert配置嵌入式输出字幕。主要主题包括：
+ 在何处指定字幕。
+ 如何指定多个字幕轨道。
+ MXF 输出中的嵌入式和辅助字幕。

## 在何处指定字幕
<a name="where-embedded-output-captions"></a>

将字幕放在与视频相同的输出组和输出中。

## 如何指定多个字幕轨道
<a name="multilang-embedded-output-captions"></a>
+ 如果您的输入字幕格式是嵌入式的（也就是说，您正在通过 embedded-to-embedded），则只需创建一组字幕设置。您在 **Captions source (字幕源)** 下选择的字幕选择器包括输入中的所有轨道。
+ 如果输入字幕是两个 SCC 文件，您可以使用嵌入在输出视频流中的两个输出字幕通道的方式，创建两个输出字幕。有关更多信息，请参阅 [将双 SCC 输入文件转换为嵌入式字幕](converting-dual-scc-input-files-to-embedded-captions.md)。
+ 如果输入字幕未嵌入或 SCC，则对于每个输出只能包含一个字幕轨道。在每个输出中，包含一组字幕设置。在 **Captions source (字幕源)** 中，选择为您想包括的轨道设置的选择器。

## MXF 输出中的嵌入式和辅助字幕
<a name="embedded-and-ancillary-captions-in-mxf-outputs"></a>

MXF 输出是否可以包含辅助字幕取决于 MXF 配置文件：
+ MXF XDCAM HD：此 MXF 配置文件指定 smpte 436 轨道中的辅助数据。使用这些输出，除了将其包含在视频流中外，还可以将嵌入式字幕 MediaConvert 复制到 smpte 436 辅助曲目中。
+ MXF D-10：此 MXF 配置文件规范不允许辅助数据。因此，您的 MXF D-10 输出仅有嵌入在视频流中的字幕。

MediaConvert 根据以下编码设置的值确定输出的 MXF 配置文件：
+ 解决方案
+ 帧率
+ 视频编解码器配置文件
+ 隔行扫描模式

有关这些设置的哪些值对哪个 MXF 配置文件有效的信息，请参阅相关规范。低于 XDCAM HD，请参阅 IEEE Xplore 数字库中的 [RDD 9:2009 - SMPTE 标准文档 - Sony MPEG Long GOP 产品的 MXF 互操作性规范 ](https://ieeexplore.ieee.org/document/7290306)。对于 MXF D-10，请参阅 [ST 356:2001 - SMPTE 标准 - 适用于电视 — 类型 D-10 流规范 — MPEG-2 4:2:2P @ ML，适用于 525/60 和 625/50](https://ieeexplore.ieee.org/document/7290684)。

# DVB-Sub 输出字幕
<a name="dvb-sub-output-captions"></a>

 本节介绍如何在中配置 DVB-Sub 输出字幕。 AWS Elemental MediaConvert主要主题包括：
+ 在何处指定字幕。
+ 如何指定多个字幕轨道。
+ 如何指定字体脚本。

## 在何处指定字幕
<a name="where-dvb-sub-output-captions"></a>

将字幕放在与视频相同的输出组和输出中。

## 如何指定多个字幕轨道
<a name="multilang-dvb-sub-output-captions"></a>
+ 如果您的输入字幕与输出字幕格式相同 (直通传输)，只需创建一个字幕设置组。您在 **Captions source (字幕源)** 下选择的字幕选择器包括输入中的所有轨道。
+ 如果输入字幕格式不同，请为每个轨道创建一个字幕设置组。在相同输出中放入每个字幕设置组。它们将出现在设置组列表中：“Captions 1 (字幕 1)”、“Captions 2 (字幕 2)”，以此类推。在每组设置中，在 **Captions source (字幕源)** 下选择为要包括的轨道设置的字幕选择器。

## 如何指定字体脚本
<a name="how-to-specify-lang-script-dvb-sub"></a>

AWS Elemental MediaConvert 根据您在输出字幕设置中指定的语言，自动为您的字幕选择合适的脚本。如果您选择的语言有多个可能的脚本，请指定您想要的脚本。

**确保服务使用正确的字体脚本**

1. 在 **Encoding settings**（编码设置）下的 **Captions**（字幕）部分中，为 **Language**（语言）选择字幕文本的语言。

1. 如果您指定的语言有多个可能的脚本，请使用 **Font script**（字体脚本）来指定脚本。

   例如，如果您 **语言**选择 **中文**，请使用 **字体脚本**选择 **简体中文**或 **繁体中文**。在这种情况下，如果您没有为 **Font script**（字体脚本）指定值，则该服务将默认为简体中文。
**提示**  
在大多数情况下，对于 **Font script**（字体脚本），您可以保留 **Automatic**（自动）默认值。当您这样做时，服务会根据字幕文本的语言选择脚本。

# IMSC、TTML 和 WebVTT（附加）输出字幕
<a name="ttml-and-webvtt-output-captions"></a>

 本节介绍如何在中配置 IMSC、TTML 和 WebVTT（边车）输出字幕。 AWS Elemental MediaConvert主要主题包括：
+ 在何处指定字幕。
+ 如何指定多个字幕轨道。
+ Sidecar 字幕容器选项。

如果您的输出字幕是 IMSC、TTML 或 WebVTT 格式，请根据以下信息在输出中设置字幕。有关 IMSC 支持的限制，请参阅 [IMSC 要求](imsc-captions-support.md)。

## 在何处指定字幕
<a name="where-ttml-and-webvtt-output-captions"></a>

将字幕放在同一个输出组中，但输出与视频不同。

向输出增加字幕后，删除服务在输出中自动创建的 **Video**（视频）和**Audio 1**（音频 1）组设置。

**删除“视频”和“音频 1”组设置**

1. 在 **Create job**（创建任务）页面上，在左侧 **Job**（任务）窗格的 **Output groups**（输出组）下，选择包含要删除的设置组输出。

1. **Video**（视频）组设置将自动显示在 **Stream settings**（直播设置）部分中。选择 **Remove video selector**（移除视频选择器）按钮。

1. **Audio 1**（音频 1）组设置将自动显示在 **Stream settings**（直播设置）部分中。选择 **移除** 按钮。

## 如何指定多个字幕轨道
<a name="multilang-ttml-and-webvtt-output-captions"></a>

为每个字幕轨道单独生成输出。

**注意**  
您在作业中首先指定的字幕轨道作为 HLS 清单中的默认轨道发出信号。

## Sidecar 字幕容器选项
<a name="sidecar-captions-container-options"></a>

根据您的输出组，您可以为 IMSC 和 TTML 字幕输出选择字幕容器。

对于 **DASH ISO** 输出组，您可以从以下各项中进行选择：
+ 碎片 MP4 (`.fmp4`)
+ 原始（对于 IMSC 为 `.xml`，对于 TTML 为 `.ttml`）

对于所有其他输出组，IMSC 和 TTML 文件都是原始的。

**为 DASH ISO 输出组中的 IMSC 和 TTML 字幕指定字幕容器**

1. 按照 [在 ABR 流式处理输出组中创建输出](setting-up-a-job.md#create-outputs-in-abr-streaming-output-groups) 中所述在 **DASH ISO** 输出组中设置输出。将字幕放在单独的输出中。

1. 在 **Create job**（创建任务）页面上，在左侧 **Job**（任务）窗格中，选择字幕输出。

1. 在右侧的 **Output settings (输出设置)** 部分中，选择 **Container settings (容器设置)**，然后启用 **DASH container settings (DASH 容器设置)**。

1. 对于 **Captions container (字幕容器)**，保留默认的 **Raw (原始)** 或选择 **Fragmented MPEG-4 (片段化的 MPEG-4)**。

# SCC、SRT 以及 SMI (sidecar) 输出字幕
<a name="scc-srt-output-captions"></a>

 本节介绍如何在中配置 SCC、SRT 和 SMI（边车）输出字幕。 AWS Elemental MediaConvert主要主题包括：
+ 在何处指定字幕。
+ 如何指定多个字幕轨道。

## 在何处指定字幕
<a name="where-scc-srt-output-captions"></a>

将字幕放在同一个输出组中，但输出与视频不同。

向输出增加字幕后，删除服务在输出中自动创建的 **Video**（视频）和**Audio 1**（音频 1）组设置。

**删除“视频”和“音频 1”组设置**

1. 在 **Create job**（创建任务）页面上，在左侧 **Job**（任务）窗格的 **Output groups**（输出组）下，选择包含要删除的设置组输出。

1. **Video**（视频）组设置将自动显示在 **Stream settings**（直播设置）部分中。选择 **Remove video selector**（移除视频选择器）按钮。

1. **Audio 1**（音频 1）组设置将自动显示在 **Stream settings**（直播设置）部分中。选择 **移除** 按钮。

## 如何指定多个字幕轨道
<a name="multilang-scc-srt-output-captions"></a>

 对于每个 SRT、SCC 或 SMI 输出，每个字幕选择器必须有一个输出。在字幕输出中，在 **字幕源** 下选择为要包括的轨道设置的字幕选择器。它们将出现在设置组列表中：**字幕选择器 1**、**字幕选择器 2**，以此类推。

# 图文输出字幕
<a name="teletext-output-captions"></a>

 本节介绍如何在中配置图文电视输出字幕。 AWS Elemental MediaConvert主要主题包括：
+ 图文电视到图文电视传递
+ 图文电视到图文电视，页面重新映射。
+ 来自其他字幕格式的图文电视。

如何设置输出图文电视字幕，取决于您是要将字幕移动到不同的图文电视页面，还是只想将字幕从输入传送到输出。

## 图文电视转图文电视直通
<a name="teletext-to-teletext-passthrough"></a>

如果您的输入字幕格式为图文电视，并且您希望输出字幕与输入字幕位于相同的页面上，且样式相同，则可以将输入字幕传递到输出中。为此，请设置字幕：
+ 确保您的输入字幕使用一个字幕选择器进行设置。有关更多信息，请参阅 [图文输出字幕](teletext.md)。
+ 在与视频相同的输出组和相同的输出中，创建一个字幕选项卡。无论您有多少输出图文电视页面，这个字幕选项卡都代表您的所有输出字幕。
+ 在输出字幕选项卡中，为字幕来源选择输入 **Captions source**（字幕来源）。
+ 不要在“输出字幕”选项卡上为任何其他设置指定值。

当您直接在 JSON 任务规范中任务时，一个字幕选项卡对应一个 `CaptionDescriptions` 子项。

## 图文电视到图文电视，页面重新映射
<a name="teletext-to-teletext-page-remapping"></a>

如果您的输入字幕格式为图文电视，并且在输出中想要更改字幕所在的图文电视页面，则可以在输入和输出中指定页面。为此，请设置字幕：
+ 确保您的输入字幕为每个图文电视页面设置了一个字幕选择器，并且在设置中为每个输入字幕选择器指定页码。有关更多信息，请参阅 [图文输出字幕](teletext.md)。
+ 在与视频相同的输出组和相同的输出中，为每个输出图文电视页面创建一个字幕选项卡。
+ 在每个输出字幕选项卡中，为字幕来源选择一个输入 **Captions source**（字幕来源）。
+ 在每个输出字幕选项卡中，为 **Page number**（页码）指定输出中这些字幕所需的图文电视页码。可选择为 **Language**（语言）、**Description**（描述）和 **Page types**（页面类型）提供值。

## 来自其他字幕格式的图文电视
<a name="teletext-from-other-captions-formats"></a>

如果您的输入字幕采用图文电视以外的格式，则必须为输出字幕指定图文电视页面。 MediaConvert 支持以下字幕工作流程：
+ 单个输入字幕可追踪到单个输出图文电视页面。
+ 单个输入字幕可以追踪到多个输出图文电视页面。每个输出页面都复制其他输出页的内容。
+ 多个输入字幕可追踪到多个输出图文电视页面。您可以使用字幕选择器来指定要在每个输出图文电视页面上包含哪些字幕。

像这样设置字幕：
+ 确保您的输入字幕设置为要映射到图文电视页面的每个字幕轨道都有一个字幕选择器。有关更多信息，请参阅 [创建输入字幕选择器](including-captions.md#create-input-caption-selectors)。
+ 在与视频相同的输出组和相同的输出中，为每个输出图文电视页面创建一个字幕选项卡。
+ 在每个输出字幕选项卡中，为字幕来源选择一个输入 **Captions source**（字幕来源）。
+ 在每个输出字幕选项卡中，为 **Page number**（页码）指定输出中这些字幕所需的图文电视页码。可选择为 **Language**（语言）、**Description**（描述）和 Page types（页面类型）提供值。

# 烧入输出字幕
<a name="burn-in-output-captions"></a>

 本节介绍如何在中配置烧录输出字幕。 AWS Elemental MediaConvert主要主题包括：
+ 在何处指定字幕。
+ 如何指定多个字幕轨道。
+ 如何使用样式传递。
+ 非英语字体和不支持的字符。

*烧入*是一种传输字幕的方式，而不是字幕格式。烧入方法将字幕直接写入视频帧，将视频内容的一些像素替换为字幕。如果您希望在输出中烧入字幕，请根据以下信息设置字幕。

## 在何处指定字幕
<a name="where-burn-in-output-captions"></a>

将字幕放在与视频相同的输出组和输出中。

## 如何指定多个字幕轨道
<a name="multilang-burn-in-output-captions"></a>

您只能在每个输出中烧入一个字幕轨道。

## 如何使用样式直通
<a name="how-to-use-style-passthrough"></a>

您可以选择如何对输出视频中显示的烧录字幕文本进行样式化。有几个选项，包括样式直通、默认设置或手动覆盖。

当您将样式直通设置为 “启用” 时，将 MediaConvert 使用输入字幕中的可用样式和位置信息。请注意，所有缺失的样式信息都 MediaConvert使用默认设置。

MediaConvert 支持以下输入字幕格式的样式直通：
+ 辅助
+ 嵌入
+ SCTE-20
+ SCC
+ TTML
+ STL (EBU STL)
+ SMPTE-TT（基于文本）
+ 图文
+ IMSC
+ WebVTT

当您将样式直通设置为 “禁用” 时， MediaConvert 会忽略输入中的样式信息并使用默认设置：带有黑色轮廓的白色文本、底部居中位置和自动调整大小。

 无论您是否将样式直通设置为启用，您都可以选择手动覆盖任何单个样式选项。

**注意**  
TTML 和类似 TTML（IMSC、SMPTE-TT）的输入有特殊的样式格式要求。有关更多信息，请参阅 [TTML 样式格方式](ttml-style-formatting.md)。

## 如何指定字体脚本
<a name="how-to-specify-the-language-script-burnin"></a>

AWS Elemental MediaConvert 根据您在输出字幕设置中指定的语言，自动为您的字幕选择合适的脚本。如果您选择的语言有多个可能的脚本，请指定您想要的脚本。

**确保服务使用正确的字体脚本**

1. 在 **Encoding settings**（编码设置）下的 **Captions**（字幕）部分中，为 **Language**（语言）选择字幕文本的语言。

1. 如果您指定的语言有多个可能的脚本，请使用 **Font script**（字体脚本）来指定脚本。

   例如，如果您 **语言**选择 **中文**，请使用 **字体脚本**选择 **简体中文**或 **繁体中文**。在这种情况下，如果您没有为 **Font script**（字体脚本）指定值，则该服务将默认为简体中文。
**提示**  
在大多数情况下，对于 **Font script**（字体脚本），您可以保留 **Automatic**（自动）默认值。当您这样做时，服务会根据字幕文本的语言选择脚本。

## 非英语字体和不支持的字符
<a name="non-english-unsupported"></a>

当您的输入字体使用非英语字体脚本时，您的输出烧录字幕可能包含不支持的 Unicode 字符 `□`。要解决此问题，请将 **Style passthrough**（样式直通）设置为 **Enabled**（启用）。

# 无障碍字幕的设置
<a name="accessibility-captions"></a>

在创建 HLS 或 CMAF HLS 输出并包含 ISMC 或 WebVTT 字幕曲目时，可以在输出清单中添加字幕的可访问性属性。 MediaConvert 根据 [Apple 设备的 HLS 创作规范第 4.5 和 4.6 节](https://developer.apple.com/documentation/http_live_streaming/hls_authoring_specification_for_apple_devices)添加这些属性。

当你将 “**无障碍字幕**” (`accessibility`) 设置为 “**启用**” (`ENABLED`) 时， MediaConvert 会将以下属性添加到清单中的字幕轨道中`EXT-X-MEDIA`：`CHARACTERISTICS="public.accessibility.describes-spoken-dialog,public.accessibility.describes-music-and-sound"`和`AUTOSELECT="YES"`。

如果字幕轨道不打算提供此类**无障碍**功能，则保留默认值 “禁用” (`DISABLED`)。 MediaConvert 不会添加上一段中的属性。

# 使用输出组指定流媒体程序包类型或独立文件
<a name="outputs-file-ABR"></a>

AWS Elemental MediaConvert 输出函数因其所属的输出组类型而异。

文件  
 在 **File**（文件）输出组中，您设置的每个输出都会生成一个独立的输出文件。  
例如，您可以设置一个包含所有视频、音频和字幕的输出。您也可以为 sidecar 字幕设置单独的输出（例如，TTML）。

流式传输输出程序包  
在以下输出组中，您设置的输出是单个自适应比特率 (ABR) 流媒体程序包的不同部分：CMAF、Apple HLS、DASH ISO 和 Microsoft Smooth Streaming。

在 ABR 输出组中，每个输出通常是媒体的一个元素。也就是说，每个输出都是自适应比特率 (ABR) 堆栈中的一个部分。例如，您可能有三种分辨率的视频的输出、两种音频语言轨道中每一种的输出以及两种字幕语言中每一种的输出。

下图显示了 ABR 输出组中的输出与 MediaConvert 创建的文件之间的关系。每个橙色框对应于输出组中的一个输出。在本例中，有三个视频分辨率、采用两种语言的音频和采用两种语言的字幕。该程序包包含分段音频、视频和字幕文件以及告知播放器要下载哪些文件和何时播放这些文件的清单文件。

![\[ABR 堆栈中的每个副本在输出组中具有自己的输出。\]](http://docs.aws.amazon.com/zh_cn/mediaconvert/latest/ug/images/ABRsegSeparately.png)


单个作业可以生成零到多个 独立文件以及零到多个流式处理包。要创建多个单独文件，请在您的作业中添加单个文件输出组，并在该输出组中添加多个输出。要创建多个流式处理包，请将多个 **CMAF**、**AppleHLS**、**DASH ISO** 或 **Microsoft 平滑流**输出组添加到您的作业。

下图显示了一个生成两个独立的.mp4 文件、两个Apple HLS软件包和一个CMAF软件包的作 MediaConvert 业。包含 2 个输出的单个文件输出组将生成 2 个单独的文件。包含 7 个输出的单个 Apple HLS 输出组将生成包含 7 个 ABR 部分的单个可查看包。

![\[MediaConvert 生成两个独立的.mp4 文件、两个 Apple HLS 包和一个 CMAF 软件包。\]](http://docs.aws.amazon.com/zh_cn/mediaconvert/latest/ug/images/jobSetupToOutput.png)


有关在您的作业中设置输出组和输出的信息，请参阅[教程：配置作业设置](setting-up-a-job.md)。

# 选择您的 ABR 流式处理输出组
<a name="choosing-your-streaming-output-groups"></a>

要创建媒体资产以供用户流式传输到其设备，请选择一个或多个自适应比特率 (ABR) 输出组：Apple HLS、DASH ISO、Microsoft Smooth Streaming 或 CMAF。输出组的类型决定了哪些媒体播放器可以播放从该输出组 MediaConvert 创建的文件。

**注意**  
在设置 CMAF、DASH ISO 或 Microsoft Smooth Streaming 输出组时，请确保正确设置片段长度。有关设置片段长度的信息，请参阅[设置流输出的片段长度](setting-the-fragment-length.md)。

下表总结了输出组与媒体播放器之间的关系。


| 媒体播放器 | 使用此输出组 | 
| --- | --- | 
| 大约 2013 年之前的 Apple 设备 | Apple HLS | 
| Apple 设备，较新 | CMAF | 
| 最智能的安卓设备 TVs | CMAF 或 DASH ISO | 
| Microsoft 设备 | Microsoft Smooth Streaming | 

**注意**  
MediaConvert 按转码输出时间的每分钟计费，而不是按作业收费。因此，当您将输出组添加到作业时，成本将变得更高。  
例如，包含一个 Apple HLS 程序包和一个 DASH ISO 程序包的作业的费用是只包含其中一个程序包的作业的两倍。这是假设转码设置相同。

**确定所需的输出组**

1. 确定您希望最终观看者能够在其上播放转码媒体资产的设备。如果您想让您的资产在所有可能的设备上播放，则包含以下输出组：
   + Apple HLS
   + DASH ISO 或 CMAF
   + Microsoft Smooth Streaming

1. 考虑是否使用高级编码功能。要将以下任一内容传输到 Apple 设备，您还必须包含一个 CMAF 输出组：
   + High-dynamic-range (HDR) 视频
   + H.265 (HEVC) 编码的视频

   如果您包含 CMAF 输出，则无需创建 DASH ISO 输出，因为与 DASH 兼容的所有常用播放器也与 CMAF 兼容。
**注意**  
有一些不常见的DASH播放器明确要求使用视频分割扩展名类型.mp4。 MediaConvert 输出.cmfv 格式的 CMAF 视频片段。要创建与这些播放器兼容的输出，请将 DASH ISO 输出组包含在作业中。

1. 考虑成本权衡。

   如果您不需要支持在大约 2013 年之前生产的播放器，并且您不需要支持需要 .mp4 视频段的极少使用的 DASH 播放器，则可以包含单个 CMAF 输出组而不是同时包含 DASH ISO 和 Apple HLS。创建单个 CMAF 包而不是单独的 DASH ISO 和 Apple HLS 程序包也可以在视频存储和分发方面节省成本。这是因为您只能存储和分发一组视频和音频文件。

# 设置流输出的片段长度
<a name="setting-the-fragment-length"></a>

对于除 HLS（CMAF、DASH 和 Microsoft Smooth Streaming）之外的所有 ABR 流输出组，您为 **Fragment length (片段长度)** (`FragmentLength`) 指定的值必须与您指定的其他输出设置配合使用。如果错误设置了 **Fragment length (片段长度)**，在查看者观看输出视频时，其播放器可能会发生崩溃。这种情况可能会发生，因为播放器期望在视频结尾有其他片段，并请求不存在的片段。

**片段长度**受**已关闭的 GOP 节奏**（`GopClosedCadence`）、**GOP 大小**（`GopSize`）和**帧率**（`FramerateNumerator`、`FramerateDenominator`）的值约束。有关在控制台和 JSON 作业规范中查找这些设置的信息，请参阅[查找与片段长度相关的设置](#finding-the-settings-related-to-fragment-length)。

**注意**  
在将输出**帧率**设置为**跟随源**时，确保输入视频文件的帧率与您为输出**片段长度**指定的值配合使用。输入视频文件的帧速率与输出帧速率相同。

**Topics**
+ [片段长度的规则](#rule-for-fragment-length)
+ [片段长度示例](#fragment-length-examples)
+ [查找与片段长度相关的设置](#finding-the-settings-related-to-fragment-length)

## 片段长度的规则
<a name="rule-for-fragment-length"></a>

片段长度必须是整数，并且必须是此值的倍数：**GOP 大小** x **已关闭的 GOP 节奏** ÷ **帧率**

## 片段长度示例
<a name="fragment-length-examples"></a>

**示例：正确设置**  
已关闭的 GOP 节奏 = 1

帧率 = 30

GOP 大小 = 60 帧

片段长度 = 2

**示例：错误设置**  
已关闭的 GOP 节奏 = 1

帧率 = 50

GOP 大小 = 90 帧

片段长度 = 2

## 查找与片段长度相关的设置
<a name="finding-the-settings-related-to-fragment-length"></a>

在设置**片段长度**时，请检查**已关闭的 GOP 节奏**、**GOP 大小**和**帧率**的值。

### 片段长度
<a name="fragment-length"></a>

您可以使用控制台或 JSON 作业规范来设置片段长度。**Fragment length (片段长度)** 设置将应用于输出组，并会影响该组中的每个输出。

**查找 **Fragment length (片段长度)** 设置（控制台）**

1. 在 **Create job**（创建任务）页面上，在左侧 **Job**（任务）窗格的 **Output groups**（输出组）下，选择 CMAF、DASH ISO 或 Microsoft 平滑流式处理输出组的名称。

1. 在右侧的组设置部分中，找到 **Fragment length (片段长度)**。

   组设置部分的标题为 **CMAF group settings (CMAF 组设置)**、**DASH ISO group settings (DASH ISO 组设置)** 或 **MS Smooth group settings (MS Smooth 组设置)**。

**查找 **Fragment length (片段长度)** 设置（JSON 作业规范）**
+ 查找作为 `OutputGroupSettings` 的子级的 `FragmentLength`，如以下示例所示：

  ```
  {
    "Settings": {
      ...
      "Inputs": [
        ...
      ],
      "OutputGroups": [
        {
          "Name": "DASH ISO",
          "OutputGroupSettings": {
            "Type": "DASH_ISO_GROUP_SETTINGS",
            "DashIsoGroupSettings": {
              "SegmentLength": 30,
              "FragmentLength": 2,
              "SegmentControl": "SINGLE_FILE",
              "HbbtvCompliance": "NONE"
            }
          },
  		...
  ```

### 已关闭的 GOP 节奏、GOP 大小和帧速率
<a name="closed-gop-cadence-gop-size-and-framerate"></a>

您可以使用控制台或 JSON 作业规范来设置**已关闭的 GOP 节奏**、**GOP 大小**和**帧率**。这些设置分别应用于每个输出。确保为输出组中的每个输出设置的值与您为输出组的 **片段长度** 指定的值配合使用。

**注意**  
您的 ABR 堆栈包含多个输出。确保在每个输出中设置这些值。

**查找输出的编码设置（控制台）**

1. 在 **Create job**（创建任务）页面上，在左侧 **Job**（任务）窗格的 **Output groups**（输出组）下，选择输出的名称，例如 **Output 1**（输出 1）、**Output 2**（输出 2）等。

1. 在 **Encoding settings (编码设置)** 部分中，已自动选择 **Video (视频)** 选项卡。在此选项卡上找到**已关闭的 GOP 节奏**、**GOP 大小**和**帧率**。

**查找输出的编码设置（JSON 作业规范）**
+ 

查找作为编解码器设置的子级的 `GopClosedCadence`、`GopSize`、`FramerateNumerator` 和 `FramerateDenominator`，如以下示例所示。在此示例中，编解码器为 `H_264`，因此，编解码器设置的父设置为 `H264Settings`。

  ```
  {
    "Settings": {
      ...
      "Inputs": [
        ...
      ],
      "OutputGroups": [
        {
          "Name": "DASH ISO",
          ...
          },
          "Outputs": [
            {
              "VideoDescription": {
                ...
                "CodecSettings": {
                  "Codec": "H_264",
                  "H264Settings": {
                    "InterlaceMode": "PROGRESSIVE",
                    "NumberReferenceFrames": 3,
                    "Syntax": "DEFAULT",
                    "Softness": 0,
                    "GopClosedCadence": 1,
                    "GopSize": 60,
  				  ...
                    "FramerateNumerator": 60,
                    "FramerateDenominator": 1
                  }
                },
                ...
              },
  ```

# HLS 播放器版本支持
<a name="hls-player-version-support"></a>

AWS Elemental MediaConvert 根据您启用的功能自动设置玩家版本元数据。您创建的大多数 HLS 资源 MediaConvert 都与 HLS 玩家版本 2 及更高版本兼容。

该列表显示可能需要更新的播放器支持的功能：

**Add I-frame only manifest** (添加仅 I 帧清单)：HLS output group (HLS 输出组) > Output (输出) > Advanced (高级) > Add I-frame only manifest (添加仅 I 帧清单)  
在选择 **Include** (包括) 时，查看者可以使用 HLS 播放器版本 4 和更高版本播放资产。  
在选择 **Exclude** (排除) 时，查看者可以使用 HLS 播放器版本 2 和更高版本播放资产。

**音轨类型** ：HLS 输出组 > 输出 > 输出设置 > 高级 > 音轨类型  
在为您的任何音频变体选择 **Alternate audio** (备用音频) 选项之一时，查看器可以使用 HLS 播放器版本 4 和更高版本播放资产。  
如果为 **音轨类型** 选择 **仅音频变体流**，或者为您的任何音频变体取消选择 **音轨类型**，查看器可以使用 HLS 播放器版本 2 和更高版本播放资产。

**DRM encryption method** (DRM 加密方法)：HLS output group (HLS 输出组) > DRM encryption (DRM 加密) > Encryption method (加密方法)  
在为 **DRM encryption** (DRM 加密) > **Encryption method** (加密方法) 选择 **SAMPLE-AES** 时，查看者可以使用 HLS 播放器版本 5 和更高版本播放资产。  
在为 **DRM encryption** (DRM 加密) > **Encryption method** (加密方法) 选择任何其他值时，查看者可以使用 HLS 播放器版本 2 和更高版本播放资产。

**描述性视频服务标志**：HLS 输出组 > 输出（必须纯音频）> 输出设置 > 描述性视频服务标志  
此设置在 CMAF 输出组中也可用：CMAF 输出组 > 输出 > CMAF 容器设置 > 高级 > 描述性视频服务标志  
要找到此设置，您的 HLS 或 CMAF 输出必须只有音频设置。在 HLS 输出中，必须删除默认的 **Video**（视频）选项卡。  
当您为 **Descriptive video service flag**（描述性视频服务标志）选择 **Flag**（标志）时，观看者可以在版本 5 及更高版本的 HLS 玩家中播放该资产。  
要创建兼容的 Apple HLS 输出：将 **Descriptive video service flag**（描述性视频服务标志）设置为 **Flag**（标志）时，还必须将 **Audio track type**（音频轨道类型）设置为 **Alternative audio, auto select, default**（备选音频、自动选择、默认）或 **Alternative audio, auto select, not default**（备选音频、自动选择，而不是默认）。

**Manifest duration format** (清单持续时间格式)：HLS output group (HLS 输出组) > Apple HLS group settings (Apple HLS 组设置) > Advanced (高级) > Manifest duration format (清单持续时间格式)   
在将清单持续时间格式设置为 **Integer** (整数) 时，查看者可以使用 HLS 播放器版本 2 和更高版本播放资产。  
在将清单持续时间格式设置为 **Floating point** (浮点) 时，查看者可以使用 HLS 播放器版本 3 和更高版本播放资产。

**Segment control** (段控制)：HLS output group (HLS 输出组) > Apple HLS group settings (Apple HLS 组设置) > Segment control (段控制)  
在将段控制设置为 **Single file** (单个文件) 时，查看者可以使用 HLS 播放器版本 4 和更高版本播放资产。  
在将段控制设置为 **Segmented files** (分段文件) 时，查看者可以使用 HLS 播放器版本 2 和更高版本播放资产。

# 推荐的视频质量编码设置
<a name="video-quality"></a>

使用创建作业时 AWS Elemental MediaConvert，您选择的编码设置会影响视频质量、文件大小和播放器兼容性。

您可以将作业配置为 MediaConvert 允许自动选择视频质量的最佳编码设置，同时保持输出文件大小均衡。或者，您也可以手动指定编码设置，以满足您的输出或交付要求。

本节将介绍基本概念，并描述一些典型设置，同时指导您选择适用于视频质量的优化设置。

**Topics**
+ [GOP 结构和帧类型参考](#gop-structure)
+ [GOP 大小推荐设置](#gop-size-settings)
+ [参考帧之间的 B 帧推荐设置](#reference-frames)
+ [已关闭的 GOP 节奏推荐设置](#closed-gop-cadence)
+ [动态子 GOP 推荐设置](#dynamic-sub-gop)
+ [GOP 参考 B 帧推荐设置](#gop-reference-b-frames)
+ [最小 I 间隔推荐设置](#min-i-interval)
+ [自适应量化推荐设置](#adaptive-quantization)

## GOP 结构和帧类型参考
<a name="gop-structure"></a>

创建作业时，为输出选择的图片组 (GOP) 设置会影响视频质量和播放器兼容性。本节介绍 GOP 的基本概念，并描述一些典型 GOP 设置，同时指导您选择适用于视频质量的优化设置。

GOP 是多种压缩视频帧类型的一种特定排列形式。这些帧类型包括以下内容：

 **I-Frames**   
内编码帧。包含解码器用于解码帧的所有信息。通常，I 帧在视频流中占用的位数最多。

 **IDR-Frames**   
即时解码器刷新帧。与 I 帧类似，它们包含解码器用来解码帧的所有信息。但是，帧不能引用在 IDR 帧之前出现的任何帧。

 **P-Frames**   
预测帧。包含当前帧与其之前一个或多个帧之间的差值。P 帧的压缩效果比 I 帧好得多，并且在视频流中使用的位数更少。

 **B-Frames**  
双向预测帧。包含当前帧与前后一个或多个帧之间的差值。B 帧的压缩率最高，在视频流中占用的位数最少。

典型的 GOP 以 IDR 帧开头，并按照 B- 和 P- 帧重复出现的模式依次进行。例如：`IDRBBPBBPBBPBB`

以下主题提供了有关各个 GOP 设置的更多信息，并提供了可优化视频质量的建议设置。

## GOP 大小推荐设置
<a name="gop-size-settings"></a>

GOP 大小是指 GOP 中的帧数，它定义了 IDR 帧之间的间隔。例如，如果 GOP 以 IDR 帧开头，并且有 29 个 B 帧 和 P 帧的组合，则 GOP 的大小为 30 帧。

典型的 GOP 大小为 1-2 秒，与视频帧速率相对应。例如，如果输出帧速率为每秒 30 帧，则典型的 GOP 大小为 30 或 60 帧。

当您将输出视频编解码器设置为 `AVC (H.264)` 或 `HEVC (H.265)` 时，请将 **GOP 模式控制**设置为 `Auto`。这 MediaConvert 允许选择最佳 GOP 大小。

**注意**  
流媒体视频格式，包括 HLS、DASH、CMAF 和 MSS，要求片段或片段长度为 GOP 大小的倍数。有关更多信息，请参阅 [设置流输出的片段长度](setting-the-fragment-length.md)。当您将这些视频格式的 GOP 模式控制设置为 “自动” 时， MediaConvert 会自动选择相对于片段或片段长度的兼容且经过优化的 GOP 大小。

## 参考帧之间的 B 帧推荐设置
<a name="reference-frames"></a>

定义 MediaConvert 可以在参考帧之间使用的最大 B 帧数。

如果 **GOP 参考 B 帧**设置为 `Disabled`，则典型值为 1 或 2；如果 **GOP 参考 B 帧**设置为 `Enabled`，则典型值为 3–5。

当您将输出视频编解码器设置为 `AVC (H.264)` 或 `HEVC (H.265)` 时，请将**参考帧之间的 B 帧**留空。这 MediaConvert 允许在参考帧之间选择最佳数量的 B 帧。

## 已关闭的 GOP 节奏推荐设置
<a name="closed-gop-cadence"></a>

**封闭的 GOP 节奏**定义了 P 或 B 帧能够参考的数量。 GOPs GOP 可以是*打开*的，也可以是*关闭*的。开放的框架 GOPs 可以引用来自其他 GOP 的框架，而封闭 GOPs 的框架只能引用 GOP 本身内部的框架。

当您将输出视频编解码器设置为`AVC (H.264)`或时`HEVC (H.265)`，请将 Closed **GOP 节奏**留空， MediaConvert 以便选择最佳的闭合 GOP 节奏。

## 动态子 GOP 推荐设置
<a name="dynamic-sub-gop"></a>

动态子 GOP 可以提高高动态内容的主观视频质量。它通过允许 B 帧的数量变化来做到这一点。

当您将输出视频编解码器设置为 `AVC (H.264)` 或 `HEVC (H.265)` 时，请将**动态子 GOP** 设置为 `Adaptive`。这 MediaConvert 允许确定最佳的子GOP。

## GOP 参考 B 帧推荐设置
<a name="gop-reference-b-frames"></a>

将输出视频编解码器设置为 `AVC (H.264)` 或 `HEVC (H.265)` 时，将 **GOP 参考 B 帧**设置为 `Enabled`，以允许其他帧类型引用 B 帧。相对于位元速率，这可以提高输出的视频质量。

## 最小 I 间隔推荐设置
<a name="min-i-interval"></a>

最小 I 间隔强制执行 IDR 帧之间的最小帧数。这包括在 GOP 开头或通过场景变化检测创建的​​帧。当在彼此附近创建两个 IDR 帧时，使用最小 I 间隔通过改变 GOP 大小来提高视频压缩率。

当您将输出视频编解码器设置为 `AVC (H.264)` 或 `HEVC (H.265)` 时，将**最小 I 间隔**留空。这 MediaConvert 允许选择最佳的最小 i 间隔。

## 自适应量化推荐设置
<a name="adaptive-quantization"></a>

自适应量化选择应用于所使用的不同量化模式的强度，包括闪烁、 MediaConvert 空间和时间量化。 MediaConvert 使用自适应量化根据视频的复杂程度分配比特。

当您将输出视频编解码器设置为`AVC (H.264)``HEVC (H.265)``XAVC`、或时，请将**自适应量化**设置为`Auto` MediaConvert 以允许选择最佳的自适应量化。

# 在作业设置中使用变量
<a name="using-variables-in-your-job-settings"></a>

您可以在作业设置中使用变量（也称为*格式标识符*） 。格式标识符是可以放在作业设置中的值，这些值在输出中的解析方式不同，具体取决于输入文件或作业的特征。它们在您打算复制和重复使用的输出预设、作业模板和作业中特别有用。请注意，变量区分大小写。

例如，您可以在**目标**设置中使用日期格式标识符 `$d$`。如果您希望按作业的开始日期和时间组织输出，则可为 **Destination (目标)** 输入 **s3://amzn-s3-demo-bucket1/\$1d\$1/**。对于在 2020 年 6 月 4 日开始的作业，该服务将在 `s3://amzn-s3-demo-bucket1/20200604/` 中创建您的输出。

有关可用格式标识符的列表以及如何使用这些标识符的示例，请参阅 [设置变量与示例列表](#list-of-settings-variables-with-examples)。

有关在流输出中功能不同的格式标识符的信息，请参阅 [将设置变量与流式处理输出结合使用](#using-settings-variables-with-streaming-outputs)。

**Topics**
+ [设置变量与示例列表](#list-of-settings-variables-with-examples)
+ [将设置变量与流式处理输出结合使用](#using-settings-variables-with-streaming-outputs)
+ [指定最小位数](#specifying-a-minimum-number-of-digits)

## 设置变量与示例列表
<a name="list-of-settings-variables-with-examples"></a>

下表提供了有关可在 AWS Elemental MediaConvert 作业中使用的每种格式标识符的信息。有关在流输出中功能不同的格式标识符的信息，请参阅 [将设置变量与流式处理输出结合使用](#using-settings-variables-with-streaming-outputs)。


| 格式标识符 | 要放在作业设置中的值 | 兼容的作业设置 | 说明和示例 | 
| --- |--- |--- |--- |
| 日期和时间 |  `$dt$`  |  目标位置 名称修饰符 段修饰符  |  作业开始时间的 UTC 日期和时间。 格式：YYYYMMDDTHHMMSS 示例：对于在 2020 年 6 月 4 日下午 3:05:28 开始的作业，**\$1dt\$1** 将解析为 `20200604T150528`。  | 
| 日期 |  `$d$`  |  目标位置 名称修饰符 段修饰符  |  作业的开始时间的 UTC 日期。 格式：YYYYMMDD 示例：对于在 2020 年 6 月 4 日开始的作业，**\$1d\$1** 将解析为 `20200604`。  | 
| 时间 |  `$t$`  |  目标位置 名称修饰符 段修饰符  |  作业的 UTC 开始时间。 格式：HHMMSS 示例：对于在下午 3:05:28 开始的作业，**\$1t\$1** 将解析为 `150528`。  | 
| 视频比特率 |  `$rv$`  |  名称修饰符 段修饰符  |  输出的视频比特率（以千位为单位）。对于 QVBR 输出，该服务使用视频最大比特率（以千位为单位）。 示例：如果您将 **Encoding settings (编码设置)**、**Video (视频)**、**Bitrate (bits/s) (比特率(位/秒))** 设置为 **50000000**，则 **\$1rv\$1** 将解析为 `50000`。  | 
| 音频比特率 |  `$ra$`  |  名称修饰符 段修饰符  |  输出中所有音频比特率的总计（以千位为单位）。 示例：如果您有一个带单个音频选项卡的输出，并且您将 **Encoding settings (编码设置) **、**Audio 1 (音频 1) **、**Bitrate (kbit/s) (比特率(千位/秒)) ** 设置为 **256000**，则 **\$1ra\$1** 将解析为 `256000`。  | 
| 容器比特率 |  `$rc$`  |  名称修饰符 段修饰符  |  输出的组合音频和视频比特率（以千位为单位）。 示例：您有一个带 **Video (视频)** 设置选项卡和 **Audio 1 (音频 1)** 设置选项卡的输出。如果您将 **Encoding settings (编码设置)**、**Video (视频)**、**Bitrate (bits/s) (比特率(位/秒))** 设置为 **5000000**，并将 **Encoding settings (编码设置)**、**Audio (音频)**、**Bitrate (bits/s) (比特率(位/秒))** 设置为 **96000**（96 千位），则 **\$1rc\$1** 将解析为 `5096`。  | 
| 视频帧宽度 |  `$w$`  |  名称修饰符 段修饰符  |  帧宽度或水平分辨率（以像素为单位）。 示例：如果您将 **Encoding settings (编码设置)**、**Video (视频)**、**Resolution (w x h) (分辨率(宽 x 高))** 设置为 **1280** x **720** ，则 **\$1w\$1** 将解析为 `1280`。  | 
| 视频帧高度 |  `$h$`  |  名称修饰符 段修饰符  |  帧高度或垂直分辨率（以像素为单位）。 示例：如果您将 **Encoding settings (编码设置)**、**Video (视频)**、**Resolution (w x h) (分辨率(宽 x 高))** 设置为 **1280** x **720** ，则 **\$1h\$1** 将解析为 `720`。  | 
| Framerate |  `$f$`  |  名称修饰符 段修饰符  |  帧速率（以每秒帧数为单位），截断到最接近的整数。 示例：如果您的帧速率为 **59.940**，则 **\$1f\$1** 将解析为 `59`。  | 
| 输入文件名 |  `$fn$`  |  目标位置 名称修饰符 段修饰符  |  输入文件的名称（不带文件扩展名）。对于具有多个输入的作业，这是作业中指定的第一个文件。 示例：如果作业的 **Input 1 (输入 1)** 为 **s3://amzn-s3-demo-bucket/my-video.mov**，则 **\$1fn\$1** 将解析为 `my-video`。  | 
| 输出容器文件扩展名 |  `$ex$`  |  名称修饰符 段修饰符  |  因输出组而异。对于 **File group (文件组)** 输出，这是输出容器文件的扩展名。对于其他输出组，这是清单的扩展名。 文件组示例：如果您为**输出设置**选择 **MPEG2-TS**，则**容器**将**\$1ex\$1**解析为。`m2ts` HLS 组的示例：如果您的输出组是 HLS，则 **\$1ex\$1** 将解析为 `m3u8`。  | 
| \$1 |  `$$`  |  名称修饰符 段修饰符  |  转义的 `$`。 示例： 假设您提供以下值：   输入文件名： **file1.mp4**   目的地：**s3://amzn-s3-demo-bucket/**   名称修饰符：**my-video\$1\$1hi-res-**   您的输出文件名和路径将解析为 `s3://amzn-s3-demo-bucket/my-video$hi-res-file1.mp4`。  | 

## 将设置变量与流式处理输出结合使用
<a name="using-settings-variables-with-streaming-outputs"></a>

作业中的变量（也称作*格式标识符*）对 Apple HLS 和 DASH ISO 输出组中的输出的功能不同。差异如下：

**对于 Apple HLS 输出**  
当您在**分段修饰符**设置中使用日期和时间格式标识符（`$dt$`、`$t$`、`$d$`）时，这些格式标识符会解析为每个分段的完成时间，而不是作业的开始时间。

**注意**  
对于使用加速转码的作业，各个段可能将同时完成。这意味着日期和时间格式标识符并不总是解析为唯一值。

**对于 DASH ISO 输出**  
您可以在 **Name modifier (名称标识符)** 设置中使用两个额外的格式标识符。它们将影响 DASH 清单以及输出文件名。以下是标识符：

\$1Number\$1  
在您的输出文件名中，`$Number$` 将解析为一系列数字（从 1 开始递增）。这将替换段文件名中默认的九位段编号。例如：  
+ 如果为**名称修饰符**指定 **video\$1\$1Number\$1**，则该服务会创建名为 `video_1.mp4`、`video_2.mp4` 等的分段文件。
+ 如果只为**名称修饰符**指定 **video\$1**，则该服务会创建名为 `video_000000001.mp4`、`video_000000002.mp4`等的分段文件。
在你的 DASH 清单中， AWS Elemental MediaConvert 包含元素`startNumber`内部`duration`和`SegmentTemplate`元素，如下所示：`<SegmentTemplate timescale="90000" media="main_video_$Number$.mp4" initialization="main_video_$Number$init.mp4" duration="3375000"/>`  
如果您在一个输出中使用 `$Number$` 格式标识符，则也必须在输出组的所有其他输出中使用该标识符。

\$1Bandwidth\$1   
在您的输出文件名中，`$Bandwidth$` 将解析为输出中 **Video** **Bitrate (视频比特率)** 的值以及 **Audio** **Bitrate (音频比特率)** 的值。无论您是否包含此格式标识符，该服务都会在段文件名中使用九位段编号。  
例如，假设您指定以下值：  
+ **Video (视频)** **Bitrate (bits/s) (比特率(位/秒))**：**50000000**
+  **Audio (音频)** **Bitrate (kbits/s) ( 比特率(千位/秒))**：**96.0**（96000 位/秒）
+ **Name modifier (名称修饰符)**：**video\$1\$1Bandwidth\$1**
\$1Bandwidth\$1 的值解析为 50096000。该服务将创建段文件，这些文件名为 `video_50096000_000000001.mp4`、`video_50096000_000000002.mp4`，以此类推。  
在清单中， AWS Elemental MediaConvert 包含元素`startNumber`内部`duration`和`SegmentTemplate`元素，如下所示：`<SegmentTemplate timescale="90000" media="main_video_$Bandwidth$.mp4" initialization="main_video_$Bandwidth$init.mp4" duration="3375000"/>`。

\$1Time\$1  
在您的输出文件名中，`$Time$` 将解析为段的持续时间（以毫秒为单位）。在包含此格式标识符时，该服务不会在段文件名中使用默认的九位段编号。  
例如，如果您为**名称修饰符**指定 **video180\$1\$1\$1Time\$1**，则该服务会创建名为 `video180__345600.mp4`、`video180__331680.mp4` 等的分段文件。在这些示例中，段持续时间为 345600 毫秒和 331680 毫秒。  
在清单中， AWS Elemental MediaConvert 包含`SegmentTemplate`元素`SegmentTimeline`内部，如下所示：  

```
<Representation id="5" width="320" height="180" bandwidth="200000" codecs="avc1.4d400c">
        <SegmentTemplate media="video180_$Time$.mp4" initialization="videovideo180_init.mp4">
          <SegmentTimeline>
            <S t="0" d="345600" r="2"/>
            <S t="1036800" d="316800"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
```
如果您在一个输出中使用 `$Time$` 格式标识符，则也必须在输出组的所有其他输出中使用该标识符。

\$1陈述ID\$1  
在输出文件名中，`$RepresentationID$`解析为作业设置中输出的数字顺序。  
在清单中，在`SegmentTemplate`元素中 AWS Elemental MediaConvert 使用此标识符来引用每种表示的正确路径。  
当您需要按表示法 ID 整理 DASH 输出时，此格式标识符特别有用。

## 指定最小位数
<a name="specifying-a-minimum-number-of-digits"></a>

对于返回数字的格式标识符，您可以指定格式标识符将解析为的最小位数。执行此操作时，该服务会在任何返回较少位数的值之前添加填充零。

使用以下语法来指定位数：**%0[number of digits]**。将此值放在格式标识符的最后的 `$` 的前面。

例如，假设您的视频帧高度为 720，并且您希望指定至少四位数，以便它在您的文件名中显示为 `0720`。要执行此操作，请使用以下格式标识符：**\$1h%04\$1**。

**注意**  
值太大，无法用指定的位数表示，请使用更多的位数进行解析。