

# IVS 服务器端合成入门
<a name="ssc-getting-started"></a>

本文档将引导您完成 IVS 服务器端合成入门所涉及的步骤。

## 先决条件
<a name="ssc-getting-started-prerequisites"></a>

要使用服务器端合成，您必须有一个包含活跃发布者的舞台，并使用 IVS 频道和/或 S3 存储桶作为合成目标。

要创建 S3 存储桶，请参阅有关[如何创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)的 S3 文档。必须在与 IVS 暂存区相同的 AWS 区域中创建 S3 存储桶。

**重要**：如果使用现有 S3 存储桶：
+ **对象所有权**设置必须为**强制存储桶拥有者**或**首选存储桶拥有者**。
+ **默认加密**设置必须是**具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3)**。

有关详细信息，请参阅有关[控制对象所有权](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html)和[使用加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)的 S3 文档。

## API 说明
<a name="ssc-getting-started-api-instructions"></a>

下面，我们将介绍一种可能的工作流程，它使用 EventBridge 事件来开始合成，当参与者发布时，该合成将舞台广播到 IVS 频道。或者，您可以根据自己的应用程序逻辑开始和停止合成。请参阅[合成录制](rt-composite-recording.md)以获得另一个示例，它展示了如何使用服务器端合成将舞台直接录制到 S3 存储桶。

1. 创建 IVS 频道。请参阅 [Amazon IVS 低延迟直播功能入门](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started.html)。

1. 为每个发布者创建 IVS 舞台和参与者令牌。

1. 创建 [EncoderConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_EncoderConfiguration.html)。

1. 加入舞台并发布到该舞台。（请参阅实时流式广播 SDK 指南的“发布和订阅”部分：[Web](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html)、[Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) 和 [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html)。）

1. 当您收到参与者发布的 EventBridge 事件时，使用所需的布局配置调用 [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html)。

1. 等待几秒钟，然后在频道回放中观看合成视图。

![\[服务器端合成工作流程，在参与者发布时使用 EventBridge 事件开始合成。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**注意**：发布者参与者在舞台上处于非活动状态 60 秒后，合成执行自动关闭。此时，合成终止，并转换到 `STOPPED` 状态。合成处于 `STOPPED` 状态几分钟后将自动删除。

## CLI 说明
<a name="ssc-getting-started-cli"></a>

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

现在，您可以使用 CLI 创建和管理资源。合成操作位于 `ivs-realtime` 命名空间下。

### 创建 EncoderConfiguration 资源
<a name="ssc-getting-started-cli-create-encoderconfiguration"></a>

EncoderConfiguration 是一个对象，允许您自定义生成的视频的格式（高度、宽度、比特率和其他流式传输参数）。每次调用合成操作时，您都可以重复使用 EncoderConfiguration，如下一步中所述。

下面的命令创建 EncoderConfiguration 资源，用于配置服务器端视频合成参数，例如视频比特率、帧速率和分辨率：

```
aws ivs-realtime create-encoder-configuration --name "MyEncoderConfig" --video "bitrate=2500000,height=720,width=1280,framerate=30"
```

响应如下：

```
{
"encoderConfiguration": {
  "arn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4",
  "name": "MyEncoderConfig",
  "tags": {},
  "video": {
	 "bitrate": 2500000,
	 "framerate": 30,
	 "height": 720,
	 "width": 1280
    }
  }
}
```

### 开始合成
<a name="ssc-getting-started-cli-start-mediapublish"></a>

使用上面响应中提供的 EncoderConfiguration ARN，创建您的合成资源：

**网格布局示例**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/9W59OBY2M8s4"}}]' --layout '{"grid":{"participantOrderAttribute":"order","featuredParticipantAttribute":"isFeatured","videoFillMode":"COVER","gridGap":0}}'
```

**PiP 布局示例**

```
aws ivs-realtime start-composition --stage-arn "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik" --destinations '[{"channel": {"channelArn": "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r", "encoderConfigurationArn": "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"}}]' --layout '{"pip":{"participantOrderAttribute":"priority","pipParticipantAttribute":"isPip","pipOffset":10,"pipPosition":"TOP_RIGHT"}}'
```

**注意**：您可以使用[此工具](https://composition.ivsdemos.com/)更轻松地根据您选择的布局生成 `--layout` 配置。

响应将显示该合成使用 `STARTING` 状态创建。一旦合成开始发布合成，状态就会转换为 `ACTIVE`。（您可以通过调用 ListCompositions 或 GetComposition 操作来查看状态。）

合成处于 `ACTIVE` 后，可以使用 ListCompositions 在 IVS 频道上看到 IVS 舞台的合成视图：

```
aws ivs-realtime list-compositions
```

响应如下：

```
{
"compositions": [
  {
	 "arn": "arn:aws:ivs:us-east-1:927810967299:composition/YVoaXkKdEdRP",
	 "destinations": [
		{
		   "id": "bD9rRoN91fHU",
		   "startTime": "2023-09-21T15:38:39+00:00",
		   "state": "ACTIVE"
		}
	 ],
	 "stageArn": "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
	 "startTime": "2023-09-21T15:38:37+00:00",
	 "state": "ACTIVE",
	 "tags": {}
    }
  ]
}
```

**注意**：您需要让发布者参与者主动发布到舞台上，以使合成保持活动状态。有关更多信息，请参阅实时流式广播 SDK 指南的“发布和订阅”部分：[Web](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/web-publish-subscribe.html)、[Android](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/android-publish-subscribe.html) 和 [iOS](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/ios-publish-subscribe.html)。您必须为每位参与者创建不同的舞台令牌。