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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

  • ビデオエンコーダーで、 IDR/Keyframeを 2 秒間隔 (レイテンシ end-to-end ーをさらに低くするには 1 秒) に設定します。

    IDR/Keyframe は、ストリームの起動のタイミングと関連 EventBridge イベントのレイテンシー (ストリームの開始と録画の開始) に直接影響します。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) がストリームの平均ビットレート (kilobits-per-second) を超えていないことを確認します。

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

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

エンコーダー設定

ストリームの取り込み: コーデック、RTMPS、および 443 番ポート

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

Amazon IVS は、ソフトウェアやハードウェアのストリーミングに使用される最も一般的かつ安全な取り込みプロトコルである RTMPS (TLS/SSL 接続を介した Real-Time Messaging Protocol) をサポートしています。Amazon IVS でのストリーミングと再生には、TLS バージョン 1.2 以降が必要です。

動画エンコーダーは、アウトバウンドポート 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>

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

ストリームの解像度は、ビットレートとフレームレート (frames-per-second、、または 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 です。

チャネルの種類によって、ビデオは次のようにトランスコードまたはトランスマックスされます。

  • STANDARD チャネルと ADVANCED チャネルでは、動画がトランスコードされます。元の入力から複数の品質が生成され、視聴者のデバイスとネットワーク状況に最適なエクスペリエンスが自動的に提供されます。トランスコーディングにより、さまざまなダウンロード速度でより高い再生品質が可能になります。

  • BASIC チャネルでは、動画がトランスマックスされます。Amazon IVS は元の入力を視聴者に配信します。

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

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

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

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

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

STANDARD チャネル

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

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

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

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

1080p60 (8.5 Mbps)

  1. 1080p60 (ソースビットレート)

  2. 720p60 (3.4 Mbps)

  3. 480p30 (1.4 Mbps)

  4. 360p30 (0.63 Mbps)

  5. 160p30 (0.23 Mbps)

1080p30 (8.5 Mbps)

  1. 1080p30 (ソースビットレート)

  2. 720p30 (2.4 Mbps)

  3. 480p30 (1.4 Mbps)

  4. 360p30 (0.63 Mbps)

  5. 160p30 (0.23 Mbps)

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

  1. ソースパススルー

  2. 720p60 (3.4 Mbps)

  3. 480p30 (1.4 Mbps)

  4. 360p30 (0.63 Mbps)

  5. 160p30 (0.23 Mbps)

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

  1. ソースパススルー

  2. 720p30 (2.4 Mbps)

  3. 480p30 (1.4 Mbps)

  4. 360p30 (0.63 Mbps)

  5. 160p30 (0.23 Mbps)

720p60 (8.5 Mbps)

  1. 720p60 (3.4 Mbps)

  2. 480p30 (1.4 Mbps)

  3. 360p30 (0.63 Mbps)

  4. 160p30 (0.23 Mbps)

720p30 (8.5 Mbps)

  1. 720p30 (2.4 Mbps)

  2. 480p30 (1.4 Mbps)

  3. 360p30 (0.63 Mbps)

  4. 160p30 (0.23 Mbps)

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

  1. 480p30 (1.4 Mbps)

  2. 360p30 (0.63 Mbps)

  3. 160p30 (0.23 Mbps)

ADVANCED-HD チャネル

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

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

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

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

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

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

  1. 720p60 (3 Mbps)

  2. 480p30 (1.3 Mbps)

  3. 360p30 (0.7 Mbps)

  4. 160p30 (0.27 Mbps)

  5. 音声のみ (0.08 Mbps)

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

  1. 720p60 (2.2 Mbps)

  2. 480p30 (0.8 Mbps)

  3. 360p30 (0.4 Mbps)

  4. 160p30 (0.22 Mbps)

  5. 音声のみ (0.08 Mbps)

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

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

  1. 720p30 (2.3 Mbps)

  2. 480p30 (1.3 Mbps)

  3. 360p30 (0.7 Mbps)

  4. 160p30 (0.27 Mbps)

  5. 音声のみ (0.08 Mbps)

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

  1. 720p30 (1.9 Mbps)

  2. 480p30 (0.8 Mbps)

  3. 360p30 (0.4 Mbps)

  4. 160p30 (0.22 Mbps)

  5. 音声のみ (0.08 Mbps)

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

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

  1. 2.3 Mbps でトランスコードされたソース

  2. 480p30 (1.3 Mbps)

  3. 360p30 (0.7 Mbps)

  4. 160p30 (0.27 Mbps)

  5. 音声のみ (0.08 Mbps)

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

  1. 1.9 Mbps でトランスコードされたソース

  2. 480p30 (0.8 Mbps)

  3. 360p30 (0.4 Mbps)

  4. 160p30 (0.22 Mbps)

  5. 音声のみ (0.08 Mbps)

480p30/60 (8.5 Mbps)

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

  1. 480p30 (1.3 Mbps)

  2. 360p30 (0.7 Mbps)

  3. 160p30 (0.27 Mbps)

  4. 音声のみ (0.08 Mbps)

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

  1. 480p30 (0.8 Mbps)

  2. 360p30 (0.4 Mbps)

  3. 160p30 (0.22 Mbps)

  4. 音声のみ (0.08 Mbps)

ADVANCED-SD チャネル

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

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

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

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

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

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

  1. 480p30 (1.3 Mbps)

  2. 360p30 (0.7 Mbps)

  3. 160p30 (0.27 Mbps)

  4. 音声のみ (0.08 Mbps)

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

  1. 480p30 (0.8 Mbps)

  2. 360p30 (0.4 Mbps)

  3. 160p30 (0.22 Mbps)

  4. 音声のみ (0.08 Mbps)

BASIC チャネル

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

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

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

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

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

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

480p30/60 (1.5 Mbps)

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

ビデオ設定

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

  • ビデオエンコーダーで、 IDR/Keyframeを 2 秒間隔 (レイテンシ end-to-end ーをさらに低くするには 1 秒) に設定します。

  • H.264 レベル:メイン

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

  • Chroma のサブサンプル: YUV420P

  • CABAC: 推奨

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

オーディオ設定

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

  • コーデック:AAC(LC)

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

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

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

VBR ではなく CBR を使用する

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

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

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

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

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

ネットワークの要件

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

有線接続を使用します。 WiFi および TAK 接続は、QoS /packet-queue の優先順位付けが不適切であるため、むらやレイテンシーが発生する可能性があります。可能な限り、ストリーム向けのハード接続を利用してください。

最低限必要な帯域幅よりも 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 スクリプト/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

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

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

ストリームのテスト

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

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