パブリッシャー最大ビットレート

このトピックでは、Vonage Video Linux Client SDKを使用して、動画の最大ビットレートを設定する方法について詳しく説明しています:

パブリッシャーの最大ビットレート API の概要については、以下を参照してください。 本題.

プリセットの設定と取得

について 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);