Amazon IVS ストリーミング設定 - Amazon IVS

Amazon IVS ストリーミング設定

Amazon Interactive Video Service (IVS) を使用すれば、開発者は世界中の視聴者に簡単に低レイテンシーで動画を配信できます。Amazon IVS ではストリーマーはストリーム制作を処理するだけでよく、その後 Amazon IVS にストリームを送信します。Amazon IVS は、Amazon IVS プレイヤーを使用して視聴者向けの動画処理 (取り込みおよびトランスコーディング)、配信、再生を実行します。

ライブストリーミング向けの豊富なソリューションをご用意しています。複数のカメラ、ビジュアルスイッチャー、グラフィックコンポジットや、さまざまなオーディオミキシング機器を備えたスタジオでも、スマートフォンから初めてのストリーミングを開始する予定でも、同様のコンセプトやエンコーディングパラメータに対処する必要があります。

このドキュメントでは、動画エンコーダーを Amazon IVS にストリーミングする設定について説明します。このドキュメントは、ストリーミング機能をアプリケーションに組み込む開発者を対象とします。

IVS 低レイテンシーストリーミングでは、オーディオのみの入力はサポートされていないことに注意してください。

前提条件

IVS 低レイテンシーストリーミングを開始する」の手順に従ってチャネルを作成し、ストリーミングを設定します。このプロセスでは、チャネル ARN (Amazon リソースネーム) とストリームキーが、ストリームの取り込みと再生のための URL とともに割り当てられます。ストリーミングアプリケーションには、取り込み URL を指定する必要があります。

このドキュメントを読む前に、以下のことを理解しておく必要があります。

レイテンシーの低減

Amazon IVS Low-Latency Streaming は、ほとんどのストリーミングアプリケーションと互換性があり、ストリーミングアプリケーションの設定にわずかな変更を加えるだけで済みます。レイテンシーを最小限に抑えるには、Amazon IVS プレイヤーを使用する必要があります。サードパーティの HLS ビデオプレーヤーはサポートされていません。Amazon IVS Player SDK のドキュメントを参照してください。

低レイテンシーのストリーミング向けのストリーミングアプリケーションを準備するには、以下の手順を実行します。(注:すべてのストリーミングアプリケーションでこれらのオプションが使用できるわけではありません)。

  • 動画エンコーダーで、IDR/Keyframe を 2 秒に 1 回 (エンドツーエンドのレイテンシーをさらに低減するには 1 秒) に設定します。

    IDR/Keyframe は、ストリーム起動のタイミングと、関連する EventBridge イベント (Stream Start と Recording Start) のレイテンシーに直接影響します。IDR/Keyframe が 2 秒の場合、ストリーム開始のレイテンシーは約 6~7 秒になります。IDR/Keyframe が 1 秒の場合、ストリーム開始のレイテンシーは約 3~4 秒になります。視聴者は、最初のストリーム開始のレイテンシーの発生後にのみ、動画を利用できます。動画は Amazon S3 に自動録画されます。

    より短い、 1 秒のキーフレーム間隔では、QoS のトレードオフが生じます。これにより、Amazon IVS プレイヤーのアダプティブビットレートストリーミング (ABR) が解像度を頻繁に切り替える可能性があります。この場合、セグメントサイズが小さくなるため、ABR チェックがより頻繁に行われます。解像度の切り替えが増加したり、視聴者のネットワークがセグメントを十分な速度でダウンロードできない場合、バッファリングが増加する可能性があります。キーフレーム間隔を 1 秒または 2 秒に決定するときに、これらのトレードオフを考慮してください。

    IDR/Keyframe は、5 秒を超える値に設定しないでください。1 秒または 2 秒を使用する場合よりもストリーム開始レイテンシーが長くなることに加えて、IVS は再生用に生成されたすべてのセグメントが IDR/キー フレームで開始されることを保証できません。IDR/キーフレームで開始されないセグメントでは、視聴者が再生を開始する、またはレンディションを変更するときに、デコードエラーや視覚的な歪みが発生する可能性があります。

  • 可能な場合は、x264 の設定でエンコーダーをゼロレイテンシーチューニングに設定します。

  • バッファサイズ (VBV) がストリームの平均ビットレート (キロビット/秒) を超えないようにしてください。

サードパーティによるストリーミング/転送サービスの回避

コンテンツを Amazon IVS に再ストリーミングまたは転送する際に、サードパーティのサービスを使用しないことを強くお勧めします。レイテンシーが増加する原因となります。低レイテンシーを確保するには、Amazon IVS に直接ストリーミングします。

エンコーダー設定

ストリーム取り込み: コーデックと取り込みプロトコル

コーデック: Amazon IVS は、動画向けの H.264、オーディオ向けの AAC (LC) をサポートしています。

取り込みプロトコル: Amazon IVS は、ソフトウェアやハードウェアのストリーミングに使用される最も一般的な取り込みプロトコルである RTMPS (TLS/SSL 接続を介したリアルタイムメッセージングプロトコル)、RTMP、SRT (セキュアリライアブルトランスポート) をサポートしています。RTMPS を介した Amazon IVS ストリーミングには、TLS バージョン 1.2 以降が必要です。

RTMPS/RTMP

動画エンコーダーは、アウトバウンドポート 443/TCP に関連付けられた RTMPS プロトコルを使用して Amazon IVS の取り込みに接続する必要があります。接続するには、パスにポートを含む IVS 取り込みサーバーを指定します。

rtmps://<IVS-ingest-server>/<IVS-stream-key>

例えば:

rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/<IVS-stream-key>

IVS チャネルは、安全でない RTMP 取り込みを許可するように設定することもできますが、RTMP を必須とする特定の検証済みのユースケースがない限り、RTMPS を使用することをおすすめします。RTMP をストリーミングする場合は、プロトコルが rtmp:// に設定されていることを確認し、:443 ポートを削除してください。例えば:

rtmp://a1b2c3d4e5f6.global-contribute.live-video.net/app/<IVS-stream-key>

SRT

動画エンコーダーは、ポート 9000 で SRT プロトコルを使用して、取り込みエンドポイントに接続する必要があります。接続するには、パスにポートとパスフレーズを含む取り込みサーバーを指定します。

srt://<ingest-endpoint>:<port>?streamid=<stream-key>&passphrase=<passphrase>

チャネルに対して安全でない取り込みが無効になっている場合にのみ、パスフレーズを使用します。

例えば:

srt://a1b2c3d4e5f6.srt.live-video.net:9000?streamid=sk_us-west-2_abcd1234efgh5678ijkl&passphrase=ZU5A3yrjGAkghUNDr0c5NXBhsPrjlmtcKMNBluh7oImwJQ3ijeyClvMKxlpPcGAMziICJ

SRT ストリームのパフォーマンスを最適化するには、この Haivision のブログ「How to Configure SRT Settings on Your Video Encoder for Optimal Performance」を参照してください。

解像度/ビットレート/FPS

ストリームの解像度によって、ビットレートとフレームレート (1 秒あたりのフレーム数、つまり FPS) が大きく左右されます。以下のガイドラインを使用してください。これらは当社の推奨事項です。以下に示す解像度は横向き (水平×垂直) ですので注意してください。縦向きの場合は逆にします。

許容可能な画質 (SD) 480p (852x480) 良好な画質 (HD) 720p (1280x720) 高画質 (フル HD) 1080p (1920x1080)
ビットレート 最大 1500 Kbps 最大 4500 Kbps 最大 8500 Kbps
FPS 30 30 または 60 30 または 60
キーフレーム間隔 2 秒 2 秒 2 秒

ビットレート、FPS、解像度は相互に関連しています。最適な値は状況によって異なるため、複雑な判断となる可能性があります。当社では、上記の値から開始し必要に応じて調整することを最善の方法としてご案内しています。目標とするのは、ストリーミング中のビデオコンポーネントの明確かつスムーズなモーションと、利用可能な帯域幅内での良好な解像度です。フレームレートや解像度を上げると、総合的な動画品質は向上しますが、必然的に帯域幅によって制限されます。

Amazon IVS では、最大 60 FPS のフレームレート (European PAL 25 および 50 標準フレームレートを含む) がサポートされています。適切なビットレート帯域幅があれば、フレームレートが高いほど画質は向上します。用途によっては、低フレームレートでも問題ありません。例えば、防犯カメラに使用する場合などです。

チャネルタイプ

チャネルタイプによって、許容解像度とビットレートが決まります。許容可能な入力解像度またはビットレートを超過すると、ストリームがすぐさま切断される可能性があります。

チャネルには STANDARDADVANCED_SDADVANCED_HDBASIC の 4 つのタイプがあります。チャネルを作成した際のデフォルトタイプは STANDARD です。

動画処理には、トランスコーディングトランスマックスの 2 種類があります。これは、チャネルタイプ、チャネルがマルチトラックビデオ入力用に設定されているかどうか、ブロードキャスターがマルチトラック対応クライアントを使用しているかどうかによって決まります。(マルチトラックビデオは、[Channel] データ型の [multitrackInputConfiguration API プロパティ] で設定します。)

  • STANDARD チャネル (マルチトラック入力が無効) と ADVANCED チャネルの動画がトランスコードされます。元の入力データから複数の品質が生成され、視聴者のデバイスとネットワークの状況に最適なエクスペリエンスが自動的に提供されます。トランスコーディングにより、さまざまなダウンロード速度でより高い再生品質が可能になります。トランスコーディングは、ファーストマイルのインターネット接続が制限されているブロードキャスターや、デバイス機能が制限されているブロードキャスター (デスクトップ PC ではなく携帯電話など) に最適なオプションです。

  • STANDARD (マルチトラック入力が有効で、マルチトラック対応クライアントを使用するブロードキャスターを使用) とBASIC チャネルの動画がトランスマックスされます。Amazon IVS は元の入力データを視聴者に配信します。トランスコーディングと同様に、トランスマックスされたマルチトラック入力データは、視聴者のデバイスやネットワークの状態に最適なエクスペリエンスを提供します。

トランスコードされたすべてのチャネルにはトランスコードプリセットがあり、どのレンディションが作成されるかを決定します。これらは ABR ラダーと考えてください。利用可能なダウンロード帯域幅とビデオ品質のトレードオフとして、視聴エクスペリエンスを最適化できるようにします。

  • STANDARD チャネルにはデフォルトのトランスコードプリセットが 1 つあります。

  • ADVANCED チャネルには 2 つの選択可能なトランスコードプリセットがあります。

    • 制約のある帯域幅配信は、各品質レベルについて STANDARD よりも低いビットレートを使用します。ダウンロード帯域幅が狭い、および/またはシンプルな動画コンテンツ (トーキングヘッドスタイルなど) の場合に使用してください。

    • 高帯域幅の配信では、各品質レベルに対してより高いビットレートを使用します。ダウンロード帯域幅が広い、および/または複雑な動画コンテンツ (フラッシュと速い場面転換など) の場合に使用してください。これがデフォルトです。

STANDARD チャネル

シングルトラック動画入力

STANDARD チャネルはトランスコードされます。生成されるビデオの最高解像度はフル HD である 1080p です。これがデフォルトのチャネルタイプです。

  • トランスコードプリセット: デフォルトのトランスコードプリセットラダーが 1 つあります。

  • 音声: 360p 以下のレンディションでは、音声はトランスコードされます。その他のレンディションでは、元の音声がパススルーされます。

入力解像度と最大ビットレート ラダーの詳細

1080p60 (8.5 Mbps)

  1. 動画: ソースパススルー、音声: ソースパススルー

  2. 動画: 3.4 Mbps で 720p60、音声: ソースパススルー

  3. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  4. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  5. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

1080p30 (8.5 Mbps)

  1. 動画: ソースパススルー、音声: ソースパススルー

  2. 動画: 2.4 Mbps で 720p30、音声: ソースパススルー

  3. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  4. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  5. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

1080p60 未満、720p60 より大きい (8.5 Mbps)

  1. 動画: ソースパススルー、音声: ソースパススルー

  2. 動画: 3.4 Mbps で 720p60、音声: ソースパススルー

  3. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  4. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  5. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

1080p30 未満、720p30 より大きい (8.5 Mbps)

  1. 動画: ソースパススルー、音声: ソースパススルー

  2. 動画: 2.4 Mbps で 720p30、音声: ソースパススルー

  3. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  4. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  5. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

720p60 (8.5 Mbps)

  1. 動画: 3.4 Mbps で 720p60、音声: ソースパススルー

  2. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  3. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

720p30 (8.5 Mbps)

  1. 動画: 2.4 Mbps で 720p30、音声: ソースパススルー

  2. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  3. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

720p30/60 未満、480p30/60 以上 (8.5 Mbps)

  1. 動画: 1.4 Mbps で 480p30、音声: ソースパススルー

  2. 動画: 0.63 Mbps で 360p30、音声: 64 kbps

  3. 動画: 0.23 Mbps で 160p30、音声: 48 kbps

マルチトラックビデオ入力

STANDARD チャネルは、入力がマルチトラックビデオの場合にトランスマックスされます。生成される最大動画解像度は、multitrackInputConfiguration.maximumResolution プロパティによって制限されます。特定のレンディションは、ブロードキャスターのシステムや環境の要件に応じて変化します。

すべての動画のレンディションで、音声はソースパススルーです。

ADVANCED-HD チャネル

ADVANCED-HD チャネルはトランスコードされます。生成されるビデオの最高解像度は HD、720p です。

  • トランスコードプリセット: 選択可能なトランスコードプリセットラダーが 2 つあります。

  • 音声: 音声はトランスコードされます。

入力解像度と最大ビットレート ラダーの詳細

720p60 から 1080p60 まで (8.5 Mbps)

トランスコードプリセット: 高帯域幅配信 (デフォルト):

  1. 動画: 3 Mbps で 720p60、音声: 128 kbps

  2. 動画: 1.3 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.7 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.27 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (64 kbps)

トランスコードプリセット: 制限付き帯域幅配信:

  1. 動画: 2.2 Mbps で 720p60、音声: 128 kbps

  2. 動画: 0.8 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.4 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.22 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (64 kbps)

720p30 から 1080p30 まで (8.5 Mbps)

トランスコードプリセット: 高帯域幅配信 (デフォルト):

  1. 動画: 2.3 Mbps で 720p30、音声: 128 kbps

  2. 動画: 1.3 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.7 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.27 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (64 kbps)

トランスコードプリセット: 制限付き帯域幅配信:

  1. 動画: 1.9 Mbps で 720p30、音声: 128 kbps

  2. 動画: 0.8 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.4 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.22 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (0.08 Mbps)

720p30/60 未満、480p30/60 より大きい (8.5 Mbps)

トランスコードプリセット: 高帯域幅配信 (デフォルト):

  1. 動画: ソースは 2.3 Mbps でトランスコード、音声: 128 kbps

  2. 動画: 1.3 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.7 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.27 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (64 kbps)

トランスコードプリセット: 制限付き帯域幅配信:

  1. 動画: ソースは 1.9 Mbps でトランスコード、音声: 128 kbps

  2. 動画: 0.8 Mbps で 480p30、音声: 128 kbps

  3. 動画: 0.4 Mbps で 360p30、音声: 64 kbps

  4. 動画: 0.22 Mbps で 160p30、音声: 48 kbps

  5. 音声のみ (64 kbps)

480p30/60 (8.5 Mbps)

トランスコードプリセット: 高帯域幅配信 (デフォルト):

  1. 動画: 1.3 Mbps で 480p30、音声: 128 kbps

  2. 動画: 0.7 Mbps で 360p30、音声: 64 kbps

  3. 動画: 0.27 Mbps で 160p30、音声: 48 kbps

  4. 音声のみ (64 kbps)

トランスコードプリセット: 制限付き帯域幅配信:

  1. 動画: 0.8 Mbps で 480p30、音声: 128 kbps

  2. 動画: 0.4 Mbps で 360p30、音声: 64 kbps

  3. 動画: 0.22 Mbps で 160p30、音声: 48 kbps

  4. 音声のみ (64 kbps)

ADVANCED-SD チャネル

ADVANCED-SD チャネルはトランスコードされます。使用可能なレンディションは入力品質に制限され、アップコンバージョンは行われません。

  • トランスコードプリセット: 選択可能なトランスコードプリセットラダーが 2 つあります。

  • 音声: 音声はトランスコードされます。

入力解像度と最大ビットレート ラダーの詳細

480p30/60 から 1080p30/60 まで (8.5 Mbps)

トランスコードプリセット: 高帯域幅配信 (デフォルト):

  1. 動画: 1.3 Mbps で 480p30、音声: 128 kbps

  2. 動画: 0.7 Mbps で 360p30、音声: 64 kbps

  3. 動画: 0.27 Mbps で 160p30、音声: 48 kbps

  4. 音声のみ (64 kbps)

トランスコードプリセット: 制限付き帯域幅配信:

  1. 動画: 0.8 Mbps で 480p30、音声: 128 kbps

  2. 動画: 0.4 Mbps で 360p30、音声: 64 kbps

  3. 動画: 0.22 Mbps で 160p30、音声: 48 kbps

  4. 音声のみ (64 kbps)

BASIC チャネル

BASIC チャネルはトランスマックスされます。1 つのレンディションが生成されます。

  • トランスコードプリセット: 無し

  • 音声: ソース音声はパススルーされます。

入力解像度と最大ビットレート ラダーの詳細

3.5 Mbps で 480p30/60 より大きく 1080p30/60 以下

ソースエンコーディングパラメータ (ラダーなし)

480p30/60 (1.5 Mbps)

ソースエンコーディングパラメータ (ラダーなし)

ビデオ設定

次の設定が推奨されます。これらは、ほとんどの H.264 動画エンコーディングソフトウェアまたはハードウェア API で利用可能です。

  • 動画エンコーダーで、IDR/Keyframe を 2 秒に 1 回 (エンドツーエンドのレイテンシーをさらに低減するには 1 秒) に設定します。

  • H.264 レベル:メイン

  • シーン変更:オフ (推奨)

  • Chroma のサブサンプル: YUV420P

  • CABAC: 推奨

  • ColorSpace: BT.709 (ハイビジョンテレビやコンピューターディスプレイとの互換性を最大限に高めるために推奨されます) Amazon IVS ビデオトランスコーディングは ColorSpace パススルーをサポートしています。上級ユーザーは、他の ColorSpace ビデオやフルレンジビデオを使用できます。

オーディオ設定

以下の設定がサポートされています。

  • コーデック:AAC(LC)

  • ビットレート: 96 Kbps ~ 320 Kbps

  • サンプルレート: 44.1 KHz または 48 KHz (本稼働のオーディオフローと一致させることをお勧めします)

  • チャネル: 最大 2 チャネル- ステレオ (1: モノラルまたは 2: ステレオのオーディオチャネルをサポート)

VBR ではなく CBR を使用する

VBR (可変ビットレート) ではなく CBR (固定ビットレート) を、エンコーダーのレートの制御方法として常に使用します。CBR は、ネットワークの固定帯域幅の特性に適しており、クライアントデバイスに対して、予測可能で安定した動画再生を実現します。固定ビットレートでは、視聴者は接続時に処理される画質レベルを簡単に選択できます。

VBR では、シーンの複雑さによっては、ビットレートのスパイクが発生し、動画が Amazon IVS に到達する前にフレームドロップが発生したり、クライアントのプレイヤーでバッファリングされたりする可能性があります。

CBR のみを使用することを強くお勧めします。VBR を使用すると、ストリーム中により多くのバッファリングが発生し、スムーズな再生ができなくなります。

プログレッシブシグナルを使用する

プログレッシブシグナルフローを使用します。本稼働のフローやエンコーディング中は、インターレース方式の動画は避けてください。プログレッシブストリーム信号では、フレーム全体を一度に表示できるため、再生画質が大幅に向上し、インターレース信号を表示する際に生成されるモーションアーティファクトが発生しません。

ネットワークの要件

一定のアップロードストリームを適切に維持できる、安定したインターネット接続が必要です。インターネット接続が不安定になると、視聴者側でストリームの途切れや遅延が発生する可能性があります。

有線接続を使用します。WiFi および LTE 接続では、不適切な QoS/パケットキューの優先順位付けによってむらが生じたり、干渉やレイテンシーが生じる可能性があります。可能な限り、ストリーム向けのハード接続を利用してください。

最低限必要な帯域幅よりも 50% 多い帯域幅を割り当てるよう計画してください。動画のビットストリームをエンコードする際のビットレートの変動を補うためのオーバーヘッドが追加されます。

専用のインターネット VLAN を使用してマシンをエンコードします。エンコーダーを別のネットワークで維持することで、トラフィックによる汚染、帯域幅のボトルネック、セキュリティ上の悪影響など、破壊的になり得る影響を防ぐことができます。

クローズドキャプション

IVS はクローズドキャプションをサポートしています。ストリーマーとして視聴者にキャプションを提供したい場合は、動画エンコーダーを使用して、キャプションデータを受け入れられる形式でストリームに埋め込むか、ストリームと一緒に送信する必要があります。

Amazon IVS は、line 21 CEA-708/EIA-608 形式 (608 over 708 とも呼ばれます) のキャプションを受け入れます。以下のいずれかの方法を使用して、キャプションを送信できます。

  • ATSC A/72 (SEI user_data) で説明されている、動画のエレメンタリーストリームに埋め込まれた CEA-708/EIA-608。この形式は、テレビ放送のエンコーダーで一般的に使用されるものです。

  • RTMPS OnCaptionInfo script/AMF0 タグ経由で送信された CEA-708/EIA-608。この形式は、Elemental Technologies や Wowza のようなインターネットブロードキャストのエンコーダーやメディアサーバで一般的に使用されるものです。Amazon IVS Player SDK では、1 つの言語をサポートしていますが、マルチトラックキャプションの再生はサポートしていません。

注意: Amazon IVS Player SDK は、CC1 NTSC フィールド 1 のキャプションデータのみをサポートします。マルチトラックキャプションの再生はサポートされていません。

RTMPS 経由で送信する場合、ペイロードには、次の 2 つのエレメントのペアがある ECMA 配列が含まれている必要があります。

  • 文字 708 を含む type という文字列。

  • base64 でエンコードされた CEA-708/EIA-608 ペイロードが含まれる data という文字列。

例:

00000000 12 00 00 69 00 00 00 00 00 00 00 02 00 0d 6f 6e |...i..........on| 00000010 43 61 70 74 69 6f 6e 49 6e 66 6f 08 00 00 00 02 |CaptionInfo.....| 00000020 00 04 74 79 70 65 02 00 03 37 30 38 00 04 64 61 |..type...708..da| 00000030 74 61 02 00 3c 74 51 41 78 52 30 45 35 4e 41 4e |ta..<tQAxR0E5NAN| 00000040 4c 41 50 79 55 72 76 79 55 49 50 79 52 51 50 7a |LAPyUrvyUIPyRQPz| 00000050 49 35 66 7a 73 37 50 7a 76 4c 50 77 67 56 50 7a |I5fzs7PzvLPwgVPz| 00000060 33 36 66 7a 30 34 2f 78 6f 67 50 79 55 4c 2f 38 |36fz04/xogPyUL/8| 00000070 3d 00 00 09 00 00 00 74 |=......t|

Elemental の動画エンコーダーを使用する場合は、次のように設定します。

  • キャプションの埋め込みを「capture 608 Field 1」に設定します。

  • 出力グループの RTMPS タグとして、onCaptionInfo を使用してキャプションを埋め込みます。

詳細については、ブログ記事「Adding Closed Captions to an Amazon IVS Live Stream」を参照してください。

FFmpeg を使用したストリーミング

FFmpeg は、動画、オーディオ、およびその他のマルチメディアファイルやストリームを処理するための一連の広範なソフトウェアライブラリで構成される無料のオープンソースプロジェクトです。多くのオペレーティングシステムとデバイスで使用できます。

FFmpeg のインストールおよびその他の情報については、FFmpeg のウェブサイトを参照してください。最新のスタティックビルドを使用します (コンパイルしないでください)。

インストール後、FFmpeg の音声/動画入力ソースを選択します。次のように、利用可能なものを検索できます。

ffmpeg -list_devices true -f dshow -i dummy.

詳細については、こちらを参照してください。利用可能な入力ソースと対象とするキャプチャ方法に応じて、選択したデバイスから直接、動画/音声 (埋め込み) をキャプチャし、FFmpeg で信号をエンコードできるはずです。次に例を示します。

  • ウェブカメラ - ロジクールの C920 ウェブカメラからの出力をキャプチャします。

    ffmpeg -f dshow -video_size 1920x1080 -framerate 30 -i video="HD Pro Webcam C920":audio="Microphone (HD Pro Webcam C920)" -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -r 30 -s 1920x1080 -profile:v main -preset veryfast -g 120 -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/<IVS-stream-key>
  • 動画ファイル - FFmpeg は、多くの動画ファイル形式とキャプチャカードで動作します。MP4 入力に基づくストリーミングの例を次に示します。

    ffmpeg -re -i input.mp4 -c:v libx264 -b:v 6000K -maxrate 6000K -pix_fmt yuv420p -s 1920x1080 -profile:v main -preset veryfast -force_key_frames expr:gte(t,n_forced*2) -x264opts "nal-hrd=cbr:no-scenecut” -acodec aac -ab 160k -ar 44100 -f flv rtmps://<IVS-ingest-server>/app/<IVS-stream-key>

<IVS-ingest-server> および <IVS-stream-key> への入力内容の詳細については、「IVS 低レイテンシーストリーミングを開始する」のライブストリーミングソフトウェアのセットアップに関する情報を参照してください。例:

  • 取り込みサーバー: rtmps://jds34ksdg3las.global-contribute.live-video.net/app/

  • ストリームキー: sk_us-west-2_abcd1234efgh5678ijkl

Stream Takeover

ストリームテイクオーバーにより、ユーザーは所有しているチャネル上の進行中のストリームを新しいストリームに置き換えることができます。このプロセス中、前のストリームは切断されず、単に新しいストリームに置き換えられます。これにより、ユーザーは進行中のストリームが完全に切断されるまで待つことなく、新しいストリームにシームレスに接続できます。

ストリームテイクオーバープロセスは、進行中のストリームセッションを延長しますが、新しいセッションは開始しません。これにより、視聴者がプレイヤーを更新しなくてもストリームの継続性が維持されますが、短いバッファリング状態が発生する場合があります。ストリームテイクオーバーが発生するストリームセッションの記録には、不連続性はありません。

ストリームテイクオーバーを開始するには、priority URL パラメータをユーザーのストリームキーに追加します。ストリームキーは <IVS-stream-key>?priority=<priority> になります。ここで、<priority> は 1~2,147,483,647 の正の整数です。

RTMPS プロトコルでストリームテイクオーバーを使用するための URI 構文は次のとおりです。

rtmps://<uri>/<streamkey>?priority=N

SRT 取り込みの場合、ストリームテイクオーバーのための URI 構文は次のとおりです。

srt://<uri>?streamid=#!::u=<streamkey>,priority=N&passphrase=foobar

新しいストリームに指定された優先度整数が進行中のストリームの優先度整数よりも大きい場合、または以前の優先度整数が設定されていない場合、テイクオーバーは成功します。また、新旧のストリームは、同じ解像度、ビデオコーデック、オーディオコーデック、トラック数を共有する必要があります。

デフォルトでは、連続するテイクオーバーごとにより大きな優先度整数が使用される限り、1 つのストリームで最大 100 回のテイクオーバーを実行できます。ストリームテイクオーバーの最大数は AWS アカウントごとに調整できます (「Service Quotas」を参照)。ストリームが終了すると、チャネルは以前の優先度整数または実行されたテイクオーバー回数のメモリを保持しないため、優先度整数は将来のストリームで再利用できます。また、ストリームテイクオーバーのためにエンコーダー設定を変更した場合、ストリームセッションは以前のエンコーダー設定のメモリを保持せず、最新の設定のみを表示します。

自動再接続機能が有効になっている場合、IVS Mobile Broadcast SDK はストリームテイクオーバーを使用して、ブロードキャスターがネットワークを切り替えたときに自動で再接続します (例えば、WiFi から携帯電話へ)。自動再接続を有効にするには:

  • iOS では、IVSBroadcastConfiguration オブジェクトに config.autoReconnect.enabled = true を設定します。

  • Android では、BroadcastConfiguration オブジェクトに config.autoReconnect.setEnabled(true) を設定します。

Auto-Reconnect と Stream Takeover を併用する場合の考慮事項

Mobile Broadcast SDK のお客様が上記のように自動再接続を有効にすると、進行中のストリーマー (ブロードキャスター A) は、ネットワークの中断後に priority=1 から始まり、再接続の試行ごとに優先度を上げながら、最大 5 回まで再接続を試行します。このプロセスにより、再接続が成功するたびに優先度が徐々に高くなり、不安定なネットワークでもブロードキャストが自動的に回復できるようになります。

ただし、自動再接続動作は段階的なため、元のブロードキャスターが自動再接続を使用しているときに、別のブロードキャスター (ブロードキャスター B) がストリームテイクオーバーを正常に使用することは困難になります。ブロードキャスター A による再接続の試行では、ストリーム期間中の再試行ごとに優先度の値が増加するため、テイクオーバーを成功させるために必要な優先度の値は予測できません。

注: 自動再接続が有効になっている場合は、ストリームテイクオーバーを使用して Mobile Broadcast SDK からのストリームを上書きすることはお勧めしません。テイクオーバーに必要な優先度を管理または記録しておく必要があるためです。大きな優先度の値を設定すると、最初はうまくいくかもしれませんが、あとで別のテイクオーバーが必要になった場合に問題が生じる可能性があります。ネットワークが不安定な場合のブロードキャスター A の自動再接続と、ブロードキャスター B によるストリームテイクオーバーを、別々のユースケースとして維持することをお勧めします。

Amazon IVS Broadcast SDK を使用してストリーミングする

Amazon IVS Broadcast SDK は、Amazon IVS を使用して Android、iOS、またはウェブアプリケーションを構築するデベロッパー向けのものです。こちらから、Amazon IVS ユーザーガイド内のブロードキャスト SDK のドキュメントを参照してください。Android、iOS、およびウェブストリーミング用のガイドを含むサブページがあります。Broadcast SDK を使用することで、ビットレート、フレームレート、解像度をカスタマイズできます。

ストリームのテスト

常にストリームの動作を確認します。

Amazon IVS コンソールで動画ストリームに移動してストリーミングをモニタリングし、ライブストリームを管理します。