

# IVS 低延迟流式传输入门
<a name="getting-started"></a>

本文档将引导您完成设置第一个 Amazon Interactive Video Service (IVS) 实时流的步骤。

**Topics**
+ [步骤 1：创建亚马逊云科技账户](getting-started-create-account.md)
+ [步骤 2：设置根用户和管理用户](getting-started-setup-users.md)
+ [步骤 3：设置 IAM 权限](getting-started-iam-permissions.md)
+ [步骤 4：使用可选录制创建通道](getting-started-create-channel.md)
+ [步骤 5：设置流式传输软件](getting-started-set-up-streaming.md)
+ [步骤 6：查看您的实时流](getting-started-view-stream.md)
+ [步骤 7：查看您的服务限额限制（可选）](getting-started-check-service-quota.md)
+ [步骤 8：防止出现非预期内容和观看者（推荐）](getting-started-prevent-undesired-content.md)

# 步骤 1：创建亚马逊云科技账户
<a name="getting-started-create-account"></a>

要使用 Amazon IVS，您需要一个亚马逊云科技账户。如果您还没有账户，系统会在您注册时提示您创建一个账户。创建亚马逊云科技账户：

1. 打开 [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)。

1. 按照屏幕上的说明进行操作。

   在注册时，您将接到一通电话或收到一条短信，要求您输入一个验证码。此外，您还必须提供账单信息，尽管基本服务套餐是免费的。如果您没有使用注册的任何亚马逊云科技服务，系统将不会针对它们向您收费。

1. 创建账户后，您将收到一封电子邮件，其中包含**登录 URL** 和**用户名**以及另一封带有登录密码的电子邮件（来自您的 Amazon 账户管理员）。首次登录时，必须更改密码。

如果您想要使用现有的亚马逊云科技账户，请确保该账户使用 Amazon IVS 支持的亚马逊云科技区域：

1. 导航到 [Amazon IVS Console](https://console.aws.amazon.com/ivs)（Amazon IVS 控制台）。如果您看到正常的 IVS 控制台页面（显示“全球解决方案，区域内容”），则没有问题；请跳到[步骤 2：设置根用户和管理用户](getting-started-setup-users.md)。如果您被重定向到 Amazon“不支持的区域”页面，则需要选择一个新区域。

1. 选择相应的选项卡（对于 IVS，选择**直播**；对于 IVS Chat，选择**直播聊天**，然后选择列出的区域之一。*请记下您选择了哪个区域；稍后您会需要它*。

在任何时候，您都可以通过转至 [https://aws.amazon.com/](https://aws.amazon.com/) 并选择 **My Account**（我的账户）来查看亚马逊云科技账户活动并管理您的账户。

# 步骤 2：设置根用户和管理用户
<a name="getting-started-setup-users"></a>

当您注册亚马逊云科技账户时，系统会创建一个亚马逊云科技账户根用户。根用户有权访问该账户中的所有亚马逊云科技服务和资源。作为安全最佳实践，请[为管理用户分配管理访问权限](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html)，并且只使用根用户执行[需要根用户访问权限的任务](https://docs.aws.amazon.com/IAM/latest/UserGuide/root-user-tasks.html)。

## 保护您的亚马逊云科技账户根用户
<a name="setup-users-secure-root-user"></a>

1. 要以管理用户身份登录 IAM Identity Center，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录 URL。要获取使用 IAM Identity Center 用户登录方面的帮助，请参阅《Amazon 登录用户指南》中的[登录 Amazon 访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。**

   要获取使用根用户登录方面的帮助，请参阅《Amazon 登录用户指南》**中的[以根用户身份登录](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)。

1. 为您的根用户启用多重身份验证（MFA）。

   有关说明，请参阅《IAM 用户指南》**中的[为您的亚马逊云科技账户根用户启用虚拟 MFA 设备（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-root)。

## 创建管理用户
<a name="setup-users-create-admin-user"></a>

您应该创建一个管理用户，以避免使用根用户执行日常任务。
+ 对于日常管理任务，请在 <shared id="AWS"/> IAM Identity Center（Amazon Single Sign-On 的后继者）中为管理用户分配管理访问权限。有关说明，请参阅《*<shared id="AWS"/> IAM Identity Center（Amazon Single Sign-On 的后继者）用户指南*》中的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。
+ 要以管理用户身份登录 IAM Identity Center，请使用您在创建 IAM Identity Center 用户时发送到您的电子邮件地址的登录 URL。要获取使用 IAM Identity Center 用户登录方面的帮助，请参阅《Amazon 登录用户指南》中的[登录 Amazon 访问门户](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)。**

# 步骤 3：设置 IAM 权限
<a name="getting-started-iam-permissions"></a>

接下来，您必须创建 Amazon Identity and Access Management（IAM）policy，以授予用户一组基本权限（例如，创建 Amazon IVS 通道、获取流信息以及自动录制到 S3），并将该策略分配给用户。您可以在创建[新用户](#iam-permissions-new-user)时分配权限，也可以向[现有用户](#iam-permissions-existing-user)添加权限。这两项程序如下。

有关更多信息（例如，了解 IAM 用户和策略、如何将策略附加到用户以及如何限制用户可以使用 Amazon IVS 执行的操作），请参见：
+ [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#Using_CreateUser_console)中的*创建 IAM 用户*
+ [Amazon IVS 安全性](security.md) 中关于 IAM 和“IVS 的托管式策略”的信息。
+ 对于“录制到 S3”功能：[使用服务相关角色](security-service-linked-roles.md)和 *Amazon IVS 用户指南*中的 [自动录制到 Amazon S3](record-to-s3.md)。

您可以对 Amazon IVS 使用现有的 AWS 托管式策略，也可以创建新策略，该策略可自定义想要授予一组用户、组或角色的权限。下面介绍了这两种方法。

## 使用 IVS 权限的现有策略
<a name="iam-permissions-existing-policy"></a>

在大多数情况下，您需要对 Amazon IVS 使用 AWS 托管式策略。*IVS 安全性*的 [IVS 的托管式策略](security-iam-awsmanpol.md)部分对其进行了全面描述。
+ 使用 `IVSReadOnlyAccess` AWS 托管式策略，您的应用程序开发人员可以访问所有 IVS Get 和 List API 操作（低延迟和实时直播均适用）。
+ 使用 `IVSFullAccess` AWS 托管式策略，您的应用程序开发人员可以访问所有 IVS API 操作（低延迟和实时直播均适用）。

## 可选：为 Amazon IVS 权限创建自定义策略
<a name="iam-permissions-new-policy"></a>

按照以下步骤进行操作：

1. 登录 Amazon 管理控制台，并通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**策略**，然后选择**创建策略**。这时将会打开**指定权限**窗口。

1. 在**指定权限**窗口中，选择 **JSON** 选项卡，然后复制下列 IVS 策略并粘贴到**策略编辑器**文本区域。[该策略不包括所有 Amazon IVS 操作。您可以根据需要添加/删除（允许/拒绝）操作访问权限。有关 IVS 操作的详细信息，请参阅 [IVS 低延迟直播功能 API 参考](https://docs.aws.amazon.com//ivs/latest/LowLatencyAPIReference/Welcome.html)。]

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Effect": "Allow",
            "Action": [
               "ivs:CreateChannel",
               "ivs:CreateRecordingConfiguration",
               "ivs:GetChannel",
               "ivs:GetRecordingConfiguration",
               "ivs:GetStream",
               "ivs:GetStreamKey",
               "ivs:GetStreamSession",
               "ivs:ListChannels",
               "ivs:ListRecordingConfigurations",
               "ivs:ListStreamKeys",
               "ivs:ListStreams",
               "ivs:ListStreamSessions"
             ],
             "Resource": "*"
         },
         {
            "Effect": "Allow",
            "Action": [
               "cloudwatch:DescribeAlarms",
               "cloudwatch:GetMetricData",
               "s3:CreateBucket",
               "s3:GetBucketLocation",
               "s3:ListAllMyBuckets",
               "servicequotas:ListAWSDefaultServiceQuotas",
               "servicequotas:ListRequestedServiceQuotaChangeHistoryByQuota",
               "servicequotas:ListServiceQuotas",
               "servicequotas:ListServices",
               "servicequotas:ListTagsForResource"
            ],
            "Resource": "*"
         },
         {
            "Effect": "Allow",
            "Action": [
               "iam:AttachRolePolicy",
               "iam:CreateServiceLinkedRole",
               "iam:PutRolePolicy"
            ],
            "Resource": 
   "arn:aws:iam::*:role/aws-service-role/ivs.amazonaws.com/AWSServiceRoleForIVSRecordToS3*"
         }
      ]
   }
   ```

------

1. 继续在**指定权限**窗口中，选择**下一步**（滚动到窗口底部即可看到此按钮）。这时将打开**检查并创建**窗口。

1. 在**检查并创建**窗口中，输入**策略名称**，此外还可以选择添加**描述**。记下策略名称，因为您在创建用户时需要使用该名称（如下文所述）。选择 **Create policy**（创建策略）（位于窗口底部）。

1. 您将返回到 IAM 控制台窗口，您应该会在该窗口中看到一条横幅，确认您的新策略已创建。

## 创建新用户并添加权限
<a name="iam-permissions-new-user"></a>

### IAM 用户访问密钥
<a name="iam-permissions-new-user-access-keys"></a>

IAM 访问密钥包含一个访问密钥 ID 和一个秘密访问密钥。它们用于对您向 Amazon 发出的编程请求进行签名。如果没有访问密钥，您可以从 Amazon 管理控制台创建。作为最佳实践，请勿创建根用户访问密钥。

*仅当创建访问密钥时，您才能查看或下载秘密访问密钥。以后您无法恢复它们。*但是，您随时可以创建新的访问密钥；您必须拥有执行所需 IAM 操作的权限。

请务必安全地存储访问密钥。切勿与第三方共享（即使查询似乎来自 Amazon）。有关更多信息，请参阅《 IAM 用户指南》**中的[管理 IAM 用户的访问密钥](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。

### 过程
<a name="iam-permissions-new-user-procedure"></a>

按照以下步骤进行操作：

1. 在导航窗格中，选择**用户**，然后选择**创建用户**。这时将会打开**指定用户详细信息**窗口。

1. 在**指定用户详细信息**窗口中：

   1. 在**用户详细信息**下，键入要创建的新**用户名**。

   1. 选中**授予用户访问 Amazon 管理控制台的权限**。

   1. 出现提示时，请选择**我要创建 IAM 用户**。

   1. 在**控制台密码**下，选择**自动生成的密码**。

   1. 选中**用户下次登录时必须修改密码**旁的复选框。

   1. 选择**下一步**。这时将会打开**设置权限**窗口。

1. 在**设置权限**下，选择**直接附加策略**。这时将会打开**权限策略**窗口。

1. 在搜索框中，输入 IVS 策略名称（AWS 托管式策略或您之前创建的自定义策略）。找到该策略后，选中复选框以选择该策略。

1. 选择**下一步**（位于窗口底部）。这时将打开**检查并创建**窗口。

1. 在**检查并创建**窗口中，确认所有用户详细信息均正确无误，然后选择**创建用户**（位于窗口底部）。

1. 这时将会打开**找回密码**窗口，其中包含您的**控制台登录详细信息**。*妥善保存好此信息，以备将来参考*。完成后，选择**返回用户列表**。

## 向现有用户添加权限
<a name="iam-permissions-existing-user"></a>

按照以下步骤进行操作：

1. 登录 Amazon 管理控制台，并通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择**用户**，然后选择要更新的现有用户名。（单击选择用户名；不要选中选择框。）

1. 在**摘要**页面的**权限**选项卡中，选择**添加权限**。这时将会打开**添加权限**窗口。

1. 选择 **Attach existing policies directly**（直接附加现有策略）。这时将会打开**权限策略**窗口。

1. 在搜索框中，输入 IVS 策略名称（AWS 托管式策略或您之前创建的自定义策略）。找到该策略后，选中复选框以选择该策略。

1. 选择**下一步**（位于窗口底部）。这时将会打开**检查**窗口。

1. 在**检查**窗口中，选择**添加权限**（位于窗口底部）。

1. 在 **Summary**（摘要）页面上，确认已添加 IVS 策略。

# 步骤 4：使用可选录制创建通道
<a name="getting-started-create-channel"></a>

Amazon IVS 通道存储与实时流相关的配置信息。您首先创建一个通道，然后使用通道的流密钥向其提供视频以启动实时流。

作为通道创建的一部分，将分配以下项目：
+ *提取服务器*识别接收流的特定 Amazon IVS 组件以及提取协议（RTMPS 或 RTMP）。
+ 当您创建通道并使用通道授权流传输时，Amazon IVS 分配*流密钥*。***将流密钥视为秘密，因为它允许任何人流传输到通道***。
+ *播放 URL*标识要开始播放特定通道的终端节点。此终端节点可以在全球范围内使用。它会自动从 Amazon IVS 全球内容分发网络中选择最佳位置，以供查看者流传输视频。（请注意，Amazon IVS 不支持用于播放的自定义域。*请勿使用您自己的域代理播放 URL；这不起作用，并会导致出现问题。*）

 您可以通过 Amazon IVS 控制台或 Amazon CLI 创建通道，无论是否录制。将在下面讨论通道创建和录制。

# 自动录制到 Amazon S3
<a name="create-channel-auto-r2s3"></a>

您可以选择启用通道录制。如果启用了自动录制到 S3 功能，则通道上的所有流都会记录并保存到您拥有的 Amazon S3 存储桶中。随后，录制可用于按需播放。

*该设置是一个高级选项。*默认情况下，在创建通道时禁用录制。

在您设置通道进行录制之前，必须创建*录制配置*。这是一个资源，它指定存储通道录制流的 Amazon S3 位置。您可以使用控制台或 CLI 来创建和管理录制配置；这两个过程如下所示。创建录制配置后，您可以在创建通道时（如下所述）或之后，通过更新现有通道将其与通道关联。（在 API 中，请参阅 [CreateChannel](https://docs.aws.amazon.com//ivs/latest/LowLatencyAPIReference/API_CreateChannel.html) 和 [UpdateChannel](https://docs.aws.amazon.com//ivs/latest/LowLatencyAPIReference/API_UpdateChannel.html)。） 您可以将多个通道与相同的录制配置相关联。您可以删除不再与任何通道关联的录制配置。

请注意以下限制：
+ 您必须拥有 S3 存储桶。也就是说，设置要录制通道的账户必须拥有存储录制的 S3 存储桶。
+ 通道、录制配置和 S3 位置必须位于同一亚马逊云科技区域。如果您在其他区域创建通道并想要录制它们，则还必须在这些区域中设置录制配置和 S3 存储桶。

录制到您的 S3 存储桶需要使用您的亚马逊云科技凭证进行授权。要向 IVS 提供所需的访问权限，在创建录制配置时自动创建 Amazon IAM [服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) (SLR)：SLR 仅限于针对特定存储桶为 IVS 提供写入权限。

请注意，流传输位置与 Amazon 之间或 Amazon 内部的网络问题可能会在录制流时导致一些数据丢失。在这些情况下，Amazon IVS 将实时流优先于录制。为了实现冗余，请通过流传输工具在本地录制。

有关详细信息（包括如何在录制的文件上设置后期处理或 VOD 播放），请参阅[IVS 自动录制到 Amazon S3 \$1 低延迟直播功能](record-to-s3.md)。

## 如何禁用录制
<a name="getting-started-disable-recording"></a>

要在现有通道上禁用 Amazon S3 录制，请执行以下操作：
+ 控制台 – 在相关通道的详细信息页面的 **Record and store (记录和存储)** 部分，选择 **Disabled (已禁用)**，然后选择 **Save Channel (保存通道)**。这将删除录制配置与通道的关联；该通道上的流将不再被录制。
+ CLI – 运行 `update-channel` 命令并将录制配置 ARN 作为空字符串传入：

  ```
  aws ivs update-channel --arn "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh" --recording-configuration-arn ""
  ```

  这将返回一个通道对象，其中包含 `recordingConfigurationArn` 的空字符串，表示录制已禁用。

# 创建 IVS 通道的控制台说明
<a name="create-channel-console"></a>

这些步骤分为三个阶段：初始通道设置、设置为自动录制到 Amazon S3（可选）和最终通道创建。

## 初始化通道设置
<a name="create-channel-console-setup"></a>

1. 打开 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。

   （您还可通过 [Amazon 管理控制台](https://console.aws.amazon.com/)访问 Amazon IVS 控制台。）

1. 从导航栏中，使用 **Select a Region (选择区域)** 下拉菜单选择一个区域。您的新通道将在此区域创建。

1. 在 **Get started (开始使用)** 框（右上角）中，选择 **Create Channel (创建通道)**。

1. 在 **Channel configuration (通道配置)** 下，接受 **Default configuration (默认配置)**。（可选）指定一个 **Channel name (通道名称)**。通道名称不是唯一的，但它们为您提供了一种方法来区分通道而不是通道 ARN（Amazon 资源名称）。

   注意：**自定义配置**可用于指定某些非默认值，例如通道类型或 RTMP（而不是 RTMPS）提取。此处未记录自定义规格。  
![\[使用 IVS 控制台创建一个通道：在 Create Channel（创建通道）窗口中指定通道配置。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/images/Accept_Default_Configuration.png)

1. 如果您想要自动录制到 Amazon S3，请继续以下的 [设置为自动录制到 Amazon S3（可选）](#getting-started-create-channel-console-record-s3)。否则，跳过此步骤并直接前往 [最终通道创建](#getting-started-create-channel-console-final-creation)。

## 设置为自动录制到 Amazon S3（可选）
<a name="getting-started-create-channel-console-record-s3"></a>

请按照以下步骤在创建新通道时启用录制：

1. 在**创建通道**页面的**录制和存储流**中，打开**启用自动录制**。显示其他字段，以选择现有 **Recording configuration (录制配置)** 或新建一个。  
![\[使用 IVS 控制台创建一个通道：选择 Auto-record to Amazon S3（自动录制到 Amazon S3）。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/images/Select_Auto_Record.png)

1. 选择 **Create recording configuration (创建录制配置)**。此时会打开一个新窗口，其中选项用于创建 Amazon S3 桶并将其附加到新的录制配置。  
![\[使用 IVS 控制台创建一个通道：指定录制配置的存储选项。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/images/Click_Create_Recording_Config.png)

1. 填写以下字段：

   1. （可选）输入 **Recording configuration name**（录制配置名称）。

   1. 在**通道配置**下，接受**默认配置**。注意：**自定义配置**可用于指定某些非默认值，例如录制的渲染或合并片段化的流。此处未记录自定义规格。

   1. 输入**存储桶名称**。

1. 选择 **Create recording configuration**（创建记录配置），以创建具有唯一 ARN 的新录制配置资源。创建录制配置通常在数秒钟内完成，但最多可能需要 20 秒钟。录制配置创建完成后，您将返回到 **Create channel (创建通道)** 窗口。这时，**录制和存储流**区域将显示您的新**录制配置**，其**状态**为**活跃**，此外还会显示您创建的 S3 存储桶（**存储**）。  
![\[使用 IVS 控制台创建一个通道：创建新的录制配置。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/images/Create_Recording_Config.png)

## 最终通道创建
<a name="getting-started-create-channel-console-final-creation"></a>

1. 在**创建通道**窗口的底部，选择**创建通道**，以创建具有唯一 ARN 的新通道。要查看通道详情，请展开**详细信息**。（注意：如果您没有启用录制，**Auto-record to S3 (自动记录至 S3)** 将设置为 **Disabled (已禁用)**，并且屏幕上没有 **Recording configuration (录制配置)** 部分。）  
![\[使用 IVS 控制台创建一个通道：在“Channel Details（通道详细信息）”窗口中查看通道流、播放和录制配置以及流会话。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/images/Final_Channel_Creation.png)

1. **重要提示**：
   + 在 **Stream configuration (流配置)** 区域，请注意 **Ingest server (提取服务器)** 和 **Stream key (流密钥)**。您将在下一步中使用它们，以设置流传输。
   + 在 **Playback configuration (播放配置)** 区域，请注意 **Playback URL (播放 URL)**。稍后，您将使用它来回放您的流。

**注意**：要查看 SRT 值（端点和密码），请展开**直播配置**区域中的**其他摄取选项**。

# 创建 IVS 通道的 CLI 说明
<a name="create-channel-cli"></a>

使用 Amazon CLI 创建通道是一个高级选项，需要先在计算机上下载并配置 CLI。有关详细信息，请参阅 [Amazon 命令行界面用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。

执行以下两个步骤之一，具体取决于您是否在启用录制的情况下创建通道。

## 创建通道但不录制
<a name="getting-started-create-channel-cli-no-recording"></a>

1. 运行 `create-channel` 命令并传入一个可选名称：

   ```
   aws ivs create-channel --name test-channel
   ```

1. 此时将返回一个新通道：

   ```
   {
      "channel": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh",
         "authorized": false,
         "ingestEndpoint": "a1b2c3d4e5f6.global-contribute.live-video.net",
         "insecureIngest": false,
         "latencyMode": "LOW",
         "name": "channel-live",
         "playbackRestrictionPolicyArn": "arn:aws:ivs:us-west-2:123456789012:playback-restriction-policy/abcdABCDefgh",
         "playbackUrl": "https://a1b2c3d4e5f6.us-west-2.playback.live-video.net/api/video/v1/us-west-2.123456789012.channel.abcdEFGH.m3u8",
         "recordingConfigurationArn": "none",
         "srt": {
            "endpoint": "a1b2c3d4e5f6.srt.live-video.net",
            "passphrase: "ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ",
         },
         "tags": {},
         "type": "STANDARD"
      },
      "streamKey": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:stream-key/g1H2I3j4k5L6",
         "channelArn": "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh",
         "tags": {},
         "value": "sk_us-west-2_abcdABCDefgh_567890abcdef"
      }
   }
   ```

1. **重要提示**：记下 `ingestEndpoint`、`streamKey value` 和 `playbackUrl`。您将使用它们来设置流传输和播放。

## 使用录制创建通道
<a name="getting-started-create-channel-cli-recording"></a>

**先决条件：**在开始此过程之前，请创建一个 Amazon S3 存储桶，并记下其 ARN。请参阅 [Amazon S3 入门](https://docs.aws.amazon.com//AmazonS3/latest/userguide/GetStartedWithS3.html)。S3 存储桶必须位于您要创建录制配置的同一区域；请参阅以下第 1 步中的已知问题。

然后执行以下步骤以创建通道：

1. 运行 `create-recording-configuration` 命令并传入现有 Amazon S3 存储桶的 ARN：

   ```
   aws ivs create-recording-configuration --name configuration-1 --destination-configuration s3={bucketName=test-bucket}
   ```

   您还可以传递 `thumbnail-configuration` 参数以手动设置缩略图录制模式和缩略图间隔：

   ```
   aws ivs create-recording-configuration --name configuration-1 --destination-configuration s3={bucketName=s3_bucket_name} --thumbnail-configuration recordingMode="INTERVAL",targetIntervalSeconds=60
   ```

   （可选）传递 `recording-reconnect-window-seconds` 参数以启用片段化的流功能：

   ```
   aws ivs create-recording-configuration --name configuration-1 --destination-configuration s3={bucketName=test-bucket} --recording-reconnect-window-seconds 60
   ```

   **已知问题：**在 us-east-1 区域中，如果您使用 Amazon CLI 创建录制配置，则即使 S3 存储桶位于不同区域，也会返回成功。在本案例中，录制配置的 `state` 为 `CREATE_FAILED`（而不是 `ACTIVE`）。（在其他区域中，如果存储桶位于不同区域，CLI 会正确返回失败结果。）

   **解决办法：**确保您的 S3 存储桶与录制配置位于同一区域。如果您在与 S3 存储桶不同的区域创建了录制配置，请删除该录制配置，并从正确的区域创建一个带有 S3 存储桶的新配置。

1. 这将返回带有唯一 ARN 的新录制配置。录制配置的状态为 `CREATING`，表示当前正在创建。

   ```
   {
      "recordingConfiguration": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te",
         "name": "configuration-1",
         "destinationConfiguration": {
            "s3": {
               "bucketName": "s3_bucket_name"
            }
         },
         "recordingReconnectWindowSeconds": 60,
         "state": "CREATING",
         "tags": {},
         "thumbnailConfiguration": {
            "recordingMode": "INTERVAL",
            "targetIntervalSeconds": 60
         }
      }
   }
   ```

1. 创建录制配置通常在数秒钟内完成，但最多可能需要 20 秒钟。要检查是否已创建录制配置，请运行 `get-recording-configuration` 命令：

   ```
   aws ivs get-recording-configuration --arn "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te"
   ```

1. 这将返回一个响应，指示录制配置已创建（`state` 是 `ACTIVE`）:

   ```
   {
      "recordingConfiguration": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te",
         "name": "configuration-1",
         "destinationConfiguration": {
            "s3": {
               "bucketName": "s3_bucket_name"
            }
         },
         "recordingReconnectWindowSeconds": 60,
         "state": "ACTIVE",
         "tags": {},
         "thumbnailConfiguration": {
            "recordingMode": "INTERVAL",
            "targetIntervalSeconds": 60
         }
      }
   }
   ```

1. 要创建通道并启用通道录制功能，请运行 `create-channel` 命令并传入录制配置 ARN：

   ```
   aws ivs create-channel --name channel-live --recording-configuration-arn  "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te"
   ```

   或者，要在现有通道上启用录制功能，请运行 `update-channel` 命令并传入录制配置 ARN：

   ```
   aws ivs update-channel --arn "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh" --recording-configuration-arn "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te"
   ```

1. 这将为 `recordingConfigurationArn` 返回一个具有非“none”值的通道对象，表示已启用录制。（以下响应来自 `create-channel`。`update-channel` 响应不包括 `streamKey` 对象。）

   ```
   {
      "channel": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh",
         "authorized": false,
         "ingestEndpoint": "a1b2c3d4e5f6.global-contribute.live-video.net",
         "insecureIngest": false,
         "latencyMode": "LOW",
         "name": "channel-live",
         "playbackUrl": "https://a1b2c3d4e5f6.us-west-2.playback.live-video.net/api/video/v1/us-west-2.123456789012.channel.abcdEFGH.m3u8",
         "recordingConfigurationArn": "arn:aws:ivs:us-west-2:123456789012:recording-configuration/mhndauNaO1te",
         "srt": {
            "endpoint": "a1b2c3d4e5f6.srt.live-video.net",
            "passphrase: "ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ",
         },
         "tags": {},
         "type": "STANDARD"
      },
      "streamKey": {
         "arn": "arn:aws:ivs:us-west-2:123456789012:stream-key/g1H2I3j4k5L6",
         "channelArn": "arn:aws:ivs:us-west-2:123456789012:channel/abcdABCDefgh",
         "tags": {},
         "value": "sk_us-west-2_abcdABCDefgh_567890abcdef"
      }
   }
   ```

1. **重要提示**：记下 `ingestEndpoint`、`streamKey value` 和 `playbackUrl`。您将使用它们来设置流传输和播放。

# 步骤 5：设置流式传输软件
<a name="getting-started-set-up-streaming"></a>

您可以通过以下方式（低延迟）流式传输到 Amazon IVS：
+ 支持 RTMPS 的原生 [IVS 广播 SDK](#broadcast-sdk)。我们推荐采用此方法，尤其是在生产场景中。
+ [Amazon IVS 控制台](#ivs-console) — 适用于测试流。
+ 其他流媒体软件和硬件编码器：您可以使用任何支持 RTMP、RTMPS 或 SRT 协议的流媒体编码器。下面介绍了几个使用开放广播软件（OBS）和带有 RTMPS 和 SRT 的 FFmpeg 的示例。RTMPS 通过使用已加密 TLS 流实现高安全性。

键编码器设置为关键帧间隔（2 秒）和分辨率/比特率/帧速率（相互关联）。有关编码器设置的更多信息，请参阅：
+ *Amazon IVS 用户指南*中的 [流传输配置](streaming-config.md)。
+ 此博客文章：[使用 Amazon Interactive Video Service 设置流传输](https://aws.amazon.com/blogs/media/setting-up-for-streaming-with-amazon-ivs/)。

**备注**：
+ Amazon IVS 流的最长持续时间为 48 小时。之后，流将终止，流传输会话将断开连接。成功重新连接（自动或手动）将启动新流。
+ 如果您的编码器停止发送数据（例如，出现临时网络问题），Amazon IVS 将等待 30 秒钟。如果在此期间未收到直播数据，Amazon IVS 将断开连接。

## 使用 Amazon IVS 广播开发工具包进行流传输
<a name="broadcast-sdk"></a>

要从 iOS 或 Android 应用程序中进行广播，您可以使用 Amazon IVS 广播开发工具包。广播开发工具包利用 Amazon IVS 架构，并将实现 Amazon IVS 的持续改进和新功能。作为本机移动广播开发工具包，它旨在最大限度地减少对应用程序以及用户有权访问应用程序所在设备的性能影响。


| 要从 … 广播 | 您可以使用 … | 备注 | 
| --- | --- | --- | 
| 您的 Android 或 iOS 应用程序 | Amazon IVS Android 或 iOS 广播 SDK | 作为本机移动广播开发工具包，它旨在最大限度地减少对应用程序以及用户有权访问应用程序所在设备的性能影响。 | 
| 一个 Web 环境 | Amazon IVS Web 广播 SDK | 作为一种 Web 广播 SDK，Amazon IVS Web 广播 SDK 让您能够使用 WebRTC 从 Web 环境进行广播。它提供跨浏览器和跨平台支持。 | 

有关更多信息，请参阅 [IVS 广播 SDK \$1 低延迟直播功能](broadcast.md)。

## 使用 Amazon IVS 控制台进行流式传输
<a name="ivs-console"></a>

1. 打开 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。

   （您还可通过 [Amazon 管理控制台](https://console.aws.amazon.com/)访问 Amazon IVS 控制台。）

1. 在导航窗格中，选择**通道**。（如果导航窗格已折叠，请选择汉堡图标以将其展开。）

1. 选择您要广播的通道，以转至该通道的详细信息页面。

1. 选择**广播**选项卡。（这些选项卡在**常规配置**部分下。）

1. 系统将提示您授予 IVS 控制台访问您摄像头和麦克风的权限；**允许**这些权限。

1. 在**广播**选项卡的底部，使用下拉框为麦克风和摄像头选择输入设备。

1. 要开始流式传输，请选择**开始广播**。

1. 要查看实时流，请转至**播放**选项卡。

   **注意**：启动流后，预计会有短暂的延迟（通常不到 30 秒），然后才能在“播放”选项卡中查看。

您可以使用此功能同时向多个通道广播。

**注意**：从控制台进行流式传输会消耗资源，并且您将产生实时视频输入费用。要了解更多信息，请参阅 IVS 定价页面上的[实时视频输入费用](https://aws.amazon.com/ivs/pricing/#Low-Latency_Streaming)。

## 使用 RTMPS 通过 OBS Studio 进行直播
<a name="obs-rtmps"></a>

([OBS Studio](https://obsproject.com/)) 是一个免费的开源软件套件，用于录制和实时流传输。OBS 提供实时源和设备捕获、场景合成、编码、录制和流传输。

按照以下步骤快速设置并运行 OBS Studio v30.2 或更高版本：

1. 下载并安装此软件：[https://obsproject.com/download](https://obsproject.com/download)。

1. 运行 OBS Studio **自动配置向导**，其在首次加载 OBS Studio 时会显示。执行以下步骤并接受默认值。

1. 在**直播信息**中，从**服务**下拉列表中选择 **Amazon IVS**，然后输入**直播密钥**。

   如果您使用了 Amazon IVS 控制台创建通道，则您在 OBS 中输入的**直播密钥**是控制台中的**直播密钥**：`sk_us-west-2_abcd1234efgh5678ijkl`

   如果您使用了 AWS CLI 创建通道，则您在 OBS 中输入的**直播密钥**是 CLI 响应中的 **streamKey 值**：`sk_us-west-2_abcd1234efgh5678ijkl`

   如果您的 IVS 通道配置为多轨道视频输入，请选择**启用多轨道视频**。（可选）配置**最大视频轨道**和**最大直播带宽**设置，这些设置用于限制自动配置的直播设置。

1. 有关**视频输出分辨率**和**比特率**的信息，请参阅《Amazon IVS 直播功能配置》**中的[通道类型](streaming-config.md#streaming-config-settings-channel-types)。如果 OBS 向导选择的任一值超过了 Amazon IVS 允许的值，则应手动调整这些值以避免与 Amazon IVS 连接失败。向导完成后：

   1. 要调整视频分辨率，请使用 **Settings > Video > Output (Scaled) Resolution** [设置 > 视频 > 输出（缩放）分辨率]。

   1. 要调整视频比特率，请使用 **Settings > Output > Streaming > Video Bitrate**（设置 > 输出 > 流传输 > 视频比特率）。

      **注意：**如果您之前勾选了**启用多轨道视频**，这不会影响直播。

1. 我们建议使用 2 秒的 **Keyframe Interval**（关键帧间隔），以提高流稳定性并避免查看者播放时缓冲。向导完成后，转到**设置 > 输出 > 输出模式**，选择**高级**，然后在**直播功能**选项卡上，确保**关键帧间隔**为 2。

   **注意：**如果您之前勾选了**启用多轨道视频**，则会自动配置关键帧间隔。

1. 在 OBS Studio 主窗口中，选择 **Start Streaming**（开始流传输）。

有关使用 OBS Studio 进行流传输的更多信息，请参阅 [OBS Studio 快速入门](https://obsproject.com/wiki/OBS-Studio-Quickstart)。

稍后，您可以手动修改 OBS 设置：

1. 选择 **Settings (设置) > Stream (流)**。

1. 从下拉列表中选择 **Amazon IVS**。

1. 粘贴**直播密钥**。

您可以随时再次运行向导：选择 **Tools (工具) > Auto-Configuration Wizard (自动配置向导)**。

（可选）在 **Settings (设置) > General (常规)** 中，启用本地录制以保存实时流以供日后使用。如前所述，广播与亚马逊云科技之间或亚马逊云科技内部出现网络问题可能会在录制流时导致一些数据丢失。在这些情况下，Amazon IVS 将实时流优先于录制。通过流传输工具进行本地录制可提供冗余。

建议定期检查 OBS Studio 更新，并更新到最新版本。（例如，如果出现“无法连接到服务器”错误，则可能是使用了不支持 RTMPS 的旧版 OBS Studio。）

## 使用 SRT 通过 OBS Studio 进行直播
<a name="obs-srt"></a>

按照以下步骤快速设置并运行安全可靠传输协议：

1. 下载并安装此软件：[https://obsproject.com/download](https://obsproject.com/download)。

1. 运行 OBS Studio **自动配置向导**，其在首次加载 OBS Studio 时会显示。执行以下步骤并接受默认值。

1. 在 **Stream Information**（流信息）中，从 **Service**（服务）下拉列表中选择 **Custom...**（自定义……），然后输入 **Server（Ingest server）** [服务器（提取服务器）] 和 **Stream Key**（流密钥）。

   如果您使用 Amazon CLI 创建了通道：
   + 您在 OBS 中输入的**服务器**是以下五个选项的组合：
     + 提取协议：`srt://`
     + CLI 响应中来自 `srt` 结构的**端点**：

       `a1b2c3d4e5f6.srt.live-video.net`
     + 端口：`9000`
     + 一个 streamid，是 CLI 响应中的 **streamKey 值**：

       `sk_us-west-2_abcd1234efgh5678ijkl`
     + 密码，用于加密内容。仅在未启用**不安全摄取**时才使用此选项。

       `ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ`

     完整条目为：

     `srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ`
   + 您在 OBS 中输入的**直播密钥**对于 SRT 协议将保持为空。

1. 有关**视频输出分辨率**和**比特率**的信息，请参阅《Amazon IVS 直播功能配置》**中的[通道类型](streaming-config.md#streaming-config-settings-channel-types)。如果 OBS 向导选择的任一值超过了 Amazon IVS 允许的值，则应手动调整这些值以避免与 Amazon IVS 连接失败。向导完成后：

   1. 要调整视频分辨率，请使用 **Settings > Video > Output (Scaled) Resolution** [设置 > 视频 > 输出（缩放）分辨率]。

   1. 要调整视频比特率，请使用 **Settings > Output > Streaming > Video Bitrate**（设置 > 输出 > 流传输 > 视频比特率）。

1. 我们建议使用 2 秒的 **Keyframe Interval**（关键帧间隔），以提高流稳定性并避免查看者播放时缓冲。向导完成后，转到**设置 > 输出 > 输出模式**，选择**高级**，然后在**直播功能**选项卡上，确保**关键帧间隔**为 2。

1. 在 OBS Studio 主窗口中，选择 **Start Streaming**（开始流传输）。

稍后，您可以手动修改 OBS 设置：

1. 选择 **Settings (设置) > Stream (流)**。

1. 从下拉列表中选择 **Custom (自定义)**。

1. 粘贴至 **Server (服务器)** 和/或 **Stream Key (流密钥)**。

您可以随时再次运行向导：选择 **Tools (工具) > Auto-Configuration Wizard (自动配置向导)**。

（可选）在 **Settings (设置) > General (常规)** 中，启用本地录制以保存实时流以供日后使用。如前所述，广播与亚马逊云科技之间或亚马逊云科技内部出现网络问题可能会在录制流时导致一些数据丢失。在这些情况下，Amazon IVS 将实时流优先于录制。通过流传输工具进行本地录制可提供冗余。

建议定期检查 OBS Studio 更新，并更新到最新版本。（例如，如果出现“无法连接到服务器”错误，则可能是使用了不支持 RTMPS 的旧版 OBS Studio。）

## 使用 RTMPS 通过 FFmpeg 直播录制的视频
<a name="ffmpeg-rtmps"></a>

按照以下步骤进行操作：

1. 下载并安装 FFmpeg：[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)。

1. 将 `$VIDEO_FILEPATH` 设置为要进行流传输的 MP4 视频的位置：

   ```
   VIDEO_FILEPATH=/home/test/my_video.mp4
   ```

1. 将 `STREAM_KEY` 设置为您的流密钥**值**：

   ```
   STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
   ```

1. 将 `INGEST_ENDPOINT` 设置为您的 **ingestEndpoint**（Amazon CLI 中）：

   ```
   INGEST_ENDPOINT=a1b2c3d4e5f6.global-contribute.live-video.net
   ```

1. 使用以下终端命令开始流传输（显示在一行中）：

   ```
   ffmpeg -re -stream_loop -1 -i $VIDEO_FILEPATH -r 30 -c:v libx264 -pix_fmt yuv420p -profile:v main -preset veryfast -x264opts "nal-hrd=cbr:no-scenecut" -minrate 3000 -maxrate 3000 -g 60 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv rtmps://$INGEST_ENDPOINT:443/app/$STREAM_KEY
   ```

   *请注意，以上命令是一个示例。对于生产流传输，请根据您的需求调整参数。*

## 使用 SRT 通过 FFmpeg 直播录制的视频
<a name="ffmpeg-srt"></a>

1. 下载并安装 FFmpeg：[https://www.ffmpeg.org/download.html](https://www.ffmpeg.org/download.html)。如果您使用的是旧版/编译版本的 FFmpeg，请使用 `--enable-libsrt` 标志构建一个新版本。

1. 验证 SRT 是否可以在 FFmpeg 中使用：运行以下命令并确保输出中包含 `libsrt`。如果输出中没有 `libsrt`，请重建或获取支持 SRT 的较新版本的 FFmpeg。

   ```
   ffmpeg -version | grep enable-libsrt
   ```

1. 将 `$VIDEO_FILEPATH` 设置为要进行流传输的 MP4 视频的位置：

   ```
   VIDEO_FILEPATH=/home/test/my_video.mp4
   ```

1. 将 `STREAM_KEY` 设置为您的流密钥**值**：

   ```
   STREAM_KEY=sk_us-west-2_abcd1234efgh5678ijkl
   ```

1. 将 `INGEST_ENDPOINT` 设置为您的**端点**（从 `srt` 对象下的 Amazon CLI 中）：

   ```
   INGEST_ENDPOINT=a1b2c3d4e5f6.srt.live-video.net
   ```

1. 将 `PASSPHRASE` 设置为您的**密码**（从 `srt` 对象下的 Amazon CLI 中）。仅当通道未启用不安全摄取时，才使用密码。

   ```
   PASSPHRASE=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ
   ```

1. 使用以下终端命令开始流传输（显示在一行中）：

   ```
   ffmpeg -re -i $VIDEO_FILEPATH -c copy -f mpegts "srt://$INGEST_ENDPOINT:9000?streamid=$STREAM_KEY&passphrase=$PASSPHRASE”
   ```

# 步骤 6：查看您的实时流
<a name="getting-started-view-stream"></a>

您可以通过以下方式观看您的直播：
+ 原生 [IVS 回放器 SDK](#view-stream-player-sdks)。
+ [Amazon IVS 控制台](#view-stream-console)。

## 使用 Amazon IVS 回放器 SDK 进行观看
<a name="view-stream-player-sdks"></a>

1. 设置 IVS 回放器。从 [IVS 回放器 SDK 概述](player.md)开始，然后阅读相应的平台特定回放器指南。

1. 从 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)获取您创建通道时生成的**播放 URL**。（请参阅本*入门*指南前面的[创建最终通道](create-channel-console.md#getting-started-create-channel-console-final-creation)章节。）

1. 使用播放 URL 调用 `player.load()`。

## 通过 Amazon IVS 控制台观看
<a name="view-stream-console"></a>

1. 打开 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。

   （您还可通过 [Amazon 管理控制台](https://console.aws.amazon.com/)访问 Amazon IVS 控制台。） 

1. 在导航窗格中选择 **Live channels**（直播通道）。（如果导航窗格已折叠，请首先选择汉堡包图标以将其打开。）

1. 选择要查看其流的通道，以转到该通道的详细信息页面。

   此实时流正在该页面的 **Live stream (实时流)** 部分播放。

**注意**：从控制台播放会消耗资源，并且会产生实时视频输出费用。要了解更多信息，请参阅 IVS 定价页面上的[实时视频输出费用](https://aws.amazon.com/ivs/pricing/#Live_Video_Output_Costs)。

**注意：**开始流传输后，在控制台中查看流之前会有短暂的延迟（最长 30 秒，通常更短）。

# 步骤 7：查看您的服务限额限制（可选）
<a name="getting-started-check-service-quota"></a>

所有账户都对并发查看者数量和并发广播数量有限制。*确保您的限制足够，并在需要时请求增加限额，尤其是在您计划大型流传输活动时*。有关详细信息，请参阅 [IVS 服务配额](service-quotas.md)。

# 步骤 8：防止出现非预期内容和观看者（推荐）
<a name="getting-started-prevent-undesired-content"></a>

恶意用户可能会试图在您的平台上重播非预期内容（例如职业体育赛事），或者未经许可试图将您平台的直播嵌入其他网站。这种流式传输可以显著增加您的应用程序提供的直播视频数量以及相关成本，而不会增加您的业务价值。除了为您提供停止活跃直播的控制措施外，Amazon IVS 还提供资源，从一开始就帮助检测和防止此类行为；请参阅 [IVS 中的非预期内容和观看者](undesired-content.md)。

要将播放限制在特定的来源和/或国家/地区，请使用播放限制策略。请注意，这些策略只能用于公共频道。[IVS 中的非预期内容和观看者](undesired-content.md)还讨论了如何使用私人频道来控制非预期内容。

请注意，播放限制策略（例如地理屏蔽）不能与播放授权同时使用。如果为某个频道启用了播放授权，则配置的任何播放限制策略都将被忽略。要对私有频道实施地理限制，请在发布播放令牌之前验证用户在令牌生成逻辑中的位置。