パブリッシャー最大ビットレート
パブリッシャーがカメラのビデオストリームに使用できる最大ビットレートを動的に制御できます。
このガイドでは、ビデオビットレート設定の構成方法、さまざまなプリセットの操作方法、RAWビットレートの設定方法、APIを効果的に使用するためのベストプラクティスを紹介します。
このトピックには以下のセクションが含まれます:
概要
パブリッシャーがメディアをエンコードする際に使用できる最大ビットレートを動的に設定できます。ビデオエンコーダは、ネットワーク条件やその他の制約に基づいて、最小しきい値から設定された最大ビットレートまでの許容範囲内の値を使用して、ビットレートを動的に調整します。
最大ビットレートを設定すると、ユーザーが従量制接続から接続している場合に、帯域幅の消費を抑えることができます。必ず 制限事項 の下にある。
制限事項
注意すべき重要な制限がいくつかある:
-
ネットワーク状況 - リアルタイムのネットワーク予測、帯域幅の変動、バックエンドの制限により、ネットワーク上で実際に達成されるビットレートは、設定された値よりも低くなる可能性がある。
-
範囲外の値 - 有効範囲外のビットレート値を指定した場合、SDKはリクエストを無視するか、エラーを返すことがあります。
APIの使用
ビデオ・ビットレート・プリセット
APIはビデオビットレートプリセットを提供し、コーデックやセッションの設定を気にすることなく、ビデオ画質を簡単に下げることができる。これらのプリセットは、ビデオ会議のような一般的なユースケース向けに設計されており、480p、540p、720p、1080pの解像度に対応しています。
利用可能なプリセットは以下の通り:
-
DEFAULT - ビデオストリームにバランスのとれたビジュアル体験を提供するSDKのデフォルトビットレート設定。
-
BW_SAVER - 帯域幅を節約するためにビットレートを下げるビデオ会議用の中品質設定。
-
EXTRA_BW_SAVER - ビデオ通信に不可欠な最低ビットレートで、ビデオ品質は低いが帯域幅の使用は最小限。
プリセットを扱う際に使用される正確なビットレート値は実装固有であり、ネゴシエートされたコーデックとメディアモード(中継またはルーティング)に依存することに注意してください。Video API クライアント SDK には、ビットレート・プリセットを設定および取得するメソッドが含まれています。
未加工ビットレート値の設定
定義済みのビットレート・プリセットがニーズを満たさない場合、カスタムの未加工ビットレート値を設定することができます。これにより、5,000bpsから10,000,000bpsまでの範囲内で、特定のビットレートの制限を定義することができます。この値はエンコーダーのビットレートにのみ適用されるため、ネットワーク・オーバーヘッドは選択された値の上に適用されることにご注意ください。
Vonage Video API クライアント SDK には、生ビットレートの値を設定したり、それを取得したりするためのメソッドが含まれています。生ビットレートが設定されるか、プリセットのみが設定されるまでは、ゲッターは 0 を返します(JS SDK を除く。JS SDK では、戻り値は undefined となります)。 生のビットレートが設定されると、ビットレートプリセットのゲッターは「custom」を返し、カスタム値が適用されたことを示します。ただし、セッターではプリセット「custom」を使用しないでください。最大値として使用する具体的なビットレート値を直接設定してください。
VP8とのビットレートとエンコーディングレイヤーの相互作用とスケーラビリティの有効化
スケーラブルなVP8を使用する際、最大ビットレートを変更すると、さらなる効率化が図られます。Client SDKは、利用可能なビットレートに基づいてエンコーディングレイヤーを動的に有効化または無効化し、動画ストリームの効率を最大限に高めます。このプロセスにより、パブリッシャーが配信する解像度が適応されます。
以下の注意事項が適用される。 プリセット VP8使用時:
-
DEFAULT- このプリセットは、利用可能なすべてのエンコーディングレイヤーを利用する。一般的なストリームでは、最大3つのレイヤー(低、中、高)が含まれます。 -
BW_SAVER- このプリセットでは、最初の2つのエンコーディングレイヤー(低画質と中画質)のみを使用します。これは帯域幅を節約するように設計されており、ビデオ会議のような高画質がそれほど重要でないシナリオに適しています。 -
EXTRA_BW_SAVER- このプリセットはさらにビットレートを下げ、ベース(最低)エンコーディングレイヤーのみを使用します。これは最も帯域幅効率の高いモードで、意味のあるビデオ通信に必要最低限の品質を提供します。
Rawビットレート値を設定する際、提供されたビットレートが特定のエンコーディングレイヤーを維持するのに不十分な場合、SDKは自動的に上位のレイヤーをオフにします。例えば、ビットレートが中・高画質レイヤーに対して低すぎる場合、それらのレイヤーは破棄され、ベース・レイヤーのみが伝送されます。
新たに提供されたビットレートが、より多くのエンコーディングレイヤーを維持するのに十分な高さである場合、SDKはより高いエンコーディングレイヤーを再アクティブ化し、ミディアムレイヤーとハイレイヤーを追加してビデオ品質を徐々に回復させます。
このメカニズムにより、ビデオストリームが可能な限り効率的な状態を維持し、ユーザーエクスペリエンスを損なうことなく、利用可能な帯域幅を最大限に活用できる。
例
セッションの開始時に、パブリッシャーは DEFAULT プリセットは、完全なビデオ品質を提供します。セッションのこの特定の段階では、VP8ノンスケーラブルコーデックをネゴシエートしたと仮定しましょう。ただし、ネットワークが従量制接続(たとえば携帯電話)に変更された後は BW_SAVER プリセットを使用します。パブリッシャーの最大ビットレートにプリセットを使用する場合、Client SDKはどのようなイベントでも品質レベルが変わらないようにします。ネットワークが無制限接続に切り替わったら、デフォルトに戻すことができます。 DEFAULT プリセットされている。
また、帯域幅の上限しきい値を設定するために、生のビットレート値を設定することもできる。
各Client SDKの詳細については、以下をご参照ください:
ベストプラクティス
最高のパフォーマンスと最適な帯域幅の使用を保証するために、以下のベストプラクティスに従ってください:
-
定義済みのビットレート・プリセットを使用 - 可能であれば、定義済みのビットレート・プリセット (
DEFAULT,BW_SAVER,EXTRA_BW_SAVER)を使用してビデオ品質を管理します。これらのプリセットは、ビデオ会議のような一般的なシナリオに合わせて調整されており、ビデオ品質と帯域幅効率のバランスを保証します。さらに重要なのは、コーデックの詳細やメディアモードが抽象化されていることです。 -
カスタムビットレート設定に注意 - カスタムビットレート設定はより多くの制御を可能にしますが、その使用は WebRTC ネゴシエーションの段階で変更される可能性のあるコーデックの詳細に関連付けられています。ビットレートに対する厳しい閾値が必要な場合にのみ、控えめに使用することをお勧めします。
-
画面共有ストリームにカスタムビットレートやプリセットを適用しない - 画面共有ストリームのエンコーディングは、カメラストリームのエンコーディングとは異なります。最大ビットレートAPIを使用して画面共有ストリームを制限すると、帯域幅が改善されずに品質が低下することがあります。