

# IVS サーバーサイドコンポジション \$1 リアルタイムストリーミング
<a name="server-side-composition"></a>

サーバーサイドコンポジションでは、IVS サーバーを使用してステージ参加者全員からの音声と動画を合成し、IVS チャネル (より多くの視聴者に配信する場合など) または S3 バケットに送信します。サーバーサイドコンポジションは、ステージのホームリージョンにある IVS コントロールプレーンオペレーションを介して呼び出されます。

サーバーサイドコンポジションを使用したステージのブロードキャストと録画には多くの利点があります。これは、効率的で信頼性の高いクラウドベースの動画ワークフローを求めるユーザーにとって魅力的な選択肢となっています。

**Topics**
+ [サーバーサイドコンポジションの概要](ssc-overview.md)
+ [IVS サーバーサイドコンポジションの開始方法](ssc-getting-started.md)
+ [カスタム参加者の順序付け](ssc-getting-started-custom-participant-ordering.md)
+ [IVS サーバーサイドコンポジションで画面共有を有効にする](ssc-getting-started-screen-share.md)
+ [既知の問題と回避策](ssc-known-issues.md)

# サーバーサイドコンポジションの概要
<a name="ssc-overview"></a>

この図は、サーバーサイドコンポジションの仕組みを示しています。

![\[サーバーサイドコンポジションを使用したステージのブロードキャスト。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_Intro_Composite_Recording.png)


## 利点
<a name="ssc-benefits"></a>

クライアントサイドのコンポジションと比較すると、サーバーサイドコンポジションには以下の利点があります。
+ **クライアント負荷の軽減** – サーバーサイドコンポジションを使用すると、音声と動画のソースを処理および結合する負担が、個々のクライアントデバイスからサーバー側に移転します。サーバーサイドコンポジションにより、ビューを合成してIVS に送信するクライアントデバイスは、CPU とネットワークリソースを使用しなくても良くなります。つまり、視聴者のデバイスでは、リソースを大量に消費するタスクを処理しなくてもブロードキャストの視聴が可能になり、より長いバッテリー寿命と、よりスムーズな視聴体験が実現されます。
+ **一貫した品質** – サーバーサイドコンポジションでは、最終的なストリームの品質、解像度、ビットレートを正確に制御することができます。これにより、個々のデバイスの性能に関係なく、すべての視聴者に対し一貫した視聴体験が保証されます。
+ **レジリエンス** – コンポジションプロセスをサーバー上で一元化することで、ブロードキャストをより堅牢にできます。パブリッシャーのデバイスに技術的な制限がかかっていたり、変動が発生していたりしても、サーバーはそれに適応するので、すべての視聴者にスムーズなストリームを提供できます。
+ **帯域幅の効率** – コンポジションの処理はサーバーで実行されるため、ステージパブリッシャーは、ビデオを IVS にブロードキャストする帯域幅を余分に消費する必要がありません。

あるいは、クライアント側でコンポジションを実行し、ステージを IVS チャネルにブロードキャストすることもできます。「*IVS 低レイテンシーストリーミングユーザーガイド*」の「[Amazon IVS ストリームで複数ホストを有効にする](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/multiple-hosts.html)」を参照してください。

## Composition のライフサイクル
<a name="ssc-composition-endpoint"></a>

下の図は、コンポジションの状態遷移を示します。

![\[サーバーサイドコンポジションリソースのライフサイクル。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_Composition_Lifecycle.png)


概観的には、コンポジションのライフサイクルは次のとおりです。

1. ユーザーが StartComposition オペレーションを呼び出したとき、コンポジションリソースが作成されます。

1. IVS が Composition の開始に成功すると、「IVS Composition State Change (Session Start)」の EventBridge イベントが送信されます。イベントの詳細については、「[IVS Real-Time Streaming で EventBridge を使用する](eventbridge.md)」を参照してください。

1. Composition がアクティブ状態になった後は、以下のことが発生します。
   + ユーザーがコンポジションを停止 – StopComposition オペレーションが呼び出された場合、IVS によってコンポジションの適切なシャットダウンが開始され、「Destination End」イベントの後に「Session End」イベントが送信されます。
   + コンポジションが自動シャットダウンを実行 – IVS ステージが削除された、または IVS ステージにアクティブに配信する参加者がいない状態が 60 秒続いた場合、コンポジションが自動的にファイナライズされ、EventBridge イベントが送信されます。
   + 送信先の障害 – 送信先で (IVS チャネルが削除されるなどの) 予期しない障害が発生すると、その送信先は `RECONNECTING` 状態に遷移し、「Destination Reconnecting」イベントが送信されます。復旧が不可能な場合、IVS が対象の送信先を `FAILED` 状態に遷移させ、「Destination Failure」イベントが送信されます。少なくとも 1 つの送信先がアクティブであれば、IVS はコンポジションを維持します。

1. `STOPPED` あるいは `FAILED` 状態になったコンポジションは、その 5 分後に自動的にクリーンアップされます。(それ以降は、ListCompositions や GetComposition によって取得されなくなります)。

## IVS API
<a name="ssc-api"></a>

サーバーサイドコンポジションでは、主要な API 要素として以下を使用します。
+ *EncoderConfiguration* オブジェクトは、生成する動画の形式 (高さ、幅、ビットレート、その他のストリーミングパラメータ) をカスタマイズできるようにします。StartComposition オペレーションを呼び出すたびに、EncoderConfiguration を再利用できます。
+ *コンポジション*オペレーションはビデオコンポジションを追跡し、IVS チャネルに出力します。
+ *StorageConfiguration* は、コンポジションが記録されている S3 バケットを追跡します。

サーバーサイドコンポジションを使用するには、EncoderConfiguration を作成して StartComposition オペレーションを呼び出すときにアタッチする必要があります。この例では、SquareVideo EncoderConfiguration が 2 つのコンポジションで使用されています。

![\[サーバーサイドコンポジションでは 2 つの主要な API 要素を使用します。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_IVS_API_Composite_Recording.png)


詳細については、「[IVS Real-Time Streaming API リファレンス](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/Welcome.html)」を参照してください。

## Layouts
<a name="ssc-api-layouts"></a>

StartComposition オペレーションには、グリッドおよび PiP (ピクチャーインピクチャー) の 2 つのレイアウトオプションがあります。

### グリッドレイアウト
<a name="ssc-api-layouts-grid"></a>

グリッドレイアウトは、ステージ参加者を等サイズのスロットのグリッドに配置します。カスタマイズ可能なプロパティがいくつか用意されています。
+ `videoAspectRatio` は、ビデオタイルのアスペクト比を制御するように参加者表示モードを設定します。
+ `videoFillMode` は、ビデオコンテンツが参加者タイルにどのように適合するかを定義します。
+ `gridGap` は、参加者タイル間の間隔をピクセル単位で指定します。
+ `omitStoppedVideo` では、停止したビデオストリームをコンポジションから除外できます。
+ `featuredParticipantAttribute` は、注目のスロットを識別します。これを設定すると、注目の参加者はメイン画面の大きなスロットに表示され、他の参加者はその下に表示されます。
+ `participantOrderAttribute` は、参加者トークンの属性値に基づきカスタム参加者の順序付けを有効にします。指定した場合、参加者は属性値で数値順に並べられ、属性がない参加者は到着時刻の順序にフォールバックします。これにより、決定論的な配置がオプションで実施でき、ロールベースのレイアウトが可能になります。

グリッドレイアウト (すべてのフィールドの有効な値とデフォルトを含む) の詳細については、「[GridConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_GridConfiguration.html) データ型」を参照してください。

![\[サーバーサイドコンポジションのグリッドレイアウト。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_Grid_Layout.png)


### ピクチャインピクチャ (PiP ) レイアウト
<a name="ssc-api-layouts-pip"></a>

PiP レイアウトでは、参加者をオーバーレイウィンドウに表示することができ、そのサイズ、位置、動作を設定できます。これらのプロパティには、次のものがあります。
+ `pipParticipantAttribute` は PiP ウィンドウの参加者を指定します。
+ `pipPosition` は PiP ウィンドウのコーナー位置を決定します。
+ `pipWidth` および `pipHeight` は、PiP ウィンドウの幅と高さを設定します。
+ `pipOffset` は、PiP ウィンドウのオフセット位置を、最も近いエッジからのピクセル単位で設定します。
+ `pipBehavior` は、他のすべての参加者が退出したときの PiP 動作を定義します。

グリッドレイアウトと同様に、PiP レイアウトは構成をさらにカスタマイズするための `featuredParticipantAttribute`、`omitStoppedVideo`、`videoFillMode`、`gridGap`、`participantOrderAttribute` をサポートします。`participantOrderAttribute` は、PiP ウィンドウの参加者を選択する、参加者トークンの属性値に基づきグリッド参加者を配置するという両方のカスタム参加者の順序付けを有効にします。

PiP レイアウト (すべてのフィールドの有効な値とデフォルトを含む) の詳細については、「[PipConfiguration](https://docs.aws.amazon.com//ivs/latest/RealTimeAPIReference/API_PipConfiguration.html) データ型」を参照してください。

![\[サーバーサイドコンポジションのピクチャインピクチャ (PiP) レイアウト\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_PiP_Layout.png)


**注**: サーバーサイドコンポジションのステージパブリッシャーでサポートされる最大の解像度は 1080p です。1080p を超える動画を送信するパブリッシャーは、音声のみの参加者としてレンダリングされます。

**重要**: アプリケーションが、タイルのサイズや位置など、現在のレイアウトの特定の機能に依存していないことを確認してください。*レイアウトの視覚的な改善は、いつでも導入できます*。

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

# カスタム参加者の順序付け
<a name="ssc-getting-started-custom-participant-ordering"></a>

カスタム参加者の順序付けを使用すると、注目の参加者の配置や PiP ウィンドウの参加者の選択など、参加者トークンのカスタム属性値に基づいて、グリッドレイアウトと PiP レイアウトの両方で参加者の配置を制御できます。これにより、決定論的な参加者配置が可能になり、ロールベースのレイアウトが有効になります。

## カスタム順序の仕組み
<a name="ssc-getting-started-custom-participant-ordering-how-custom-ordering-works"></a>

レイアウト設定で `participantOrderAttribute` を指定すると、参加者は次のルールに従って順序付けられます。
+ トークンに指定された順序付け属性を持つ参加者が最初に配置され、属性値で数値順にソートされます。
+ 順序付け属性のない参加者は到着した順に後方に回され、順序付けされた参加者の後に配置されます。
+ 複数の参加者が同じ順序値を持つ場合、ステージへの到着時間によってサブソートされます。
+ 順序付けは数値ソート (辞書式ではない) を使用するため、「10」は「9」の後になります（「1」の後ではありません）。
+ 負の値はサポートされます。正の値の前に配置されます。
+ 数値以外の値 (例：「abc」、「1.5」) は無効として扱われ、それらの参加者は到着順に後方に回されます。

**重要:** 参加者の順序付け (到着時間に基づくかカスタムに基づくかにかかわらず) は、コンポジションの開始後に有効になります。コンポジションが始まる前にステージに参加する参加者については、参加者の正しい順序は保証されません。

## 順序付け属性を使用したトークンの作成
<a name="ssc-getting-started-custom-participant-ordering-creating-tokens-with-ordering-attributes"></a>

カスタム参加者の順序付けを使用するには、参加者トークンの作成時に順序付け属性を含めます。

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=1

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=2

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=3
```

custom-participant-order 属性を、注目スロットと PiP ウィンドウの参加者を選択するための属性と組み合わせることができます。

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=2,isFeatured=true

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=3,isFeatured=true

aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes order=4,isPip=true
```

## ユースケースの例
<a name="ssc-getting-started-custom-participant-ordering-example-use-cases"></a>

ユースケースの例を以下に示します。
+ 一貫した配置 – 同じトークンで再接続する際、参加者の位置は維持されます。
+ ロールベースの配置 – たとえば、order=1 の教師と order=2 の学生を指定できます。
+ 優先度ベースのレイアウト – 低い順序の値を持つ VIP 参加者が最初に表示されます。
+ 動的レイアウト – 複雑なシナリオでは、カスタム順序付けを `featuredParticipantAttribute` および `pipParticipantAttribute` と組み合わせることができます。
+ クロスステージインタラクション – さまざまなステージのストリーマーがインタラクションを行う VS Mode 競技などのシナリオで参加者レプリケーションを使用する場合、順序付け属性を上書きして、宛先ステージコンポジションの配置を制御できます。

**注:** 参加者レプリケーションのユースケースでは、レプリケーションを開始するときに必要に応じて参加者属性 (順序属性を含む) を上書きして、レプリケート先ステージで目的のレイアウトを実現できます。

## 下位互換性
<a name="ssc-getting-started-custom-participant-ordering-backward-compatibility"></a>

カスタム参加者の順序はオプション機能であり、完全な下位互換性が維持されます。`participantOrderAttribute` のない既存のコンポジションは、到着時刻の順序付けを使用して変更されずに動作し続けます。`participantOrderAttribute` が空の文字列に設定されている場合、システムはカスタム順序を完全に無視し、デフォルトの動作にフォールバックします。

# IVS サーバーサイドコンポジションで画面共有を有効にする
<a name="ssc-getting-started-screen-share"></a>

固定された画面共有レイアウトを使用するには、以下の手順を実行します。

## EncoderConfiguration リソースの作成
<a name="ssc-getting-started-screen-share-create-encoderconfiguration"></a>

以下のコマンドでは、サーバーサイドコンポジションのパラメーター (動画ビットレート、フレームレート、解像度) を設定する EncoderConfiguration リソースを作成しています。

```
aws ivs-realtime create-encoder-configuration --name "test-ssc-with-screen-share" --video={bitrate=2000000,framerate=30,height=720,width=1280}
```

`screen-share` 属性を使用してステージ参加者トークンを作成します。`screen-share` は `featured` スロットの名前として指定しているので、`screen-share` 属性に `true` を設定したステージトークンを作成する必要があります。

```
aws ivs-realtime create-participant-token --stage-arn "arn:aws:ivs:us-east-1:123456789012:stage/u9OiE29bT7Xp" --attributes screen-share=true
```

レスポンスは次のとおりです。

```
{
   "participantToken": {
      "attributes": {
         "screen-share": "true"
      },
      "expirationTime": "2023-08-04T05:26:11+00:00",
      "participantId": "E813MFklPWLF",
      "token": "eyJhbGciOiJLTVMiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTExMjY3NzEsImlhdCI6MTY5MTA4MzU3MSwianRpIjoiRTgxM01Ga2xQV0xGIiwicmVzb3VyY2UiOiJhcm46YXdzOml2czp1cy1lYXN0LTE6OTI3ODEwOTY3Mjk5OnN0YWdlL3U5T2lFMjliVDdYcCIsInRvcGljIjoidTlPaUUyOWJUN1hwIiwiZXZlbnRzX3VybCI6IndzczovL3VzLWVhc3QtMS5ldmVudHMubGl2ZS12aWRlby5uZXQiLCJ3aGlwX3VybCI6Imh0dHBzOi8vYjJlYTVjMmZmMzU1Lmdsb2JhbC53aGlwLmxpdmUtdmlkZW8ubmV0IiwiYXR0cmlidXRlcyI6eyJzY3JlZW4tc2hhcmUiOiJ0cnVlIn0sImNhcGFiaWxpdGllcyI6eyJhbGxvd19wdWJsaXNoIjp0cnVlLCJhbGxvd19zdWJzY3JpYmUiOnRydWV9LCJ2ZXJzaW9uIjoiMC4zIn0.MGUCMFvMzv35O4yVzM9tIWZl7n3mmFQhleqsRSBx_G2qT2YUDlWSNg6H1vL7sAWQMeydSAIxAIvdfqt3Fh1MLiyelc9NnTjI5hL3YPKqDX6J3NDH1fksh8_5y1jztoPDy4yVA5OmtA"
   }
}
```

## コンポジションの開始
<a name="ssc-getting-started-screen-share-start-mediapublish"></a>

スクリーン共有機能によりコンポジションを開始するには、以下のコマンドを使用します。

```
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 '{"grid":{"featuredParticipantAttribute":"screen-share"}}'
```

レスポンスは次のとおりです。

```
{
"composition" : {
"arn" : "arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz",
"destinations" : [ {
 "configuration" : {
	"channel" : {
	   "channelArn" : "arn:aws:ivs:us-east-1:927810967299:channel/DOlMW4dfMR8r",
	   "encoderConfigurationArn" : "arn:aws:ivs:us-east-1:927810967299:encoder-configuration/DEkQHWPVaOwO"
	},
	"name" : ""
 },
 "id" : "SGmgBXTULuXv",
 "state" : "STARTING"
} ],
"layout" : {
 "grid" : {
	"featuredParticipantAttribute" : "screen-share",
	"gridGap": 2,
	"omitStoppedVideo": false,
	"videoAspectRatio": "VIDEO"
 }
},
"stageArn" : "arn:aws:ivs:us-east-1:927810967299:stage/8faHz1SQp0ik",
"startTime" : "2023-09-27T21:32:38Z",
"state" : "STARTING",
"tags" : { }
}
}
```

ステージ参加者 `E813MFklPWLF` がステージに参加すると、その参加者のビデオが、おすすめスロットに表示されます。他のすべてのステージパブリッシャーは、そのスロットの下にレンダリングされます。

![\[画面共有機能を使用して Composition を開始します。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/ssc_StartComposition.png)


## Composition を停止します。
<a name="ssc-getting-started-screen-share-stop-mediapublish"></a>

コンポジションをいつでも停止するには、StopComposition オペレーションを呼び出します。

```
aws ivs-realtime stop-composition --arn arn:aws:ivs:us-east-1:927810967299:composition/B19tQcXRgtoz
```

# 既知の問題と回避策
<a name="ssc-known-issues"></a>

このセクションでは、IVS サーバーサイドコンポジションを使用しているときに発生する可能性のある既知の問題をリストアップし、考えられる回避策を提案します。
+ 一部のコンポジションで、無音状態が続いた後に音の途切れが短期間発生することがある。

  **回避策:** 該当なし