

# 開始使用 IVS 伺服器端合成
<a name="ssc-getting-started"></a>

本文件將帶您了解開始使用 IVS 伺服器端合成的相關步驟。

## 必要條件
<a name="ssc-getting-started-prerequisites"></a>

若要使用伺服器端合成，您必須具有包含作用中發布者的階段，並使用 IVS 頻道和/或 S3 儲存貯體作為合成目的地。

若要建立 S3 儲存貯體，請參閱 S3 文件：[如何建立儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)。S3 儲存貯體必須在與 IVS 舞台相同的 AWS 區域中建立。

**重要**：如果您使用現有的 S3 儲存貯體：
+ **物件擁有權**設定必須是**強制執行的儲存貯體擁有者**，或是**偏好的儲存貯體擁有者**。
+ **預設類型**設定必須是**使用 Amazon S3 受管金鑰進行伺服器端加密 (SSE-S3)**。

如需詳細資訊，請參閱 S3 文件：[controlling ownership of objects](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html) 和 [protecting data with encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingEncryption.html)。

## 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. 加入並發布到階段。(請參閱 [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) 版即時串流廣播 SDK 指南中的「發布與訂閱」章節。)

1. 收到「參與者已發布」EventBridge 事件後，請使用所需的版面配置組態呼叫 [StartComposition](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_StartComposition.html)。

1. 等待幾秒鐘，然後在頻道播放中查看複合檢視。

![\[當參與者發布時，使用 EventBridge 事件啟動合成的伺服器端合成工作流程。\]](http://docs.aws.amazon.com/zh_tw/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**注意**：在階段上的發布者參與者閒置 60 秒後，合成會執行自動關閉。此時，合成會終止並轉換為 `STOPPED` 狀態。合成會在保持 `STOPPED` 狀態幾分鐘後自動刪除。

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

使用 AWS CLI 是進階選項，需要您先在機器上下載並設定 CLI。如需詳細資訊，請參閱《[AWS 命令列界面使用者指南](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` 狀態，IVS 階段的複合檢視就可以在 IVS 頻道上出現，使用 ListCompositions：

```
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": {}
    }
  ]
}
```

**注意**：您必須讓發布者參與者主動發布至階段，才能讓合成保持作用中狀態。如需詳細資訊，請參閱 [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) 版即時串流廣播 SDK 指南中的「發布與訂閱」章節。您必須為每個參與者建立不同的階段權杖。