Brightcove Live: ベストプラクティス

Video Cloud Live を使用すると、ライブイベントを簡単に設定し、マルチビットレートのストリームを Web、iOS、Android デバイスに配信することができます。このトピックでは、高品質かつ安定したライブ配信を実現するためのベストプラクティスと推奨事項を紹介します。

概要

Brightcove Live は、ライブイベントや 24時間 365日のライブストリームを作成するための強力なサービスを提供します。このガイドでは、ライブ配信を最適化するためのベストプラクティスを紹介します。

コンテンツのコンテキスト

ストリーミングするコンテンツの種類は、入力品質を維持するための必要な設定に影響するため、考慮する必要があります。最高設定を使用するとフレームスキップなどの問題を引き起こす可能性があるため、トレードオフが存在します。

以下の情報に基づき、本番のライブイベント前に品質とパフォーマンスを両立させるため、様々な設定の組み合わせをテストすることを推奨します。

主な入力パラメーターは以下の表にまとめられています:

ライブ配信における主な入力パラメーター
パラメーター 備考
入力ビットレート エンコーダーが送信するビットレート。高いビットレートはネットワーク損失の影響を受けやすいため、実用的な範囲で低く抑えるべきです。
入力解像度 ソースコンテンツと一致させる必要があります。元のソース以上にしても意味はなく、高解像度ほど高いビットレートが必要となります。
入力ビットレートと最高プロファイルとの比率

ライブイベント中の最適なパフォーマンスを確保するには、入力ビットレートを最も高いビットレートのライブレンディションと一致させることを推奨します。ただし、最高ビットレートを大幅に超えるとバッファリングや入出力のドリフト、その他の問題が発生する可能性があります。そのため、以下の点に注意して入力ビットレートを設定してください:

  • 最高ビットレートのライブレンディションに一致させることで、品質を維持し問題を最小限に抑えます。
  • 場合によっては、最高レンディションよりやや高いビットレートでも許容されることがありますが、パフォーマンス低下を避けるため注意が必要です。
  • 品質、安定性、およびストリーミング環境やコンテンツとの互換性のバランスをとるために、十分なテストを行ってください。
プロファイル プロファイル(baseline、main、high)は、データを圧縮する度合いが順に高くなります(baseline:低、high:高)。圧縮率が高いほど伝送効率は向上しますが、デコードにより多くの CPU リソースが必要です。エンコーダーのリソースに制限がない限り、baseline プロファイルは避けるべきです。逆に、high プロファイルを高ビットレートで使用すると、デコードに必要な CPU 負荷が高くなり、フレームスキップが発生しやすくなります。

詳細は、以下のGOP 構造も参照してください。

フレームレート ソースと一致させる必要があります。

高いフレームレートでは、それに比例して入力ビットレートも高くなります。例えば、スポーツなどの動きが激しいコンテンツで 60fps を使用すると、30fps と比べてかなり多くのデータが必要になります。

60fps のような高フレームレートでは、複雑なコンテンツで高ビットレートを使用した場合にフレームスキップが発生しやすくなります。

キーフレームレート 最も効率的な設定はセグメント長 × フレームレートです。例えば、6秒のセグメントで 30fps の場合、キーフレームレートを 180(6×30)に設定すると、デコーダーへの負荷が最も低くなります。

ただし、変動を考慮して 2倍 のフレームレート、例えば 30fps では 60 に設定します。

GOP 構造 GOP 構造を参照してください。

入力制限

最高品質で一貫性のあるストリーミングを実現するために、Brightcove Live では以下の入力ストリーム設定制限を設けています:

  • プロトコル:rtmprtprtp-fec、または srtrtmp 以外はすべて MPEG2-TS 入力用)[1-1]
  • 解像度:最大 1920 x 1080
  • 最大 30fps が標準。最大 60fps までサポートされますが、その場合は Brightcoveサポートに連絡し、制限解除の申請が必要です。60fps を使用する際は、コンテンツの視覚品質と一定のフレームレートを保つために、ビットレートの増加を推奨します。
  • 最大入力ビットレートは 30Mbps、最大出力ビットレートは 20Mbps に設定されています。
  • CBR(固定ビットレート)の使用で問題発生の可能性を大幅に軽減できます。
  • ビデオ コーデックは H.264 である必要があります。
  • スライス:エンコーダーにこの設定がある場合は 1 に設定してください。
  • オーディオ コーデックは AAC である必要があります。
  • オーディオ サンプリング レート:44.1kHz および 48kHz が推奨されるサンプルレートです。
  • キーフレームレートまたは GOP(Group of Pictures)の整合性:
    1. キーフレーム は必ず 2秒 ごと( 25fps のビデオを含む)に、入力および出力の両方で発生する必要があります。つまり、エンコーダーから Brightcove へ2秒ごとにキーフレームを送信する必要があります。これを設定する方法はいくつかありますが、一般的なのは キーフレームレート です。
    2. エンコーダーごとに設定方法が異なります。例えば:
      • Wirecast はフレーム数で設定するため、30fps のビデオでは 60 を設定します。
      • Elemental エンコーダーは秒数で設定するため、'2'を設定します。
      • 60 fps ビデオでは、フレーム数で設定する場合、120 フレームごとにキーフレームが挿入されます。
  • Keyframe AlignedSync GOPAlign Keyframes などのオプションがある場合は、必ずキーフレームの整合性を確保してください。整合性が取れていないと、HLS セグメントとの同期に問題が発生します。
  • Brightcove Live は H.264 ヘッダー内に含まれる 608 キャプション(インバンド)をサポートします。詳しくは ライブストリームでのキャプション をご覧ください。[1-2]

補足

  • [1-1] TS入力に複数のビデオ/オーディオトラックがある場合は、最初のトラックが使用されます。インターネット経由の UDP でのプレーンな TS は非常に不安定なため、FECの使用を強く推奨します。FEC では、行数/列数の値が小さいほどエラー訂正の信頼性が高まります(その分帯域幅は増加します)。
  • [1-2] 608 キャプションを使用する場合は、608 データ内にキャプションの位置情報を設定する必要があります。

長時間稼働するジョブ

長時間稼働するジョブ(リニアチャンネルなど)がある場合は、バグ修正や新機能の恩恵を受けるために、毎月再アクティベートしてください。

ストリーミングにおける主な問題

エンコーダーから Brightcove へのストリーミング体験に関わる問題として、一般的に以下のような問題が発生します:

  1. 入力に影響するネットワークの不安定性:
    1. インターネットは通常かなり信頼性がありますが、完璧ではなく問題が発生することがあります。ビットレートが高いほど問題が目立ちやすくなります。
    2. 映像のアップロードがリアルタイムより遅れると、入力ドリフト(送信された時間に対して受信時間が大幅に遅れる)が発生する可能性があります。
  2. トランスコーダーの過負荷によるフレームスキップ:トランスコーダーに十分な余力を持たせるよう努めていますが、コンテンツの複雑さの急激な変化やネットワークの途切れ・復旧、その他の中断によりスキップフレームが発生することがあります。入力が複雑であるほど、フレームスキップの可能性が高くなります。また、5分以上の静止画から動きのあるコンテンツへの急な変化が、トランスコーダーの過負荷を引き起こす既知の問題もあります。
  3. エンコーダーが可変フレーム間隔で送信している:整数のフレームレート(例:30fps)を使用することで、キーフレームの分布やセグメントサイズの一貫性が保たれるため強く推奨されます。
  4. エンコーダーが一定間隔でキーフレームを送信していない:キーフレーム間隔はフレームレートの2倍(秒単位)が最小基準です。例えば、30fps の場合は 60 フレーム(2秒)ごとのキーフレームが必要です。1セグメントにつき 1回 のキーフレームが最大間隔の目安です。6秒 セグメントの場合は 30fps で 180 フレームが上限です。

コンテンツの種類

一般的に、コンテンツが複雑であるほど高い設定が必要になり、フレームスキップが発生しやすくなります。以下の表は、コンテンツの複雑さに応じた設定例を示したものです。これらはあくまで一例であり、各エンコーダーの構成は異なるため、テストと確認を行う必要があります。

コンテンツ タイプの例
コンテンツ タイプ 設定例
Webカメラ
  • 解像度:360p
  • ビットレート:1 Mbps
  • プロファイル:Baseline
Web会議
  • 解像度:480p
  • ビットレート:2.5 Mbps
  • プロファイル:Main
アニメーション
  • 解像度:720p
  • ビットレート:2.5 Mbps
  • プロファイル:Main
話者/ニュース
  • 解像度:720p
  • ビットレート:4 Mbps
  • プロファイル:Main
ライブコンサート
  • 解像度:1080p(またはソース)
  • ビットレート:5 Mbps
  • プロファイル:High
ライブスポーツ
  • 解像度:1080p(またはソース)
  • ビットレート:6 Mbps
  • プロファイル:High
ライブスポーツ 高FPS
  • 解像度:1080p(またはソース)
  • ビットレート:20 Mbps
  • プロファイル:High

Transmux ライブジョブ

キーフレームの挿入は、リクエストされたセグメント設定と一致するように設定してください。例えば、フレームレートが 1秒 あたり 25 フレームで 6秒セグメントを希望する場合は、少なくとも 300 フレームごとに 1回 キーフレームを挿入するように設定してください。

エンコーダーの設定と出力を、対象デバイスでテストしてください。特に、放送用エンコーダーを使用している場合、設定によっては一部の一般的な視聴デバイスに対応していない可能性があります。高度な設定の使用は避けるのが望ましく、以下のような一般的なトップレートプロファイルが推奨されます:

  • ピークビットレート:6Mbps
  • H264 High プロファイル
  • Bフレーム:2
  • 8ビット 4:2:0 カラー

検証とテスト

理想的には、最も複雑(変化の多い)なコンテンツに対して、可能な限り低い設定から始め、各種設定を徐々に上げながら、出力の品質が許容範囲に達するかテストしてください。一般に、設定値が高いほど、ネットワークやトランスコード処理において問題が発生する可能性が高くなります。

帯域幅のテスト

入力ストリームに適した設定を決定する最初のステップは、現地で利用可能な帯域幅を測定することです。以下のツールが役立ちます:

  • SpeedOf.Me (https://speedof.me) - HTTP 接続で利用可能な総帯域幅を把握するのに有効。ただし、入力フィードは HTTP ではなく RTMP 経由で Live モジュールにストリーミングされるため、実際に RTMP に利用できる帯域はこれよりも少なくなります。
  • Speedtest (https://www.speedtest.net) - 現在のアップロードおよびダウンロード速度を測定するオンラインツール。

入力帯域幅

高品質かつ安定した入力ストリームを提供することが、視聴者にとって最良のユーザー体験を実現する唯一の方法です。優れた入力ストリームは、そのロケーションで常時安定して利用可能な最大帯域幅で最高の画質を提供します。

  • 最小入力帯域幅:2.5 Mbps
  • 最大入力帯域幅:20 Mbps

入力の一時的なスパイク上限:

  • 最大入力ビットレート:30Mbps
  • 最大出力ビットレート:20Mbps

エンコーダーの性能確認

ライブストリームをエンコードし、Live モジュールへ送信するために使用するソフトウェアおよびハードウェアの性能を理解することも重要です。高品質な 1080p 入力ストリームを送信できるだけのビットレートがあっても、リアルタイム以上の速度でエンコード可能な性能が必要です。一部のエンコーディングツールでは、CPU 使用率や帯域使用量の情報が表示されます。例えば、Telestream Wirecast では、出力統計がウィンドウ下部に表示されます。

この情報は、特定のハードウェア上で実現可能な最も安定した高品質ストリームを判断する際に有用です。以下が、Wirecast で確認すべきポイントです:

  • CPU 使用率が 80% 未満であること。
  • データレートがターゲットビットレートに近いこと。
  • FPS が入力ストリーム設定の値と一致していること。

GOP 構造

映像の GOP(Group of Pictures)構造は、使用するプロファイルによって以下のように決まります:

  1. Baseline プロファイルは I フレームおよび P フレーム、CAVLC エントロピーエンコーディングのみをサポート
  2. Main および High は I、B、P フレームおよび CABAC エントロピーエンコーディングをサポート

Main および High プロファイルは、より高品質かつ高圧縮を実現できますが、その分エンコードおよびデコードに必要な処理能力が高くなり、フレームスキップのリスクが高まります。また、B(双方向)フレームを使用するため、エンコードに遅延が発生します。

Baseline プロファイルはエンコード・デコードに必要な CPU 負荷が低いですが、圧縮率が低いため品質を保つにはより高いビットレートが必要となり、ネットワーク問題に影響されやすくなります。

フレームタイプとパフォーマンスへの影響に関する補足:

  1. I フレーム:最も多くの帯域を消費。完全なシーン変更やセグメントの境界に挿入するのが理想。コンテンツの変化が激しい場合には多く必要(GOP 長は短くなる)。
  2. P フレーム:Iフレーム間の基本的な単位
  3. B フレーム:前後のフレームを使用し、追加することで圧縮効率が向上するが、CPU 負荷と遅延が増加

I フレームは、可能な限りセグメントの開始(パススルー使用時は特に重要)またはシーン変更時に限定して使用してください。すべてのフレームを I フレームにしたり、過剰に使用すると負荷が増し、フレームスキップの原因となります。

追加の注意事項:

  • キーフレームの密な挿入を防止する設定(例:min_keyin = 3 以上)を使用してください。
  • キーフレームを一定の間隔で挿入する設定を使用してください。例:GOP 長を秒単位ではなく、正確なフレーム数で指定する。
  • スポーツや動きの多いコンテンツの場合、「参照フレーム数」を 4 に設定することを検討してください。
  • 「B フレーム数」を 3 に設定することを検討してください。

ライブ配信の開始に関する推奨事項

エンコーダーの接続前にジョブを有効化する必要があります。また、エンコーダーからのストリーム開始後にジョブを有効化するのはサポートされておらず、予期しない動作を引き起こす可能性があります。

プレーヤー バージョンの更新

Brightcove Player の最新バージョンを使用することは、最適なパフォーマンス、セキュリティ、最新機能へのアクセスを維持するために非常に重要です。新しいリリースには、バグ修正、パフォーマンスの向上、ライブ配信体験を向上させる新機能が含まれていることがよくあります。

プレーヤー更新のベストプラクティス

  • Brightcove Player リリースノートを定期的に確認し、最新バージョンの情報を把握する。
  • 現在のプレーヤー設定および構成のバックアップを保持する。
  • 新しいプレーヤーバージョンをステージング環境に導入し、カスタマイズや統合を含むすべての機能をテストする。
  • 最初はリスクの少ないライブイベントで使用し、パフォーマンスを監視する。
  • 新しいプレーヤー バージョンに関するエンドユーザーおよび関係者からのフィードバックを収集する。

スレート ソースファイルの推奨事項

  • 解像度: (エンコーディング ラダー内で最良)
  • FPS: (ソースと同じ)
  • ビットレート: (エンコーディング ラダー内で最良、またはそれ以上)
  • オーディオ: (最良のレンディション、または入力と同じビットレート、チャンネル数、サンプリング周波数、ビット数)

出力の推奨設定

以下は出力設定の推奨値ですが、多くのエンコーダーでは RTMP 入力が 20 Mbps(ビデオ+オーディオ)および 30fps に制限されている点に注意してください。

出力の推奨設定
項目 推奨値
ビデオコーデック h264 が現在の唯一のオプション
オーディオコーデック aac が現在の唯一のオプション
width または height が指定されていない場合は、ソースのサイズが使用されます。どちらか一方が指定された場合は、ソースのアスペクト比を維持するようにもう一方が計算されます。
高さ width または height が指定されていない場合は、ソースのサイズが使用されます。どちらか一方が指定された場合は、ソースのアスペクト比を維持するようにもう一方が計算されます。
ビットレート 現在サポートされている最大出力ビットレートは 20Mbps
キーフレームレート 2秒

よくある質問(FAQ)

ライブジョブを作成してからどれくらいの時間でストリーミングを開始する必要がありますか? Brightcove Live では、waiting から finishing 状態へ遷移する2つの条件があります:
  1. ジョブが waiting 状態(まだ開始されていない)で、max_waiting_time_ms を超えると、ジョブは終了/無効化されます。
  2. ジョブが disconnected 状態(開始されたが切断された)で、reconnect_time を超えると、ジョブは終了/無効化されます。

event_length が 30分 を超える場合、ジョブは 30分後 に終了します。event_length が 30分 未満の場合は、その長さに応じて終了します。

例えば、event_length が 60分 であれば、ライブジョブは 30分 で終了します。event_length が 15分 であれば、15分 で終了します。

reconnect_time は waiting 状態には影響しません。

同時に実行できるライブジョブ設定の制限はありますか?

最大 5件の waiting、未開始 ジョブが同時に許可されます。

同時実行ジョブの追加制限:

  • channel(24x7)ジョブ数は、地域ごとに 0 または少数に制限されます(アカウントタイプによる)。
  • 実行中event ジョブ数は地域ごとに一般的に 100件 に制限されます。
  • 接続待機中event ジョブ数は 5件 に制限されます。
  • 地域ごとの SEP ジョブ数は 3件 または 10件 に制限されます(対応 AWSリージョンを参照)。

これらの制限は、サポートによりアカウント単位で調整可能です。追加のキャパシティが必要な場合は、弊社営業までご連絡ください。

入力帯域幅が十分であれば Brightcove Live で 1080p 品質を配信できますか? はい、すべてのアカウントで 1080p 入力が有効になっています。
DRM は利用できますか? はい! ライブアカウントに DRM サポートを追加したい場合は、弊社営業までご連絡ください。

さらなるサポート

ライブイベントの設定でさらにサポートが必要な場合は、こちらからご連絡ください。迅速な対応のために、以下の情報をご提供ください。

  • ストリームに発生している具体的な症状(例:まったく再生されない、カクつく、停止するなど)
  • このストリームが過去に正常に動作していたかどうか
  • エンコーダーで使用しているエントリーポイントURL
  • 使用しているエンコード ソフトウェアおよびハードウェア
  • ライブイベントを公開しているプレーヤーのURL
  • ライブアセットのビデオID
  • エンコーダーから配信ポイントホストまでのトレースルートの結果