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

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

Brightcove Live は、ライブ ストリーミング チャンネルや 24時間 365日のライブリニア配信を作成するための堅牢なサービスを提供します。本ガイドでは、ライブストリームを最適化するためのベストプラクティスを説明します。

コンテンツの種類と特性

配信するコンテンツの種類は、入力品質を維持するために必要な設定に影響を与えるため、考慮する必要があります。なお、設定値を最大にすれば必ずしも最適とは限らず、フレームスキップなどの問題を引き起こす可能性があることに注意してください。

以下の情報に基づき、ライブチャンネルを開始する前に品質とパフォーマンスのバランスを確認し、異なる設定の組み合わせをテストすることを推奨します。

主要な入力パラメータは次の表に示されています:

ライブストリーミングの主要入力パラメータ
パラメータ 説明
入力ビットレート エンコーダーから送信されるビデオ ソースフィードのビットレートです。一般的な目安として、ソース入力ビットレートはチャンネル設定内の最高レンディションのビットレートの約 2倍(2x)であることが推奨されます。
注:高いビットレートのソースフィードはネットワーク損失の影響を受けやすくなります。
入力解像度 ソースコンテンツと一致させる必要があります。元のソースより高く設定しても利点はなく、値を上げるほどそれをサポートするためのビットレートが高くなります。
プロファイル 異なるプロファイル(baseline、main、high)は、それぞれ異なる圧縮率を持ちます(baseline:最小、high:最大)。圧縮率を上げることで伝送効率は向上しますが、デコード時により多くの CPU リソースが必要となります。エンコーダーのリソースに制約がない場合は、baseline プロファイルの使用は避けるべきです。一方で、高ビットレートで high プロファイルを使用すると、デコード負荷の増大によりフレームスキップが発生する可能性があります。

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

フレームレート ソース(エンコーダーへの入力信号)と一致させる必要があります。

フレームレートが高いほど、入力ビットレートも比例して増加します。例えば、アクション スポーツなどのコンテンツでは、60fpsの入力ストリームは 30fpsストリームよりもはるかに多くのデータを含みます。

また、60fpsなどの高フレームレートでは、高ビットレートの複雑なコンテンツでフレームスキップが発生しやすくなります。

キーフレームレート 1秒あたりのキーフレーム数を示します。たとえば、値が 0.5 の場合は 2秒ごとに 1つのキーフレーム、値が 3の場合は 1秒あたり 3つのキーフレームが生成されます。
トランスコードプロファイルでは、キーフレームレートが分数値で定義されます。たとえば、値が 0.5 の場合、1/0.5 = 2 となり、2秒ごとにキーフレームが挿入されることを意味します。
GOP 構造 GOP 構造を参照してください。

入力制限

最高品質で一貫したストリーミング体験を確保するために、Brightcove Live では入力ストリームの設定に次の制限を設けています。

  • プロトコル:rtmprtp、または srtrtmp 以外はすべて MPEG2-TS 入力用)[1-1]
  • 解像度:最大 1920x1080
  • 推奨:30fps、最大:60fps
    注:高いフレームレートを使用する場合、ソースフィードの品質を維持するためにはより高い入力ビットレートが必要です。
  • 最大入力ビットレート:50Mbps、最大出力ビットレート:25Mbps。
  • エンコーダーは固定ビットレート(CBR)に設定してください。可変ビットレート(VBR)フィードはライブストリーミング処理に問題を引き起こす可能性があります。
  • ビデオコーデック:h.264、HEVC
  • スライス:エンコーダーにこのオプションがある場合は、1 に設定してください。
  • オーディオコーデック:AAC である必要があります。
  • オーディオ サンプリングレート:44.1kHzまたは 48kHzを推奨します。
  • キーフレームレートまたは GOP(Group of Pictures)の整合性:
    1. キーフレームは常に 2秒ごとに発生する必要があります(入力および出力の両方、25fpsのビデオを含む)。つまり、エンコーダーはストリームの実時間で 2秒ごとに Brightcove へキーフレームを送信する必要があります。このプロセスはさまざまな方法で定義できますが、最も一般的なのはキーフレームレートです。
    2. エンコーダーによって計算方法は異なります。例:
      • Wirecast では、経過したフレーム数で計算するため、30fpsのビデオの場合は設定値を 60にします。
      • Elemental エンコーダーでは秒数で設定するため、正しい値は「2」になります。
      • 60fpsのビデオでは、フレーム単位で計算する場合、120フレームごと(2秒ごと)にキーフレームが挿入されます。
  • Keyframe Aligned (キーフレームを揃える)、Sync GOP (GOP同期)、Align Keyframes (キーフレームを揃える)などのオプションがある場合は、必ずキーフレームを整合させてください。キーフレームが整合していないと、HLS セグメントの同期に問題が発生します。
  • Brightcove Live は、h.264 ヘッダー内の帯域内(in-band)608キャプションをサポートしています。詳細については、ライブストリームでのキャプションを参照してください。[1-2]

注意

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

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

エンコーダーから Brightcove へのストリーミング体験に関連して、一般的に発生するいくつかの問題があります:

  1. 入力に影響を与えるネットワークの不安定性:
    1. インターネットは一般的に信頼性が高いものの、完璧ではなく、問題が発生することがあります。特に高ビットレートの場合、影響を受けやすくなります。
    2. ビデオのアップロードにリアルタイム以上の時間がかかると、入力ドリフト(送信と受信の間に大きな遅延が発生する現象)が発生することがあります。
  2. トランスコーダーの過負荷によるフレームスキップ:Brightcove では十分な余裕を持たせていますが、コンテンツの急激な複雑化やネットワークの乱れ、あるいはその他の中断が発生すると、フレームスキップが発生する可能性があります。入力が複雑になるほど、フレームスキップが発生する可能性は高まります。また、5分以上静止画像が続いた後に急に動きのある映像へ切り替わる場合にも、過負荷が発生することがあります。
  3. エンコーダーが可変フレーム間隔を送信している場合:整数フレームレート(例:30fps)を使用することを推奨します。これにより、一貫したキーフレーム配置とセグメント サイズが確保されます。
  4. キーフレーム間隔が一定でない場合:キーフレームレートは、秒単位でフレームレートの少なくとも 2倍である必要があります。例えば、30fpsの場合、キーフレーム間隔は 60フレーム(2秒)で、1セグメントあたりの最大間隔は 1回が理想です。つまり、6秒のセグメントでは、30fpsで 180フレームが上限となります。

コンテンツタイプ

一般的に、コンテンツが複雑になるほど高い設定値を使用する必要があり、その分フレームスキップが発生しやすくなります。以下の表は、コンテンツの複雑さの順にいくつかの例を示しています。これらはあくまで例であり、エンコーダーの設定は環境によって異なります。必ずテストと検証を行ってください。

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

Transmux Live ジョブ

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

エンコーダーの設定および出力を、対象となるデバイスでテストしてください。特に放送向けのエンコーダーを使用している場合、高度な設定によって一部のデバイスで互換性のないストリームが生成される可能性があるため注意が必要です。また、過度に高度な設定は避けることをお勧めします。どの設定が該当するかはエンコーダーやオプションの種類によって異なりますが、一般的に推奨される上位プロファイルの設定例は次のとおりです:

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

検証とテスト

理想的には、最も複雑(動きが多い)なコンテンツで、可能な限り低い設定から始め、品質が許容できるレベルに達するまで徐々に設定を上げてテストすることを推奨します。これは、設定を高くするほどネットワークやトランスコード処理で問題が発生しやすくなるためです。

帯域幅のテスト

入力ストリームに適した設定を決定する最初のステップは、配信場所で利用可能な帯域幅を確認することです。以下のツールを使用すると便利です:

  • SpeedOf.Me (https://speedof.me) - HTTP接続で利用可能な総帯域幅を測定するための良い出発点です。ただし、入力フィードは HTTP ではなく RTMP を介して Live モジュールに送信されるため、実際に利用可能な RTMP 帯域幅はこれよりも大幅に少なくなります。
  • Speedtest (https://speed.cloudflare.com/) - 現在のアップロードおよびダウンロード速度を測定できるオンラインツールです。

入力帯域幅

高品質で安定した入力ストリームを提供することが、視聴者に最適なユーザー体験を保証する唯一の方法です。良好な入力ストリームは、配信拠点から一貫して利用可能な最大帯域幅で最高のビデオ品質を提供します。

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

入力スパイク制限:

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

エンコーダーの性能確認

ライブストリームをエンコードして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 フレーム:最も多くの帯域幅を使用します。完全なシーンの切り替えやセグメント境界に追加するのが最適です。つまり、コンテンツの変化が多いほど、より多くの I フレーム(短い GOP長)が必要となります。
  2. P フレーム:I フレーム間の基本単位です。
  3. B フレーム:前後のフレームを参照します。多く追加するほど圧縮効率は向上しますが、CPU負荷と遅延も増加します。

I フレームの使用は、セグメントの開始時(パススルー使用時は特に重要)またはシーン切り替え時に限定するのが理想です。I フレームの過剰な挿入は処理負荷を増やし、フレームスキップを引き起こす可能性があります。

追加のメモ:

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

ビットレート

  • 最小入力帯域幅:2.5 Mbps
  • 最大入力帯域幅:20 Mbps
  • ストリームを「ほぼCBR」に設定します。max_bitrate = 1.1 × target_bitrate。
  • 利用可能であれば、厳密な HRD 準拠のレート制御モードを使用してください。

プロトコル

インターネットは保証された配信ネットワークではなく、「良好」とされる接続でも、高品質で信頼性のあるライブ ビデオ ストリーミングには不十分な場合があることに注意が必要です。顧客のエンコーダーと Brightcove のトランスコーディング プラットフォーム間で、ISP での軽微な混雑、ルーター間の予期しないフェイルオーバー、または類似の問題が発生すると、ビデオ出力に中断が生じることがあります。重要なライブ放送では、専用光ファイバー、予約済みの衛星帯域幅、または管理ネットワーク上の確保帯域など、複数の専用ネットワークを使用するのが一般的です。これには相応のコストがかかりますが、多くの場合、インターネット経由でも十分に良好な結果を得ることができます。ただし、障害のない伝送を厳密に維持する必要がある場合は、AWS Direct Connect または専用帯域を提供できる ISP の利用を検討してください。

一般的には、エンコーダーの想定ストリームサイズの 2倍の帯域幅を確保することを推奨します。これにより、帯域幅関連のネットワーク問題を完全に回避できます。

推奨される接続オプション(優先順)は次のとおりです:

  1. SRT - 高速な UDP 伝送に加え、制御性とエラー耐性を兼ね備えています。すべてのエンコーダーで使用できるわけではありませんが、srt-transmit のようにローカル RTP から変換できるツールもあります。
  2. RTMP - TCP ベースで動作するため、エラー耐性に優れていますが、その分オーバーヘッドが大きくなります。RTMP では複数オーディオトラックなど、一部の機能が利用できない点に注意してください。
  3. RTP-FEC - 高速な UDP ベースの伝送に、一定のエラー訂正機能を加えた方式です。
  4. RTP - 高速な伝送と高度な機能を提供しますが、エラー耐性はありません。

RTMP 出力

Live 2.0 で RTMP 出力 URL を使用する方法を説明します。

新しいチャンネルに RTMP 出力を追加する

新しいチャンネルを作成する際に、RTMP 出力セクションまでスクロールします。

出力 URL を追加し、レンディションを選択します。

「Add RTMP Output」(RTMP 出力を追加)をクリックします。

既存のチャンネルに RTMP 出力を追加する

Live 2.0 では、すでに作成済みのチャンネルにも RTMP 出力を追加することができます。 この操作を行うには、チャンネルを選択し、RTMP 出力セクションまでスクロールします。

対応エンコーダー

ライブチャンネル対応エンコーダー一覧を参照してください。これらは Live で動作確認済みのエンコーダーです。他のエンコーダーでも動作する可能性はありますが、テストは行われていません。

再試行(Retries)

エンコーダーからの RTMP 接続には再試行機能を有効にすることを推奨します。5秒間隔で複数回の再試行を設定することで、エンコーダーとエントリーポイント間の一時的な接続不良を軽減できます。

ジョブ設定(Live API専用)

推奨ジョブ設定

ジョブ設定
フィールド 推奨値
ad_audio_loudness_level -23(EBU R.128 標準)

ライブストリーム開始時の推奨手順

エンコーダーと NextGen Live エンドポイント間の適切な接続タイミングは、成功する配信において非常に重要です。正しい手順を守ることで接続問題を防ぎ、安定したストリーミングを実現できます。

必要な接続手順

  1. まずライブチャンネルをアクティブ化する: Live モジュールまたは API から NextGen Live チャンネルを起動します。
  2. 「waiting」状態になるまで待機: ストリーミング エンドポイントが完全にアクティブ化され、「waiting」ステータスを表示するのを確認します。
  3. エンコーダーを接続: エンドポイントが「waiting」状態になってから、ストリーミング URL に接続します。

一般的な接続問題

エンコーダー接続の問題の多くは次の原因によるものです:

  • 早期接続: エンドポイントが「waiting」状態になる前に接続を試みた場合
  • 誤った手順: ライブイベント/チャンネルをアクティブ化する前にエンコーダーを起動した場合

接続問題のトラブルシューティング

エンコーダーが接続できない、またはエラーが表示される場合:

  1. エンコーダーを完全に停止します。
  2. 可能であれば、エンコーダーの DN Sキャッシュをクリアするか、15〜30分 待ってキャッシュが自動的にクリアされるのを待ちます。
  3. Live モジュールで、ライブイベント/チャンネルが「waiting」状態でアクティブになっていることを確認します。
  4. 正しい手順に従って再度接続を試みます。

自動停止の動作

NextGen Live のチャンネルは、デフォルトで 30分間アクティビティがない場合、自動的に非アクティブ化されます。これにより、アクティブな配信がないままチャンネルが無期限に稼働し続けることを防ぎます。

デフォルトの動作

  • タイムアウト: 非アクティビティ(エンコーダー入力なし)30分
  • 適用対象: 初回接続時およびエンコーダー切断時のいずれの場合も適用
  • 目的: アクティブな入力がないままチャンネルが無期限に稼働するのを防止

設定オプション

このデフォルト動作は次の 2通りで上書きすることが出来ます:

  • ジョブ レベル: Live API の reconnect_time パラメータを使用して、個別ジョブのカスタムタイムアウトを設定
  • アカウント レベル: アカウントのデフォルト タイムアウト変更については、弊社サポート までお問い合わせください

API設定例

ライブジョブ作成時にカスタム タイムアウトを設定するには:

"input": {
            "protocol": "rtmp",
            "reconnect_time": 1800
          }

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

Brightcove プレーヤーを最新バージョンで利用することは、最適なパフォーマンスとセキュリティ、最新機能へのアクセスを維持するうえで重要です。新リリースには、バグ修正、パフォーマンス改善、ライブ配信体験を向上させる新機能が含まれることがあります。

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

  • Brightcove Player リリースノート を定期的に確認し、最新バージョンの情報を把握する。
  • 現在のプレーヤー設定および構成のバックアップを確保する。
  • ステージング環境で新バージョンを適用し、カスタマイズや連携機能を含めすべて動作確認する。
  • まずはリスクの低い一部のライブチャンネルから導入し、全体展開前にパフォーマンスを監視する。
  • 新バージョンに関するエンドユーザーおよび関係者からのフィードバックを収集する。

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

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

ソース フェイルオーバーとブラックスレート

NextGen Live では、入力が失われる/中断されると、ストリームの継続性を維持するため自動的にブラックスレート(黒画面/フィルフレーム)を表示します。このフェイルオーバー機構により、一時的な入力問題の間も視聴者が完全な配信停止を体験しないようにします。

ソース フェイルオーバーに関する要点:

  • 自動起動:入力が失われると自動的にブラックスレートが表示されます。
  • カスタム不可(自動フェイルオーバー):自動フェイルオーバー スレートは黒のみで、設定変更はできません。
  • シームレス復帰:入力が復旧すると、ストリームは自動的にライブフィードへ戻ります。

CMAF パッケージング

NextGen Live は、すべてのトランスコードプロファイルにおいてデフォルトのパッケージング方式として Common Media Application Format(CMAF)を使用します。CMAF には次の利点があります:

  • キャッシュヒット率の向上: 単一のメディアファイルを複数のストリーミング プロトコルで共用可能
  • 効率的な配信: HLS や DASH などの異なるストリーミング形式ごとの個別パッケージングが不要
  • スケーラビリティの向上: さまざまなデバイスやプラットフォームに最適化されたコンテンツ配信

出力の推奨設定

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

出力設定の推奨値
項目 推奨値
ビデオコーデック 現在利用可能なのは h264 のみです。
オーディオコーデック 現在利用可能なのは aac のみです。
幅(Width) width または height の指定がない場合は、ソースの解像度が使用されます。いずれか一方が指定されている場合、もう一方はソースのアスペクト比を維持するように自動計算されます。
高さ(Height) width または height の指定がない場合は、ソースの解像度が使用されます。いずれか一方が指定されている場合、もう一方はソースのアスペクト比を維持するように自動計算されます。
ビットレート 現在サポートされている最大出力ビットレートは 20 Mbps です。
キーフレーム間隔 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 または少数(契約内容による)に制限されています。
  • 同時に実行中のジョブ数は、地域ごとに制限されており、一般的には最大 10件です。
  • 同時に接続待ちevent ジョブ数は最大 5件です。
  • 地域ごとの event ジョブの総数は最大 50件です。

これらの制限はサポートチームに依頼することでアカウント単位で調整可能です。追加のキャパシティが必要な場合は、弊社営業までお問い合わせください。

入力帯域幅が十分であれば、Brightcove Live で 1080p 品質を配信できますか? はい、1080p入力はすべてのアカウントで有効化されています。
DRM は利用できますか? はい。ライブアカウントに DRM 対応を追加したい場合は、弊社営業までお問い合わせください。

追加サポート

ライブチャンネルの稼働に関してさらにサポートが必要な場合は、こちらからお問い合わせください。迅速な対応を行うため、以下の情報をお知らせください。

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