

# ステップ 5: ストリーミングソフトウェアの設定
<a name="getting-started-set-up-streaming"></a>

以下の方法で Amazon IVS にストリーミング (低レイテンシー) できます。
+ RTMPS をサポートする、ネイティブの [IVS Broadcast SDK](#broadcast-sdk)。特に本稼働シナリオでは、こちらをお勧めします。
+ [Amazon IVS コンソール](#ivs-console) – ストリームのテストに適しています。
+ その他のストリーミングソフトウェアおよびハードウェアエンコーダー — RTMP、RTMPS、または SRT プロトコルをサポートする任意のストリーミングエンコーダーを使用できます。Open Broadcast Software (OBS) と FFmpeg を RTMPS と SRT で使用するいくつかの例を以下に示します。RTMPS は、暗号化された TLS ストリームを使用して、高セキュリティを実現します。

キーエンコーダの設定は、キーフレーム間隔（2 秒）と解像度/ビットレート/フレームレート（相互に関連する）です。エンコーダ設定の詳細については、次を参照してください。
+ *Amazon IVS ユーザーガイド*の「[ストリーミング設定](streaming-config.md)」を参照してください。
+ ブログ記事: [Setting Up for Streaming with 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 Broadcast SDK によるストリーミング
<a name="broadcast-sdk"></a>

iOS または Android アプリケーションからブロードキャストするには、Amazon IVS Broadcast SDK を使用できます。ブロードキャスト SDK は Amazon IVS アーキテクチャを活用し、Amazon IVS と共に継続的な改善と新しい機能を見ていきます。ネイティブのモバイルブロードキャスト SDK として、アプリケーションおよびユーザーがアプリケーションにアクセスするデバイスに対するパフォーマンスへの影響を最小限に抑えるように設計されています。


| 以下からブロードキャストするには..。 | 以下を使用できます..。 | 注意事項 | 
| --- | --- | --- | 
| Android または iOS アプリケーション | Amazon IVS Android または iOS Broadcast SDK | ネイティブのモバイルブロードキャスト SDK として、アプリケーションおよびユーザーがアプリケーションにアクセスするデバイスに対するパフォーマンスへの影響を最小限に抑えるように設計されています。 | 
| ウェブ環境 | Amazon IVS Web Broadcast SDK | Web Broadcast SDK として、Amazon IVS Web Broadcast SDK を使用すると、WebRTC を使用してウェブ環境からブロードキャストできます。クロスブラウザとクロスプラットフォームをサポートします。 | 

詳細については、「[IVS Broadcast SDK \$1 Low-Latency Streaming](broadcast.md)」を参照してください。

## Amazon IVS コンソールを使用したストリーミング
<a name="ivs-console"></a>

1. [Amazon IVS コンソール](https://console.aws.amazon.com/ivs)を開きます。

   ([AWS マネジメントコンソール](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 Studio は、リアルタイムのソースとデバイスのキャプチャ、シーンの構成、エンコーディング、記録、ストリーミングを提供します。

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 秒間の**キーフレーム間隔**をお勧めします。ウィザードが完了したら、**[設定] > [出力] > [出力モード]** に進み、**[詳細]** を選択し、**[ストリーミング]** タブで **[キーフレーム間隔]** が 2 になっていることを確認します。

   **注:** 以前に **[マルチトラックビデオを有効にする]** をオンにしていた場合、キーフレーム間隔は自動的に設定されます。

1. OBS Studio のメインウィンドウで、[**Start Streaming (ストリーミングの開始)**] を選択します。

OBS Studio によるストリーミングの詳細については、[OBS Studio Quickstart](https://obsproject.com/wiki/OBS-Studio-Quickstart)を参照してください。

OBS の設定は後で手動で変更できます。

1. [**Settings (設定) > Stream (ストリーム)**] を選択します。

1. ドロップダウンから **[Amazon IVS]** を選択します。

1. **ストリームキー**を貼り付けます。

ウィザードはいつでも再実行できます。[**Tools (ツール) > Auto-Configuration Wizard (自動構成ウィザード)**] を選択してください。

オプションで、ライブストリームを**Settings (設定) > General (全般)**にローカルに保存することで、後で使用できます。前述のように、ブロードキャストと AWS 間または AWS 内のネットワークの問題により、ストリームの録画中にデータが失われる可能性があります。このような場合、Amazon IVS は録画よりもライブストリームを優先します。ストリーミングツールでローカルに録画することで、冗長性が得られます。

OBS Studio のアップデートを定期的にチェックして、最新バージョンに更新することをお勧めします。（例えば、「Failed to connect to server (サーバーへの接続に失敗しました) 」というエラーが表示された場合は、RTMPS をサポートしていない古いバージョンの OBS Studio を使用している可能性があります。）

## SRT を使用した OBS Studio によるストリーミング
<a name="obs-srt"></a>

Secure Reliable Transport プロトコルをすぐに起動して実行するには、次の手順に従います。

1. ソフトウェアをダウンロードしてインストールします: [https://obsproject.com/download](https://obsproject.com/download)。

1. OBS Studio を初めてロードするときに表示される、OBS Studio の**自動設定ウィザード**を実行します。ステップに従い、デフォルト値を受け入れます。

1. **[ストリーム情報]** で、**[サービス]** ドロップダウンから **[カスタム...]** を選択し、**[サーバー (取り込みサーバー)]** と **[ストリームキー]** を入力します。

   AWS CLI でチャネルを作成した場合:
   + OBS に入力する**サーバー**は、以下の 5 つの組み合わせになります。
     + 取り込みプロトコル: `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 秒間の**キーフレーム間隔**をお勧めします。ウィザードが完了したら、**[設定 > 出力 > 出力モード]** に進み、**[詳細]** を選択し、**[ストリーミング]** タブで **[キーフレーム間隔]** が 2 になっていることを確認します。

1. OBS Studio のメインウィンドウで、[**Start Streaming (ストリーミングの開始)**] を選択します。

OBS の設定は後で手動で変更できます。

1. [**Settings (設定) > Stream (ストリーム)**] を選択します。

1. ドロップダウンから、[**Custom (カスタム)**] を選択します。

1. **サーバー**および/または**ストリームキー**に貼り付けます。

ウィザードはいつでも再実行できます。[**Tools (ツール) > Auto-Configuration Wizard (自動構成ウィザード)**] を選択してください。

オプションで、ライブストリームを**Settings (設定) > General (全般)**にローカルに保存することで、後で使用できます。前述のように、ブロードキャストと AWS 間または AWS 内のネットワークの問題により、ストリームの録画中にデータが失われる可能性があります。このような場合、Amazon IVS は録画よりもライブストリームを優先します。ストリーミングツールでローカルに録画することで、冗長性が得られます。

OBS Studio のアップデートを定期的にチェックして、最新バージョンに更新することをお勧めします。(例えば、「Failed to connect to server」というエラーが表示された場合は、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`を StreamKey **値**に設定します。

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

1. (**ingestEndpoint** に `INGEST_ENDPOINT` を設定します (AWS CLI から)。

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

1. 次のターミナルコマンドでストリーミングを開始します (これはすべて 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`を StreamKey **値**に設定します。

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

1. `INGEST_ENDPOINT` を (`srt` オブジェクトの下にある AWS CLI の) **エンドポイント**に設定します。

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

1. `PASSPHRASE` を (`srt` オブジェクトの下にある AWS CLI の) **パスフレーズ**に設定します。パスフレーズは、チャネルで安全でない取り込みが有効になっていない場合にのみ使用してください。

   ```
   PASSPHRASE=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ
   ```

1. 次のターミナルコマンドでストリーミングを開始します (これはすべて 1 行です)。

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