パブリッシャー最大ビットレート
このトピックでは、Vonage Video Linux Client SDKを使用して、動画の最大ビットレートを設定する方法について詳しく説明しています:
パブリッシャーの最大ビットレート API の概要については、以下を参照してください。 本題.
プリセットの設定と取得
について otc_video_bitrate_preset の publisher.h ヘッダーのプリセット値を含む:
OTC_VIDEO_BITRATE_PRESET_DEFAULTOTC_VIDEO_BITRATE_PRESET_BW_SAVEROTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVEROTC_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);