

# IVS ストリーム取り込み \$1 リアルタイムストリーミング
<a name="rt-stream-ingest"></a>

IVS Broadcast SDK を使用する代わりに、WHIP または RTMP ソースから IVS ステージにビデオを公開できます。このアプローチは、OBS Studio やハードウェアエンコーダーからビデオを公開する場合など、SDK の使用が実行不可能または推奨されないワークフローに柔軟性を提供します。サードパーティーソリューションと IVS のパフォーマンスや互換性を保証することはできないため、可能な限り IVS Broadcast SDK を使用することをお勧めします。

この図は、WHIP と RTMP を使用した公開の仕組みを示しています。

![\[WHIP と RTMP を使用した公開。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/Stream_Ingest.png)


## サポートされるプロトコル
<a name="supported-protocols"></a>

IVS Real-Time Streaming は、いくつかの取り込みプロトコルをサポートしています。
+ RTMP と RTMPS – RTMP (Real-Time Messaging Protocol) はネットワーク上でビデオを送信するための業界標準です。RTMPS は TLS 経由で動作する RTMP の安全なバージョンです。

  IVS は、E-RTMP (拡張 RTMP) のマルチトラックビデオ機能をサポートします。IVS RTMP Publishing ドキュメントの「[E-RTMP Multitrack Video](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html#rtmp-multitrack)」を参照してください。
+ WHIP (WebRTC-HTTP Ingestion Protocol) — WebRTC 取り込みを標準化するために開発された IETF ドラフト。

 これらのプロトコルの使用に関する詳細なガイダンスについては、[RTMP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-rtmp-publishing.html) および [WHIP](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/obs-whip-support.html) のドキュメントを参照してください。

## サポートされているメディア仕様
<a name="supported-media-specifications"></a>
+ オーディオ入力形式
  + コーデック: AAC-LC for RTMP および Opus for WHIP
  + チャネル: 2 (ステレオ) または 1 (モノ)
  + サンプルレート: 44.1 kHz または 48 kHz
  + 最大ビットレート: 160 Kbps
+ ビデオ入力形式
  + コーデック: H.264
  + H.264 プロファイル: ベースライン
  + IDR 間隔: 1 秒または 2 秒
  + フレームレート: 10～60 FPS
  + B フレーム: 0

    注: IVS Broadcast SDK では、デフォルトで B フレームが有効になっていますが、バージョン 1.25.0 以降では、IVS ステージにブロードキャストするときに B フレームが自動的に無効になります。他の RTMP エンコーダーを使用してリアルタイムストリーミングを行うには、開発者は B フレームを無効にする必要があります。*他の RTMP エンコーダーを使用する開発者が B フレームを無効にしなかった場合、そのストリームは切断されます*。
  + 最大解像度: 720p 最小解像度: 160p
  + 最大ビットレート: 8.5 Mbps

    注: シングルトラック RTMP ストリームの場合、この制限はそのトラックに適用されます。拡張 RTMP を使用して公開されたマルチトラックビデオの場合、制限はすべてのビデオトラックの合計ビットレートに適用されます。
  + エンコーダー設定: H.264 エンコーダーには `veryfast` と `zerolatency` 設定を使用することをお勧めします。また、`sliced_threads` x264 オプションは `zerolatency` プリセットに含まれているため、無効にすることをお勧めします。例えば、FFmpeg を使用する場合、コマンドには以下を含める必要があります。`-preset:v veryfast -tune zerolatency -x264-params sliced-threads=0`

# IVS RTMP 配信 \$1 リアルタイムストリーミング
<a name="rt-rtmp-publishing"></a>

このドキュメントでは、RTMP を使用して IVS ステージに配信するプロセスの概要を説明します。さまざまな取り込みオプションの詳細については、「[ストリームの取り込み](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html)」ドキュメントを参照してください。

## 前提条件
<a name="rtmp-prerequisites"></a>

### ステージの作成
<a name="rtmp-create-stage"></a>

ステージを作成するには、以下のコマンドを使用します。

`aws ivs-realtime create-stage --name "test-stage"`

レスポンスを含む詳細については、「[CreateStage](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateStage.html)」を参照してください。

**重要：** レスポンスで、RTMP エンドポイントと RTMPS エンドポイントの両方を一覧表示する `endpoints` フィールドを書き留めます。これらは RTMP エンコーダーのセットアップに必要です。

### 取り込み設定を作成する
<a name="rtmp-create-an-ingest-configuration"></a>

RTMPS を使用してステージに配信するには、まず取り込み設定を作成し、ステージに関連付ける必要があります。ステージに配信すると (取り込み設定のストリームキーとステージの RTMP エンドポイントを使用)、メディアは参加者としてステージに配信されます。`userId` およびカスタム `attributes` を指定するオプションがあり、ステージに接続する[参加者](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_Participant.html)に関連付けられます。

```
aws ivs-realtime create-ingest-configuration \
  --name 'test' \
  --stage-arn arn:aws:ivs:us-east-1:123456789012:stage/8faHz1SQp0ik \
  --user-id '123' \
  --ingest-protocol 'RTMPS'
```

レスポンスを含む詳細については、「[CreateIngestConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_CreateIngestConfiguration.html)」を参照してください。

取り込み設定を作成するときは、事前に特定のステージ ARN に関連付けることができます。この関連付けがない場合、ストリームキーは使用できません。また、インジェスト設定 (`stageArn` フィールドを含む) は [UpdateIngestConfiguration](https://docs.aws.amazon.com/ivs/latest/RealTimeAPIReference/API_UpdateIngestConfiguration.html) オペレーションを介して更新できるため、異なるステージで同じ設定を再利用できます。

**注:** 取り込み設定 `insecureIngest` フィールドはデフォルトで `false` になり、RTMPS を使用する必要があります。RTMP 接続は拒否されます。RTMP を使用する必要がある場合は、`insecureIngest` を `true` に設定します。RTMP を必須とする特定の検証済みのユースケースがない限り、RTMPS の使用をお勧めします。

## RTMP シングルトラックビデオ
<a name="rtmp-singletrack"></a>

ここでは、OBS Studio の使用方法を示しますが、IVS [メディア仕様](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)を満たす任意の RTMP エンコーダを使用できます。

### OBS ガイド
<a name="rtmp-singletrack-obs"></a>

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

1. [**設定**] をクリックします。[**設定**] パネルの [**ストリーム**] セクションで、[**サービス**] ドロップダウンから [**カスタム**] を選択します。

1. [**サーバー**] には、ステージから RTMP または RTMPS エンドポイントを入力します。

1. **ストリームキー** には、取り込み設定から `streamKey` を入力します。

1. ビデオ設定を通常どおりに設定します。いくつかの制限があります。

   1. IVS Real-Time Streaming は、8.5 Mbps で最大 720p の入力をサポートします。これらの制限のいずれかを超えると、ストリームは切断されます。

   1. **[出力]** パネルの **[キーフレーム間隔]** を 1 秒または 2 秒に設定することをお勧めします。キーフレーム間隔を短くすると、視聴者の動画再生をより迅速に開始できます。**CPU 使用率プリセット**を **[veryfast]** に、レイテンシーを最小にするために**調整**を **[zerolatency]** に設定することをお勧めします。

   1. OBS はサイマルキャストをサポートしていないため、ビットレートを 2.5 Mbps 未満に維持することをお勧めします。これにより、低帯域幅接続の視聴者が視聴できるようになります。

   1. B フレームを含むストリームは自動的に切断されるため、B フレームを無効にします。次のいずれかを行います。
      + x264 オプションで、`bframes=0 sliced-threads=0` と入力します。
      + オプション (NVENC の場合など) の場合は、B フレームを 0 に設定します。

   注意: RTMP ストリームにはオーディオトラックとビデオトラックの両方が含まれている必要があります。含まれていない場合、ストリームは切断されます。

1. 次に [**ストリーミングを開始**] を選択します。

**重要:** エンコーダーの最大ビットレートが 8.5 Mbps に設定されている場合、パブリッシャーはセッションから消えることがあります。これは、最大ビットレート設定が目標のみであり、エンコーダーが目標を超えることがあるためです。これを防ぐには、エンコーダーの最大ビットレートを 6 Mbps などに設定します。

## E-RTMP マルチトラックビデオ
<a name="rtmp-multitrack"></a>

IVS は、E-RTMP (拡張リアルタイムメッセージングプロトコル) のマルチトラックビデオ機能をサポートするので、単一の RTMP ストリームで複数のビデオ品質を IVS ステージに配信できます。これによりアダプティブビットレートストリーミングが可能になり、サブスクライバーはネットワーク接続に最適な品質で自動的に視聴できます。

取り込まれると、さまざまなビデオ品質がサイマルキャストレイヤーとしてサブスクライバーに配信されます。サブスクライバーが受信するレイヤーを設定するには、リアルタイムストリーミング SDK ガイド ([Android](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-android.html)、[iOS](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-ios.html)、[Web](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/broadcast-web.html)) のサイマルキャストによるレイヤードエンコーディングに関するセクションを参照してください。

サンプルコードについては、GitHub の [aws-samples/sample-amazon-ivs-multitrack-video](https://github.com/aws-samples/sample-amazon-ivs-multitrack-video) を参照してください。

この図は、マルチトラックビデオを使用した配信の仕組みを示しています。

![\[マルチトラックビデオをステージに配信する。\]](http://docs.aws.amazon.com/ja_jp/ivs/latest/RealTimeUserGuide/images/E-RTMP.png)


### OBS ガイド
<a name="rtmp-multitrack-obs"></a>

1. OBS Studio をダウンロードしてインストールします。

   1. Windows: マルチトラックビデオは OBS Studio 30.2 以降でサポートされています。

   1. macOS: マルチトラックビデオは、OBS Studio 31.1 Beta (Apple Silicon のみ) 以降でサポートされています。

   1. ダウンロード: [https://obsproject.com/download](https://obsproject.com/download)。

1. [**設定**] をクリックします。**[設定]** パネルの **[ストリーム]** セクションで、**[サービス]** ドロップダウンから **[Amazon IVS]** を選択します。

1. [**サーバー**] は [**自動**] のままにします。

1. **ストリームキー** には、取り込み設定から `streamKey` を入力します。

1. [**Multitrack Video**] セクションで、[**Enable Multitrack Video**] を選択します。

1. [**ビデオ**] パネルで、目的の [**Base (Canvas Resolution)**] と [**Output (Scaled) Resolution**] を設定します。IVS Real-Time Streaming は、最大 720p の入力をサポートします。これらの制限を超えると、ストリームは切断されます。

   マルチトラックビデオが有効な場合、ビデオトラックの数、ビットレート、キーフレーム間隔などの設定は、デバイスの容量に基づいて自動的に設定されます。

1. [**ストリーミングを開始**] を選択します。

### FFmpeg による配信
<a name="rtmp-multitrack-ffmpeg"></a>

FFmpeg を使用して、RTMP 経由での IVS リアルタイムストリーミングにライブビデオと音声を配信できます。無料のオープンソースプロジェクトである FFmpeg は、ビデオ、音声、およびその他のマルチメディアコンテンツを処理するための包括的な一連のソフトウェアライブラリで構成されています。

以下のコマンド例は、色のパターンとトーンが含まれるストリームを配信します。

```
ffmpeg \
 -re \
 -f lavfi -i testsrc=d=300:s=1280x720:r=60,format=yuv420p \
 -f lavfi -i sine=f=440:b=4:d=300 \
 -c:v libx264 \
 -b:v 2500k \
 -g 60 -bf 0 \
 -profile:v baseline \
 -preset veryfast \
 -tune zerolatency \
 -x264opts sliced-threads=0 \
 -c:a aac \
 -ac 2 \
 -b:a 160k \
 -ar 48000 \
 -f flv \
 rtmps://$INGEST_ENDPOINT/app/$STREAM_KEY
```

この例では、`$INGEST_ENDPOINT` と `$STREAM_KEY` を IVS コンソールまたは API の独自の値に置き換えてください。

この設定は、H.264 ビデオ (ベースラインプロファイル、B フレームなし、スライスされたスレッドなし) や AAC 音声などの IVS リアルタイムストリーミングで[サポートされているメディア仕様](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/rt-stream-ingest.html#supported-media-specifications)に適合しています。

## ステージへのプライベート取り込み
<a name="private-ingest-stages"></a>

インターフェイス VPC エンドポイントを使用して、Amazon VPC 内のリソースまたは Direct Connect からステージに RTMP(S) ストリームと E-RTMP(S) ストリームを配信できます。これによって VPC と IVS 間のプライベート接続が可能になり、AWS ネットワーク内に取り込みトラフィックを保持できます。IVS のインターフェイス VPC エンドポイントを設定および構成するには、「*IVS 低レイテンシーストリーミングユーザーガイド*」の「[IVS Private Ingest](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/private-ingest-ll.html)」を参照してください。

# IVS WHIP パブリッシュ \$1 リアルタイムストリーミング
<a name="obs-whip-support"></a>

このドキュメントでは、OBS などの WHIP 互換エンコーダーを使用して IVS Real-Time Streaming に公開する方法について説明します。[WHIP](https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html) (WebRTC-HTTP Ingestion Protocol) は、WebRTC 取り込みを標準化するために開発された IETF ドラフトです。

WHIP は OBS などのソフトウェアとの互換性を可能にし、デスクトップ公開用の (IVS Broadcast SDK との) 代替を提供します。シーントランジション、オーディオミキシング、オーバーレイグラフィックなどの高度な制作機能を備えているため、OBS に精通している上級ストリーマーには OBS が好ましいかもしれません。これにより、開発者は、IVS Web Broadcast SDK を使用してブラウザを直接公開したり、ストリーマーがデスクトップで OBS を使用してより強力なツールを使用したりするなど、汎用性の高いオプションを利用できます。

WHIP は、IVS Broadcast SDK の使用が実行可能でない場合や推奨されない場合にも有益です。例えば、ハードウェアエンコーダーを含むセットアップでは、IVS Broadcast SDK は使用できない場合があります。ただし、エンコーダーが WHIP をサポートしている場合でも、エンコーダーから IVS に直接公開できます。

**WHIP の要件:**
+ SDP オファーには、オーディオのみを公開している場合でも H.264 ビデオトラックが含まれている必要があります。オファーにビデオトラックが含まれていない場合、接続は拒否されます。
+ グローバル WHIP エンドポイント (https://global.whip.live-video.net) は 307 一時リダイレクトを返します。WHIP クライアントは WHIP 仕様の要求に従って、307 リダイレクトを正しく処理し、リダイレクトされたリクエストにヘッダーを保持する必要があります。

## OBS ガイド
<a name="whip-support-obs-guide"></a>

OBS はバージョン 30 時点で WHIP をサポートしています。開始するには、OBS v30 以降をダウンロードします: [https://obsproject.com/](https://obsproject.com/)。

WHIP 経由で OBS を使用して IVS ステージに公開するには、次の手順に従います。

1. 公開機能を使用して参加者トークンを[生成](https://docs.aws.amazon.com/ivs/latest/RealTimeUserGuide/getting-started-distribute-tokens.html)します。WHIP 用語では、参加者トークンはベアラートークンです。デフォルトでは、参加者トークンの有効期限は 12 時間ですが、最大 14 日間まで延長できます。

1. [**設定**] をクリックします。**[設定]** パネルの **[ストリーム]** セクションで、**[サービス]** ドロップダウンから **[WHIP]** を選択します。

1. **サーバー**には、https://global.whip.live-video.net と入力します。

1. **[Bearer Token]** には、ステップ 1 で生成した参加者トークンを入力します。

1. ビデオ設定を通常どおりに設定します。いくつかの制限があります。

   1. IVS Real-Time Streaming は、8.5 Mbps で最大 720p の入力をサポートします。これらの制限のいずれかを超えると、ストリームは切断されます。

   1. **[出力]** パネルの **[キーフレーム間隔]** を 1 秒または 2 秒に設定することをお勧めします。キーフレーム間隔を短くすると、視聴者の動画再生をより迅速に開始できます。**CPU 使用率プリセット**を **[veryfast]** に、レイテンシーを最小にするために**調整**を **[zerolatency]** に設定することをお勧めします。

   1. OBS はサイマルキャストをサポートしていないため、ビットレートを 2.5 Mbps 未満に維持することをお勧めします。これにより、低帯域幅接続の視聴者が視聴できるようになります。

1. **[ストリーミングを開始]** を押します。

**注**: OBS の WHIP で発生する可能性のある品質上の問題 (断続的なビデオフリーズなど) を認識しています。これらは通常、ブロードキャスターのネットワークが不安定な場合に発生します。本番ライブストリームに使用する前に、OBS で WHIP をテストすることをお勧めします。ブロードキャストビットレートを下げると、これらの問題の発生を減らすこともできます。