ストリームの最大ビットレートの設定

パブリッシャーがカメラのビデオストリームに使用できる最大ビットレートを動的に制御できます。

このガイドでは、ビデオビットレート設定の構成方法、さまざまなプリセットの操作方法、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 を除き、返される値は未定義です)。未加工ビットレートが設定されると、ビットレート・プリセット・ゲッターは'custom'を返し、カスタム値が適用されたことを示します。しかし、セッターでプリセットの'custom'を使用しないでください - 最大値として使用する特定のビットレート番号を設定するだけです。

VP8とのビットレートとエンコーディングレイヤーの相互作用とスケーラビリティの有効化

スケーラブル VP8 が使用されているときに最大ビットレートを変更すると、さらなる効率化が引き起こされます。クライアント SDK は、利用可能なビットレートに基づいてエンコーディング レイヤーを動的にアクティブ化または非アクティブ化し、ビデオ ストリームが可能な限り効率的になるようにします。このプロセスは、パブリッシャーがパブリッシングする解像度に適応します。

以下の注意事項が適用される。 プリセット VP8使用時:

  • DEFAULT - このプリセットは、利用可能なすべてのエンコーディングレイヤーを利用する。一般的なストリームでは、最大3つのレイヤー(低、中、高)が含まれます。

  • BW_SAVER - このプリセットでは、最初の2つのエンコーディングレイヤー(低画質と中画質)のみを使用します。これは帯域幅を節約するように設計されており、ビデオ会議のような高画質がそれほど重要でないシナリオに適しています。

  • EXTRA_BW_SAVER - このプリセットはさらにビットレートを下げ、ベース(最低)エンコーディングレイヤーのみを使用します。これは最も帯域幅効率の高いモードで、意味のあるビデオ通信に必要最低限の品質を提供します。

Rawビットレート値を設定する際、提供されたビットレートが特定のエンコーディングレイヤーを維持するのに不十分な場合、SDKは自動的に上位のレイヤーをオフにします。例えば、ビットレートが中・高画質レイヤーに対して低すぎる場合、それらのレイヤーは破棄され、ベース・レイヤーのみが伝送されます。

新たに提供されたビットレートが、より多くのエンコーディングレイヤーを維持するのに十分な高さである場合、SDKはより高いエンコーディングレイヤーを再アクティブ化し、ミディアムレイヤーとハイレイヤーを追加してビデオ品質を徐々に回復させます。

このメカニズムにより、ビデオストリームが可能な限り効率的な状態を維持し、ユーザーエクスペリエンスを損なうことなく、利用可能な帯域幅を最大限に活用できる。

セッションの開始時に、パブリッシャーは DEFAULT プリセットは、完全なビデオ品質を提供します。セッションのこの特定の段階では、VP8ノンスケーラブルコーデックをネゴシエートしたと仮定しましょう。ただし、ネットワークが従量制接続(たとえば携帯電話)に変更された後は BW_SAVER プリセットを使用します。パブリッシャーの最大ビットレートにプリセットを使用する場合、Client SDKはどのようなイベントでも品質レベルが変わらないようにします。ネットワークが無制限接続に切り替わったら、デフォルトに戻すことができます。 DEFAULT プリセットされている。

また、帯域幅の上限しきい値を設定するために、生のビットレート値を設定することもできる。

各Client SDKの詳細については、以下をご参照ください:

Vonage Video macOSクライアントSDKでPublisher Max Bitrateを使用する際の詳細は、LinuxクライアントSDKと同じです。

について properties OTPublisherコンポーネントのpropには videoBitratePreset プロパティを使用します。パブリッシャーにプリセットのビデオビットレート設定を使用させるには、以下の文字列値のいずれかを設定します: default, bw_saverあるいは extra_bw_saver.参照 ビデオ・ビットレート・プリセット これらのプリセットの詳細については

<OTPublisher
  properties={{
    videoBitratePreset: 'bw_saver',
    // ... other properties
  }}
/>

について videoBitratePreset プロパティは maxVideoBitrate プロパティ (次のセクションで説明) が設定されている。どちらも設定されていない場合、パブリッシャーはデフォルトのプリセットを使用します。

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

について properties OTPublisherコンポーネントのpropには maxVideoBitrate プロパティを設定します。最大ビットレート値を(プリセットの代わりに)設定するには、このプロパティを5,000から10,000,000の間の値(ビット毎秒)に設定します。

<OTPublisher
  properties={{
    maxVideoBitrate: 500000,
    // ... other properties
  }}
/>

について maxVideoBitrate プロパティが優先されます。 videoBitratePreset プロパティ(前のセクションで説明)を使用します。両方が設定されている場合 maxVideoBitrate プロパティが使われます。どちらも設定されていない場合、パブリッシャーはデフォルトのプリセットを使用します。

APIは、サポートされているすべてのブラウザの最近のバージョンでサポートされていることに注意してください。エラーが発生した場合は、クライアントが最新バージョンのブラウザを使用していることを確認してください。

パブリッシャ・オブジェクトには以下が含まれます。 setVideoBitratePreset() そして getVideoBitratePreset() メソッドを使用する。その setVideoBitratePreset() メソッドは以下を受け付ける 文字列値 'DEFAULT'、'BW_SAVER'、または 'EXTRA_BW_SAVER'(あるいは、それらの小文字の対応形)。 と getVideoBitratePreset() メソッドはこれらの 値 (または 'CUSTOM') を返します。参照 ビデオ・ビットレート・プリセット 詳しくは プリセットの詳細をご覧ください。

に注意してください。 getVideoBitratePreset() メソッドが返す undefined プリセットやビットレートが設定されていない場合。

について setVideoBitratePreset() メソッドには1つのパラメータがあります: preset希望のプリセットを選択します。

console.log(publisher.getVideoBitratePreset());  // undefined

await publisher.setVideoBitratePreset('BW_SAVER');  // or 'DEFAULT' or 'EXTRA_BW_SAVER'

console.log(publisher.getVideoBitratePreset());  // 'BW_SAVER'

について setVideoBitratePreset() メソッドは name プロパティを設定する:

  • OT_INVALID_PARAMETER - 無効なプリセット。DEFAULT'、'BW_SAVER'、または'EXTRA_BW_SAVER'でなければならない。

  • OT_UNEXPECTED_ERROR_CODE - 予期せぬエラーが発生し、プリセットが更新されませんでした。

への呼び出しをラップする。 setVideoBitratePreset() たとえプリセット名が正しくても、try/catchブロックの中のメソッドでプリセット名を変更することができる:

const invalidPreset = 'VERY_FAST';
try {
    await publisher.setVideoBitratePreset(invalidPreset);
} catch (err) {
    console.error(err.name);
    // 'OT_INVALID_PARAMETER'
}

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

パブリッシャーに現在設定されている最大ビデオビットレートを取得するには getMaxVideoBitrate() メソッドを呼び出します。これは、現在設定されている最大ビットレート(ビット/秒)を返します。カスタム値が設定されていない場合、この関数は undefined.

console.log(publisher.getMaxVideoBitrate());

プリセットの代わりに)カスタム最大ビットレート値を設定するには setMaxVideoBitrate() メソッドを使用します。この関数にはパラメータが 1 つあります: bitrateBps希望の最大ビットレート(ビット/秒)を5,000から10,000,000の間で指定する。

const new_bitrate = 300000; // 300 kbps
await publisher.setMaxVideoBitrate(new_bitrate);

について setMaxVideoBitrate() メソッドは name プロパティを設定する:

  • OT_INVALID_PARAMETER - 無効なビットレート。値は0か、5000から10000000の間の数値でなければならない。
  • OT_UNEXPECTED_ERROR_CODE - 予期せぬエラーが発生し、ビットレートが更新されませんでした。

への呼び出しをラップする。 setVideoBitratePreset() メソッドを try/catch ブロックの中に置く。

参照 未加工ビットレート値の設定 をご覧ください。


最大ビットレート値を0に設定すると、それまで設定されていたビットレート制限が解除され、デフォルトの動作に戻ります。

const zero_bitrate = 0;  // no limitations
const int new_bitrate = 300000; // 300 kbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getMaxVideoBitrate() === 300000

publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getMaxVideoBitrate() === 0
natale-p marked this conversation as resolved.

を呼び出す。 getVideoBitratePreset() メソッドで0以外のカスタムビットレートを設定すると、次のように返される。 CUSTOM.

const zero_bitrate = 0;  // no limitations
const new_bitrate = 1000000; // 1 mbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getVideoBitratePreset() === 'CUSTOM'

publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getVideoBitratePreset() === 'DEFAULT'

パブリッシャーがプリセットを使用している場合、raw bitrate ゲッターは 0 を返す。

let bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0

publisher.setVideoBitratePreset('bw_saver);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setVideoBitratePreset('extra_bw_saver');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setMaxVideoBitrate(200000);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 200000
publisher.setVideoBitratePreset('default');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0

について PublisherKit .VideoBitratePreset enumはプリセット値を含む:

  • VideoBitratePresetDefault
  • VideoBitratePresetBwSaver
  • VideoBitratePresetExtraBwSaver
  • VideoBitratePresetCustom

参照 ビデオ・ビットレート・プリセット これらのプリセットの詳細については

指定したパブリッシャー用に現在設定されているビデオビットレートプリセットを取得するには PublisherKit.getVideoBitratePreset() メソッドを使用する:

PublisherKit.VideoBitratePreset retrievedBitratePreset = publisherKit.getVideoBitratePreset();
System.out.println("The video bitrate preset is: " + retrievedBitratePreset);

プリセットを設定するには PublisherKit.setVideoBitratePreset() メソッドを使用します。このメソッドにはパラメータが1つある: preset - からの値です。 VideoBitratePreset 列挙する。を使用しないでください。 VideoBitratePresetCustom.

PublisherKit.VideoBitratePreset bitratePreset = PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver;
publisherKit.setVideoBitratePreset(bitratePreset);

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

パブリッシャーに現在設定されている最大ビデオビットレートを取得するには PublisherKit.getMaxVideoBitrate() メソッドを使用します。これは、現在設定されている最大ビットレート(ビット毎秒)を返します。カスタム値が設定されていない場合、このメソッドは0を返します。

int retrievedMaxVideoBitrate = publisherKit.getMaxVideoBitrate();
System.out.println("The maximum video bitrate is: " + retrievedMaxVideoBitrate + " kbps");

プリセットの代わりに)カスタム最大ビットレート値を設定するには PublisherKit.setMaxVideoBitrate() メソッドを使用します。このメソッドにはパラメータが1つある: maxVideoBitrate希望する最大ビットレート(ビット/秒)。ビットレートは maxVideoBitrate の値は5,000から10,000,000の間でなければならない。

int maxVideoBitrate = 300000; // 300 kbps
publisherKit.setMaxVideoBitrate(maxVideoBitrate);

参照 未加工ビットレート値の設定 をご覧ください。


未加工のビットレート値を0に設定すると、それまで設定されていたビットレートの制限が解除され、デフォルトの動作に戻ります。

int zeroBitrate = 0; // No limitations
int newBitrate = 300000; // 300 kbps

// Set the maximum video bitrate
publisherKit.setMaxVideoBitrate(newBitrate);

// Validate that the bitrate was set correctly
if (publisherKit.getMaxVideoBitrate() == newBitrate) {
    System.out.println("Max video bitrate set successfully to: " + newBitrate);
}

// Reset the maximum video bitrate to the default behavior
publisherKit.setMaxVideoBitrate(zeroBitrate);

// Validate that the bitrate was reset to default
if (publisherKit.getMaxVideoBitrate() == zeroBitrate) {
    System.out.println("Max video bitrate reset to default.");
}

を呼び出す。 getVideoBitratePreset() メソッドは、カスタムビットレートを設定した後に VideoBitratePresetCustom.

int newBitrate = 1000000; // 1 Mbps

// Set a custom bitrate
publisherKit.setMaxVideoBitrate(newBitrate);

// Validate that the preset is set to CUSTOM
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetCustom) {
    System.out.println("Video bitrate preset set to CUSTOM.");
}

// Reset bitrate to default
publisherKit.setMaxVideoBitrate(zeroBitrate);

// Validate that the preset is reset to DEFAULT
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetDefault) {
    System.out.println("Video bitrate preset reset to DEFAULT.");
}

について PublisherKit.getMaxVideoBitrate() メソッドはパブリッシャーがプリセットを使用している場合は 0 を返します。

// Get the current raw bitrate (default should be 0)
int bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;

// Set the preset to BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;

// Set the preset to EXTRA_BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetExtraBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;

// Set a custom bitrate
publisherKit.setMaxVideoBitrate(200000);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 200000;

// Reset the preset to DEFAULT
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetDefault);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;

について OTVideoBitratePreset enumはプリセット値を含む:

  • OTVideoBitratePresetDefault
  • OTVideoBitratePresetBwSaver
  • OTVideoBitratePresetExtraBwSaver
  • OTVideoBitratePresetCustom

参照 ビデオ・ビットレート・プリセット これらのプリセットの詳細については

指定されたパブリッシャーに対して現在設定されているビデオビットレートプリセットを取得するには、次のように設定します。 OTPublisherKit.videoBitratePreset 財産である:

OTVideoBitratePreset retrievedBitratePreset = publisher.videoBitratePreset;
NSLog(@"The video bitrate preset is: %ld", (long)retrievedBitratePreset);

プリセットを設定するには、値を videoBitratePreset プロパティを指定します。このプロパティは OTVideoBitratePreset を除く。 OTVideoBitratePresetCustom.

publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

パブリッシャーに現在設定されている最大ビデオビットレートを取得するには OTPublisherKit.maxVideoBitrate プロパティを使用します。これは最大ビットレート(ビット毎秒)に設定されます。カスタム値が設定されていない場合、プロパティは 0 に設定されます。

int retrievedMaxVideoBitrate = publisher.maxVideoBitrate;
NSLog(@"The maximum video bitrate is: %d kbps", retrievedMaxVideoBitrate);

プリセットの代わりに)カスタムの最大ビットレート値を使用するには、次のように設定します。 OTPublisherKit.maxVideoBitrate プロパティを指定します。このプロパティは、5,000~10,000,000(ビット/秒)の値を受け付ける。

publisher.maxVideoBitrate = 300000; // 300 kbps

参照 未加工ビットレート値の設定 をご覧ください。


未加工のビットレート値を0に設定すると、それまで設定されていたビットレートの制限が解除され、デフォルトの動作に戻ります。

publisher.maxVideoBitrate = 300000; // Set the maximum video bitrate to 300 kbps
NSLog(@"Max video bitrate set successfully to: %d", publisher.maxVideoBitrate);

publisher.maxVideoBitrate = 0; // Reset the maximum video bitrate to the default behavior
NSLog(@"Max video bitrate reset to default: %d", publisher.maxVideoBitrate);

カスタムビットレートを設定した後 videoBitratePreset プロパティが OTVideoBitratePresetCustom.

publisher.maxVideoBitrate = 1000000; // Set a custom bitrate to 1 Mbps
if (publisher.videoBitratePreset == OTVideoBitratePresetCustom) {
    NSLog(@"Video bitrate preset set to CUSTOM.");
}

publisher.maxVideoBitrate = 0; // Reset bitrate to default
if (publisher.videoBitratePreset == OTVideoBitratePresetDefault) {
    NSLog(@"Video bitrate preset reset to DEFAULT.");
}

について publisher.maxVideoBitrate プロパティは、パブリッシャーがプリセットを使用している場合、0に設定されます。

NSLog(@"Default bitrate: %d", publisher.maxVideoBitrate); // Default should be 0

publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;
NSLog(@"Bitrate for BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0

publisher.videoBitratePreset = OTVideoBitratePresetExtraBwSaver;
NSLog(@"Bitrate for EXTRA_BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0

publisher.maxVideoBitrate = 200000; // Set a custom bitrate
NSLog(@"Custom bitrate: %d", publisher.maxVideoBitrate);

publisher.videoBitratePreset = OTVideoBitratePresetDefault; // Reset to default preset
NSLog(@"Bitrate after reset to DEFAULT preset: %d", publisher.maxVideoBitrate); // Should be 0

について VideoBitratePreset enumはプリセット値を含む:

  • Default
  • BwSaver
  • ExtraBwSaver
  • Custom

参照 ビデオ・ビットレート・プリセット これらのプリセットの詳細については

指定したパブリッシャー用に現在設定されているビデオビットレートプリセットを取得するには Publisher.VideoBitratePreset 財産である:

var preset = publisher.VideoBitratePreset;
if (preset == VideoBitratePreset.BwSaver)
{
    Console.WriteLine("The publisher is using the BW_SAVER preset.");
}

プリセットを設定するには Publisher.VideoBitratePreset プロパティをVideoBitratePreset 列挙する。を使用しないでください。 Custom 値である。

publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
Console.WriteLine("Bitrate preset successfully set to BW_SAVER.");

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

現在の最大ビデオビットレート(ビット/秒)を取得するには、次のようにアクセスします。 Publisher.MaxVideoBitrate プロパティを設定します。カスタム値が設定されていない場合、0が設定される。

int maxBitrate = publisher.MaxVideoBitrate;
Console.WriteLine($"Current max video bitrate: {maxBitrate} bps");

カスタム最大ビットレートを設定するには(プリセットの代わりに)、値(5,000から10,000,000の間)を MaxVideoBitrate 財産である。

int newBitrate = 300000; // 300 kbps
publisher.MaxVideoBitrate = newBitrate;
Console.WriteLine($"Successfully set max video bitrate to {newBitrate} bps.");

参照 未加工ビットレート値の設定 をご覧ください。


未加工のビットレート値を0に設定すると、それまで設定されていたビットレートの制限が解除され、デフォルトの動作に戻ります。

int zeroBitrate = 0;  // no limitations
int newBitrate = 300000;

publisher.MaxVideoBitrate = newBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == newBitrate);

publisher.MaxVideoBitrate = zeroBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == zeroBitrate);

カスタムビットレートを設定すると VideoBitratePreset プロパティを VideoBitratePreset.Custom:

publisher.MaxVideoBitrate = 1000000; // 1 Mbps
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Custom);

publisher.MaxVideoBitrate = 0;
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Default);

について MaxVideoBitrate プロパティはパブリッシャーがプリセットを使用している場合、0を返します:

publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);

publisher.VideoBitratePreset = VideoBitratePreset.ExtraBwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);

publisher.MaxVideoBitrate = 200000;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 200000);

publisher.VideoBitratePreset = VideoBitratePreset.Default;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);

について otc_video_bitrate_presetpublisher.h ヘッダーのプリセット値を含む:

  • OTC_VIDEO_BITRATE_PRESET_DEFAULT
  • OTC_VIDEO_BITRATE_PRESET_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_CUSTOM

参照 ビデオ・ビットレート・プリセット これらのプリセットの詳細については

指定したパブリッシャー用に現在設定されているビデオビットレートプリセットを取得するには otc_publisher_get_video_bitrate_preset() 関数である:

enum otc_video_bitrate_preset preset = otc_publisher_get_video_bitrate_preset(publisher);
if (preset == OTC_VIDEO_BITRATE_PRESET_BW_SAVER) {
    printf("The publisher is using the BW_SAVER preset.\n");
}

プリセットを設定するには otc_publisher_set_video_bitrate_preset() 関数を呼び出します。この関数には2つのパラメータがある:

  • publisher - otc_publisher インスタンスへのポインタ。
  • preset - からの値 otc_video_bitrate_preset.を使用しないでください。 OTC_VIDEO_BITRATE_PRESET_CUSTOM.

この関数はこれらの値のいずれかを返す:

  • OTC_SUCCESS - プリセットは正常に適用された。
  • OTC_ERROR_INVALID_PARAMETER - 提供されたパブリッシャーが NULL であるか、プリセットが無効です。

otc_status status = otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_BW_SAVER);
if (status == OTC_SUCCESS) {
    printf("Bitrate preset successfully set to BW_SAVER.\n");
} else {
    printf("Failed to set bitrate preset.\n");
}

定義済みのプリセットが適切でない場合は、カスタムRAWビットレート値を手動で設定できます。

パブリッシャーに現在設定されている最大ビデオビットレートを取得するには otc_publisher_get_max_video_bitrate() 関数を使用します。これは、現在設定されている最大ビットレート(ビット毎秒)を返します。カスタム値が設定されていない場合、この関数は0を返します。

int max_bitrate = otc_publisher_get_max_video_bitrate(publisher);
printf("Current max video bitrate: %d bps\n", max_bitrate);

プリセットの代わりに)カスタム最大ビットレート値を設定するには otc_publisher_set_max_video_bitrate() 関数を使用する。この関数には以下のパラメータがある:

  • publisher - 既存の otc_publisher インスタンスへのポインタ。
  • bitrate_bps - 希望する最大ビットレート(ビット毎秒)。5,000から10,000,000の間でなければならない。 この関数は、以下の値のいずれかを返します:
  • OTC_SUCCESS - ビットレートは正常に適用された。
  • OTC_ERROR_INVALID_PARAMETER - パブリッシャーポインターは NULLあるいは bitrate_bps は範囲外です。 例
int new_bitrate = 300000; // 300 kbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);
if (status == OTC_SUCCESS) {
    printf("Successfully set max video bitrate to %d bps.\n", new_bitrate);
} else {
    printf("Failed to set max video bitrate.\n");
}

参照 未加工ビットレート値の設定 をご覧ください。


未加工のビットレート値を0に設定すると、それまで設定されていたビットレートの制限が解除され、デフォルトの動作に戻ります。

const int zero_bitrate = 0;  // no limitations
const int new_bitrate = 300000; // 300 kbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);

if (status == OTC_SUCCESS) {
  assert(otc_publisher_get_max_video_bitrate(publisher) == new_bitrate);
}

status = otc_publisher_set_max_video_bitrate(publisher, zero_bitrate);
if (status == OTC_SUCCESS) {
  assert(otc_publisher_get_max_video_bitrate(publisher) == zero_bitrate);
}

を呼び出す。otc_publisher_get_video_bitrate_preset())関数は、カスタムビットレートを設定した後に OTC_VIDEO_BITRATE_PRESET_CUSTOM.

const int new_bitrate = 1000000; // 1 mbps
otc_status status = otc_publisher_set_max_video_bitrate(publisher, new_bitrate);

if (status == OTC_SUCCESS) {
  assert(otc_publisher_get_video_bitrate_preset(publisher) == OTC_VIDEO_BITRATE_PRESET_CUSTOM);
}

status = otc_publisher_set_max_video_bitrate(publisher, zero_bitrate);
if (status == OTC_SUCCESS) {
  assert(otc_publisher_get_video_bitrate_preset(publisher) == OTC_VIDEO_BITRATE_PRESET_DEFAULT);
}

パブリッシャーがプリセットを使用している場合、raw bitrate ゲッターは 0 を返す。

// Assume all the statuses are OTC_SUCCESS

int bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);

otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_BW_SAVER);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);

otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVER);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);

otc_publisher_set_max_video_bitrate(publisher, 200000);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 200000);

otc_publisher_set_video_bitrate_preset(publisher, OTC_VIDEO_BITRATE_PRESET_DEFAULT);
bitrate_bps = otc_publisher_get_max_video_bitrate(publisher);
assert(bitrate_bps == 0);

ベストプラクティス

最高のパフォーマンスと最適な帯域幅の使用を保証するために、以下のベストプラクティスに従ってください:

  • 定義済みのビットレート・プリセットを使用 - 可能であれば、定義済みのビットレート・プリセット (DEFAULT, BW_SAVER, EXTRA_BW_SAVER)を使用してビデオ品質を管理します。これらのプリセットは、ビデオ会議のような一般的なシナリオに合わせて調整されており、ビデオ品質と帯域幅効率のバランスを保証します。さらに重要なのは、コーデックの詳細やメディアモードが抽象化されていることです。

  • カスタムビットレート設定に注意 - カスタムビットレート設定はより多くの制御を可能にしますが、その使用は WebRTC ネゴシエーションの段階で変更される可能性のあるコーデックの詳細に関連付けられています。ビットレートに対する厳しい閾値が必要な場合にのみ、控えめに使用することをお勧めします。

  • 画面共有ストリームにカスタムビットレートやプリセットを適用しない - 画面共有ストリームのエンコーディングは、カメラストリームのエンコーディングとは異なります。最大ビットレートAPIを使用して画面共有ストリームを制限すると、帯域幅が改善されずに品質が低下することがあります。