

# IVS サーバーサイドコンポジションの開始方法
<a name="ssc-getting-started"></a>

このドキュメントでは、サーバーサイドコンポジションの使用を開始するためのステップについて説明します。

## 前提条件
<a name="ssc-getting-started-prerequisites"></a>

サーバーサイドコンポジションを使用するには、アクティブなパブリッシャーを持つステージを用意し、コンポジションの送信先として IVS チャネルおよび (または) S3 バケットを使用する必要があります。

S3 バケットを作成するには、[バケットの作成方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html)に関する S3 ドキュメントを参照してください。S3 バケットは IVS ステージと同じ AWS リージョンに作成する必要があります。

**重要**: 既存の 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>

以下では、参加者が発行した際に、ステージを IVS チャネルにブロードキャストするコンポジションを EventBridge のイベントにより開始する、ワークフローの 1 例について説明します。また、独自のアプリケーションロジックに基づいてコンポジションを開始および停止することもできます。S3 バケットに直接ステージを記録する、サーバーサイドコンポジションの使用方法の例については、「[コンポジットの記録](rt-composite-recording.md)」を参照してください。

1. IVS チャネルを作成します。「[Amazon IVS Low-Latency Streaming を開始する](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. ステージに参加して公開します。(「リアルタイムストリーミング Broadcast 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/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_Workflow.png)


**注**: コンポジションは、パブリッシャーである参加者がステージ上で何も操作しない状態が 60 秒間続くと自動的にシャットダウンします。その時点でコンポジションは終了し、`STOPPED` 状態に移行します。`STOPPED` 状態に移行して数分後、コンポジションは自動的に削除されます。

## CLI の手順
<a name="ssc-getting-started-cli"></a>

AWS CLI の使用は詳細オプションであり、まず CLI をダウンロードしてマシン上で設定する必要があります。詳細については、「[AWS Command Line Interface のユーザーガイド](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` 状態の Composition が作成されたことが示されます。Composition がコンポジションの発行を開始すると、状態は `ACTIVE` に遷移します。(この状態は、ListCompositions オペレーションまたは GetComposition オペレーションを呼び出すことで確認できます)

Composition が `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)。参加者ごとには、別々のステージトークンを作成する必要があります。