Herausgeber Maximale Bitrate

Dieses Thema enthält Informationen zur Einstellung der maximalen Video-Bitrate mithilfe des Vonage Video Linux-Client SDK:

Einen Überblick über die Publisher-API für die maximale Bitrate finden Sie unter dieses Thema.

Ein Voreinstellung festlegen und abrufen

Die otc_video_bitrate_preset enum, in der publisher.h Kopfzeile, enthält voreingestellte Werte:

  • OTC_VIDEO_BITRATE_PRESET_DEFAULT
  • OTC_VIDEO_BITRATE_PRESET_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_CUSTOM

Siehe Video-Bitrate-Voreinstellungen für Details zu diesen Voreinstellungen.

Um die aktuell konfigurierte Video-Bitratenvoreinstellung für einen bestimmten Publisher abzurufen, rufen Sie die Funktion otc_publisher_get_video_bitrate_preset() Funktion:

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");
}

Um eine Voreinstellung zu setzen, rufen Sie die Funktion otc_publisher_set_video_bitrate_preset() Funktion. Diese Funktion enthält zwei Parameter:

  • publisher - Ein Zeiger auf die otc_publisher-Instanz.
  • preset - Ein Wert von otc_video_bitrate_preset. Nicht verwenden OTC_VIDEO_BITRATE_PRESET_CUSTOM.

Die Funktion gibt einen dieser Werte zurück:

  • OTC_SUCCESS - Die Voreinstellung wurde erfolgreich angewendet.
  • OTC_ERROR_INVALID_PARAMETER - Der angegebene Verlag ist NULL oder die Voreinstellung ist ungültig.

Beispiel:

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");
}

Festlegen und Abrufen eines Rohwerts für die Bitrate

Wenn die vordefinierten Voreinstellungen nicht geeignet sind, können Sie manuell einen benutzerdefinierten Rohbitratenwert festlegen.

Um die maximale Videobitrate zu erhalten, die derzeit für einen Publisher eingestellt ist, rufen Sie die otc_publisher_get_max_video_bitrate() Funktion. Sie gibt die aktuell eingestellte maximale Bitrate (in Bits pro Sekunde) zurück. Wenn kein benutzerdefinierter Wert eingestellt ist, gibt die Funktion 0 zurück.

Beispiel:

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

Um einen benutzerdefinierten Wert für die maximale Bitrate (anstelle einer Voreinstellung) festzulegen, verwenden Sie die otc_publisher_set_max_video_bitrate() Funktion. Diese Funktion hat die folgenden Parameter:

  • publisher - Ein Zeiger auf eine vorhandene otc_publisher-Instanz.
  • bitrate_bps — Die gewünschte maximale Bitrate (in Bit pro Sekunde). Der Wert muss zwischen 5.000 und 10.000.000 liegen.

Die Funktion gibt einen der folgenden Werte zurück:

  • OTC_SUCCESS - Die Bitrate wurde erfolgreich angewendet.
  • OTC_ERROR_INVALID_PARAMETER - Der Zeiger des Herausgebers lautet NULL, oder bitrate_bps liegt außerhalb des zulässigen Bereichs.

Beispiel:

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");
}

Siehe Einstellung von Rohbitratenwerten für weitere Einzelheiten.

Sonderfälle

Wenn Sie den Wert für die Rohbitrate auf 0 setzen, werden alle zuvor festgelegten Bitratenbeschränkungen aufgehoben und das Standardverhalten wird wiederhergestellt.

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);
}

Der Aufruf der (otc_publisher_get_video_bitrate_preset()) nach der Einstellung einer benutzerdefinierten Bitrate zurück 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);
}

Der Getter für die Rohbitrate gibt 0 zurück, wenn der Herausgeber eine Voreinstellung verwendet.

// 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);