概要
Brightcove Liveは、ライブストリーミングイベントや 24 時間 365 日のライブストリームを作成するための堅牢なサービスを提供します。このガイドでは、ライブ配信を最適化するためのベストプラクティスを概説します
コンテンツコンテキスト
ストリーミングされるコンテンツのタイプは、入力の品質を維持するために必要な設定に影響を与えるため、考慮する必要があります。トレードオフがあり、可能な限り高い設定を使用すると、フレームがスキップされるなどの問題が発生する可能性があることに注意してください。
以下の情報に基づいて、ライブイベントの前に、品質とパフォーマンスについてさまざまな設定の組み合わせをテストすることをお勧めします。
次の表に、主要な入力パラメーターの概要を示します。
パラメーター | 備考 |
---|---|
入力ビットレート | エンコーダが送信するビットレート。レートが高いほどネットワーク損失の影響を受けやすいため、できるだけ低く抑える必要があります。 |
入力解像度 | これはソースコンテンツと一致する必要があります。これを元のソースより大きくすることに利点はなく、この値が高いほど、それをサポートするために必要なビットレートが高くなります。 |
入力ビットレートとトッププロファイルの比率 |
入力ビットレートはトッププロファイルのレートよりも高くする必要がありますが、高すぎるとフレームのドロップやその他の問題が発生する可能性があります。たとえば、トップレートが1080p 30fpsの場合、入力は理想的には約4MBPSである必要があります。これはプロファイルの影響を受けることに注意してください。一般的に、入力ビットレートは、ライブレンディションの最高ビットレートの 2 倍(2 倍)にすることをお勧めします。
高いビットレートのトップ出力が必要な場合は、 |
プロファイル |
異なるプロファイル(baseline、main、high)は、データを昇順に圧縮します(baseline:低、high:高)。圧縮率を上げると、転送速度が向上しますが、データをデコードするために必要なCPUリソースも多くなります。エンコーダーが利用可能なリソースに大きな制約がない限り、baselineプロファイルは避ける必要があります。一方、高ビットレートでhighプロファイルを使用すると、必要なデコードCPUリソースが増えるため、フレームがスキップされる可能性が高くなります。
こちらのGOP構造も参照して下さい。 |
フレームレート |
これはソースと一致する必要があります。
レートが高くなると、それに比例して高い入力ビットレートが必要になります。たとえば、アクションスポーツコンテンツの場合、60fpsの入力ストリームは30fpsのストリームよりも大幅に多くのデータを伝送します。 60 fpsなどの高レートでは、高ビットレートの複雑なコンテンツでフレームスキップの問題が発生する可能性が高くなります。 |
キーフレームレート |
最も効率的な設定は、セグメントの長さxフレームレートです。たとえば、6秒のセグメントと30 fpsがある場合、キーフレームレートを180(6x30)にすると、デコーダーの負荷が最小になります。
ただし、変動を考慮して、フレームレートの2倍に設定されます。たとえば、30fpsのフレームレートの場合は60に設定されます。 |
GOP構造 | こちらのGOP構造を参照してください。 |
入力制限
最高品質で一貫したストリーミング体験を実現するために、Brightcoveライブでは入力ストリーム設定を以下の項目に制限しています。
- プロトコル:
rtmp
、rtp
、rtp-fec
、またはsrt
(ただしrtmp
、すべてMPEG2-TS入力用です)[1-1] - 解像度:最大1920x1080
- 最大30fps、これは一般的です。ブライトコーブは最大 60 fps をサポートしていますが、上限を引き上げるにはブライトコーブ サポートに連絡する必要があります。60fps を使用する場合、ブライトコーブでは、コンテンツに望ましい視覚的品質と一定のフレームレートを実現するために、ビットレートを上げることをお勧めします。
- 10Mbps未満
- コンスタントビットレート(CBR)は、問題の発生可能性を大幅に低減
- ビデオコーデックはH.264である必要があります
- スライス:エンコーダにこのオプションがある場合は、
1 に設定します。
- オーディオコーデックは
AAC
- オーディオサンプリングレート:44.1khz と 48khz が、推奨されるサンプルオーディオレートです。
- キーフレームレートまたは GOP (Group of Picture) を揃える:
- キーフレームは、入力と出力(25fps ビデオを含む)の両方で常に 2 秒ごとに発生する必要があります。つまり、ストリーム自体の 2 秒ごとにキーフレームがエンコーダから Brightcove に送信されます。このプロセスはさまざまな方法で定義できますが、最も一般的なのはキーフレームレート。
- これは、異なるエンコーダによって異なる方法で計算することができます。例:
- Wirecast は通過するフレームの量を使用するため、30 fps のビデオの場合、設定は 60 になります。
- Elementalエンコーダは、正しい設定が '2' になるように、秒を使用します。
- 60 FPS ビデオは、この設定がフレームでカウントされる場合にのみ変更されます。この場合、120 フレームごとに 2 秒になります。
- Keyframe Aligned、Sync GOP、Align Keyframesなどのオプションがある場合、キーフレームが揃っていないと、HLS セグメンテーションで同期の問題が発生します。
注
- [1-1] TS入力に複数のビデオ/オーディオトラックがある場合、それぞれについて最初のトラックを選択します。また、インターネット経由の UDP 上のプレーンなTSは非常に信頼性が低いため、FEC を使用することを強くお勧めします。FECの場合、行/列に使用する値が 小さい ほど、エラー訂正の信頼性が高くなります(その代償として、帯域幅が増加します)。
ストリーミングに関する重要な問題
エンコーダーからBrightcoveへのストリーミングエクスペリエンスの問題に関連して、一般的に発生するいくつかの問題があります。
-
入力に影響を与えるネットワークの不安定性:
- インターネットは一般的に非常に信頼性が高いものですが、絶対的なものではなく、問題が発生することがあります。ビットレートが高いほど、問題が発生する可能性が高くなります。
- ビデオのアップロードにリアルタイムよりも時間がかかると、入力ドリフト(ビデオを受信した時刻が、送信した時刻より大幅に遅くなること)が発生する可能性があります。
- トランスコーダーの過負荷によりフレームがスキップされる:トランスコーダーに十分なオーバーヘッドがあることを確認するためにあらゆることを行っていますが、コンテンツの複雑さが突然急上昇したり、ネットワークの一時的な中断やトランスコーダーへのその他の中断によってフレームがスキップされたりすることがあります。入力が複雑になるほど、スキップされたフレームが発生する可能性が高くなります。また、静止画像から5分以上の長時間の変更や、アクションコンテンツの突然の変更により、過負荷が発生する可能性があるという既知の問題もあります。
- 可変フレーム期間を送信するエンコーダー:フレームレートは一定である必要があり、一定のキーフレーム間隔を許容するようなものである必要があります。たとえば、29.97別名30000/1001または23.976別名24000/1001などのフレームレートの場合、一定の間隔でキーフレームを設定することはできないため、避ける必要があります。
- エンコーダーが送信するキーフレームの間隔が一定でない場合、キーフレームのレートは最低でも、フレームレートの2倍(秒)以上である必要があります。例えば、30fps のフレームレートの場合、キーフレームの間隔は 60 フレーム(つまり2 秒)で、セグメントごとに最大 1 回の間隔にする必要があります。例えば、6 秒のセグメントがある場合、最大間隔は 30 fps で 180 フレームになります。
コンテンツタイプ
一般的に、より複雑なコンテンツでは、これらの設定のうち高い方を使用する必要があるため、フレームがスキップされる可能性が高くなります。以下の表は、複雑な順にいくつかの例を示しています。これらは単なる例であり、ほぼすべてのエンコーダ設定が異なることに注意してください。テストと検証を実行する必要があります。
コンテンツタイプ | 設定例 |
---|---|
ウェブカメラ |
|
Web会議 |
|
アニメーション |
|
トーキングヘッド/ニュース |
|
ライブコンサート |
|
ライブスポーツ |
|
ライブスポーツ高FPS |
|
検証とテスト
理想的には、最も複雑な(最も変化するコンテンツ)で可能な限り低い設定から始め、そのコンテンツについて、出力が許容できるまで様々な設定を増やしてテストする必要があります。これは、一般的に設定が高いほど、ネットワークまたはトランスコーディングのいずれかで問題が発生する可能性が高くなるためです。
帯域幅のテスト
入力ストリームの適切な設定に到達するための最初のステップは、サイト上で利用可能な帯域幅を決定することです。役立つツールはいくつかあります。
- Speedof.me ( http://speedof.me )-HTTP 接続で使用可能な総帯域幅の決定は、最初のステップとして適しています。ただし、入力フィードは HTTP ではなく RTMP 経由で Live モジュールにストリーミングされるため、RTMP 接続で使用できる実際の帯域幅は大幅に小さくなります。
- Speedtest ( http://www.speedtest.net )-現在のアップロードおよびダウンロード速度を決定するためのオンラインツール。
入力帯域幅
高品質で安定した入力ストリームを提供することは、視聴者に最高のユーザーエクスペリエンスを提供するための唯一の方法です。良好な入力ストリームは、ある場所から一貫して利用可能な帯域幅で最高のビデオ品質を提供します。
- 最小入力帯域幅:2.5 mbps
- 最大入力帯域幅:10 mbps
エンコーダー機能の決定
ライブストリームをエンコードしてライブモジュールに送信するために使用されるソフトウェアとハードウェアの機能を理解することも重要です。高品質の1080pの入力ストリームを送信するには多くのビットレートがありますが、ハードウェアはリアルタイムよりも速い速度でエンコードできる必要があります。エンコードツールの中には、使用中の CPU 使用率と帯域幅の合計に関する情報を表示するものがあります。たとえば、Telestream Wirecast では、出力統計がページの上部に表示されます。この情報は、特定のハードウェア上で可能な最も安定した、最高品質のストリームを判断するときに役立ちます。
Wirecastで確認する項目は次のとおりです。
- CPUは80%未満でなければなりません
- データレートはターゲットビットレートの近くになければなりません
- FPSが入力ストリーム設定のレートであること
GOP構造
ビデオのGroup of Pictures(GOP)構造は、最初に次のように使用されるプロファイルに依存します。
- Baselineプロファイルは、I フレームと P フレームと CAVLC エントロピーエンコーディングのみをサポートします。
- MainおよびHighプロファイルは、 I、B、P フレームおよび CABAC エントロピーエンコードをサポートします。
MainプロファイルとHighプロファイルは、一般的に、より良い品質でより良い圧縮をもたらしますが、スキップ フレームの影響を受けやすくなるため、エンコードとデコードに追加の計算も必要になります。さらに、これらのプロファイルはB(双方向)フレームを使用するため、エンコードプロセスにいくらかの遅延が発生します。
Baselineプロファイルは、エンコードとデコードに必要なCPUが少なくて済みますが、圧縮が少ないため、品質を維持するために必要なビットレートが高くなり、ネットワークの問題の影響を受けやすくなります。
フレームタイプとパフォーマンスへの影響の可能性に関する注意:
- Iフレーム:最も多くの帯域幅を使用します。完全なシーンの変更またはセグメントの境界で追加するのが最適です。つまり、コンテンツが変更されるほど、必要なものが多くなります(GOPの長さが短くなります)。
- Pフレーム:Iフレーム間の基本単位です
- Bフレーム:前のフレームと将来のフレームの両方を使用し、追加するほど圧縮率は高くなりますが、CPUとレイテンシーは高くなります
Iフレームの使用は、セグメントの開始点 (パススルーを使用する場合は重要) またはシーンの変更に限定することが理想的です。すべてまたは多数のIフレームは、フレームのスキップにつながる過剰な負荷を引き起こす可能性があるため、避ける必要があります。
その他の注意事項:
- キーフレームの密な配置を防ぐためのオプションを使用します (例:
min_keyin
= 3+)。 - キーフレームを規則正しく挿入するためのオプションを使用します。例えば、GOPの長さを秒単位で指定する代わりに、正確な端数やフレーム数で指定します。
ビットレート
- 最小入力帯域幅:2.5 mbps
- 最大入力帯域幅:10 mbps
max_bitrate
= 1.1 * ターゲットビットレートで、ストリームを「ほぼ CBR」にします。- 可能な場合は、厳密なHRD準拠のレート制御モードを使用します。
プロトコル
インターネットは保証された配信ネットワークではないことに注意することが重要です。インターネット接続は「良好」と見なされる場合もありますが、高品質で信頼性の高いライブビデオストリーミングには不十分な場合があります。ISPでのわずかな輻輳、ルーター間の予定外のフェイルオーバー、または同様の問題など、お客様のエンコーダーとBrightcoveトランスコーディングプラットフォーム間の経路の小さな中断は、ビデオ出力の中断を引き起こす可能性があります。高度なライブ放送では、専用ファイバー、予約済み衛星帯域幅、または管理ネットワーク上のコミット済み帯域幅からなる複数の専用ネットワークを使用するのが一般的です。これにはかなりのコストがかかりますが、ほとんどの場合、インターネット上で十分な成果を上げることが可能です。しかし、障害のない伝送を維持することが重要な場合は、AWS DirectConnectまたはある程度の専用帯域幅を提供できるISPを検討してください。
推奨されるオプション(順に):
- SRT -トランスポート速度(UDP)と、ある程度の制御およびエラー回復力の適切な組み合わせを提供します。すべてのエンコーダで使用できるわけではありません。ただし、srt-transmit などのローカル RTP から変換できるツールもあります。
- RTMP --TCPベースであるため、優れたレベルのエラー回復力が提供されます。欠点は、これにはかなりのオーバーヘッドが伴うことです。複数のオーディオトラックなどのすべての機能がRTMPで使用できるわけではないことに注意してください。
- RTP-FEC -エラー回復力を備えた高速UDPベースのトランスポートを提供します
- RTP -エラー回復力のない高速転送と高度な機能を提供します
サポートされているエンコーダ
Liveで動作することが確認されているエンコーダーの一覧は、ライブイベントでサポートされているエンコーダー をご覧ください。他のエンコーダも動作しまする可能性がありますが、テストされていないことに注意してください。
サポートされている CDN
- Akamai
- Amazon CloudFront
再試行
エンコーダからの RTMP 接続の再試行を有効にすることをお勧めします。リトライ間隔を5 秒に設定し、リトライ回数を多くすると、エンコーダとエントリーポイント間の断続的な接続の問題を軽減することができます。
ジョブ設定(Live APIのみ)
推奨ジョブ設定
フィールド | 推奨値 |
---|---|
ad_audio_loudness_level |
-23 (EBU R.128規格) |
ライブ配信に関するベストプラクティス
ジョブはエンコーダー接続前に起動する必要があります。また、エンコーダーからストリームを開始した後にジョブをアクティブにすることはサポートされていない手順であり、予期しない動作を引き起こす可能性があります。
スレートソースファイルの推奨事項
- 解像度:(エンコーディングラダーで最高のもの)
- FPS : (ソースと同じ)
- ビットレート:(エンコーディングラダーで最高のもの)
- オーディオ:(最高レンディションと同じビットレート、チャンネル、サンプリング周波数、およびサンプルあたりのビット数、または入力と同じ)
出力に関する推奨事項
以下は推奨出力設定ですが、多くのエンコーダでは、RTMP入力は10MBPS(ビデオ+オーディオ)、フレームレートは30fpsに制限されています。
アイテム | 推奨事項 |
---|---|
ビデオコーデック | h264 現在、唯一の選択肢です |
オーディオコーデック | aac 現在、唯一の選択肢です |
幅 | width またはheight が指定されていない場合、ソースの寸法が使用されます。width またはheight のいずれかが指定されている場合、ソースのアスペクト比を維持するためにもう一方の寸法が計算されます。 |
高さ | width またはheight が指定されていない場合、ソースの寸法が使用されます。width またはheight のいずれかが指定されている場合、ソースのアスペクト比を維持するためにもう一方の寸法が計算されます。 |
ビットレート | 入力ビットレート以下(最良の結果を得るには、最高出力ビットレートは入力ビットレートの半分である必要があります) |
キーフレームレート | 2秒 |
よくある質問
- ライブジョブを作成してから、どのくらいでストリーミングを開始しなければならないでしょうか?
-
Brightcove Liveでは、
waiting
ステータスからfinishing
に移行する条件は次の 2 つになります。- ジョブが待機状態(まだ開始されていない)で、
max_waiting_time_ms
が経過した場合、ジョブは終了/非アクティブになります。 - ジョブが切断状態(開始済みだが切断中)で、
reconnect_time
が経過した場合、ジョブは終了/非アクティブになります。
event_length
が 30 分を超えると、ジョブは 30 分で終了します。event_length
30 分未満の場合、ジョブはevent_length
で終了します。例えば、
event_length
が、60 分の場合、ライブジョブは 30 分で終了します。event_length
が 15 分の場合、ライブジョブは 15 分で終了します。reconnect_time
は、待機状態には影響しません。 - ジョブが待機状態(まだ開始されていない)で、
- 同時ライブ job_settings の制限は何ですか?
-
アクティブな待機中状態で、開始されていないジョブは、最大 5 つまで許可されます。
同時ジョブの追加制限:
channel
(24 時間 365 日) ジョブの数は、リージョンごとに 0 または少ない数に制限されます (アカウントの種類によって異なります)。- 同時に実行できる
event
ジョブの数は、リージョンによって制限されており、通常は 100 になります。 - 同時接続待ちの
event
ジョブの数は 5 に制限されています。 - リージョンごとの SEP ジョブ数は 3 または 10 に制限されています(「サポートされている AWS リージョン」を参照)。
これらの制限は、サポートがアカウントレベルで調整できます。追加の容量が必要な場合は、アカウントマネージャーにお問い合わせください。
- 入力帯域幅が十分であれば、 Brightcove Liveは 1080p 品質をプッシュできますか?
- はい、1080p 入力はすべてのアカウントで有効です。
- DRMは利用可能ですか?
- はい!ライブアカウントに DRM サポートを追加する場合は、アカウントマネージャーにお問い合わせください。
さらにサポートが必要な場合
ライブイベントを機能させるためにさらにサポートが必要な場合は、弊社にお問い合わせください。可能な限り迅速に対応できるように、以下はブライトコーブサポートが問題解決に必要とするもののリストです。
- ストリームに発生している具体的な症状。例えば、全く再生されないのか、つかえているまたはフリーズするのか?
- このストリームが過去に正常に機能したかどうか
- エンコーダで使用しているエントリポイント URL
- 使用しているエンコーディングソフトウェアとハードウェア
- ライブイベントを公開したプレイヤーの URL
- Video Cloud Studio のライブアセットのビデオ ID
- エンコーダからパブリッシュポイントホストへのトレースルートの結果