Taxa de bits máxima do editor

Este tópico inclui detalhes sobre como definir a taxa de bits máxima de vídeo usando o Client SDK do Vonage Video para Linux:

Para obter uma visão geral da API de taxa de bits máxima do editor, consulte esse assunto.

Definir e recuperar uma predefinição

O otc_video_bitrate_preset enum, no publisher.h O cabeçalho inclui valores predefinidos:

  • OTC_VIDEO_BITRATE_PRESET_DEFAULT
  • OTC_VIDEO_BITRATE_PRESET_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVER
  • OTC_VIDEO_BITRATE_PRESET_CUSTOM

Veja Predefinições de taxa de bits de vídeo para obter mais detalhes sobre essas predefinições.

Para recuperar a predefinição de taxa de bits de vídeo atualmente configurada para um determinado editor, chame a função otc_publisher_get_video_bitrate_preset() função:

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

Para definir uma predefinição, chame o otc_publisher_set_video_bitrate_preset() função. Essa função inclui dois parâmetros:

  • publisher — Um ponteiro para a instância otc_publisher.
  • preset — Um valor de otc_video_bitrate_preset. Não use OTC_VIDEO_BITRATE_PRESET_CUSTOM.

A função retorna um destes valores:

  • OTC_SUCCESS — A predefinição foi aplicada com sucesso.
  • OTC_ERROR_INVALID_PARAMETER — O editor fornecido é NULL ou a predefinição é inválida.

Exemplo:

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

Definir e recuperar um valor de taxa de bits bruta

Se as predefinições não forem adequadas, você pode definir manualmente um valor personalizado de taxa de bits bruta.

Para obter a taxa de bits máxima de vídeo definida atualmente para um editor, chame a função otc_publisher_get_max_video_bitrate() função. Ela retorna a taxa de bits máxima definida no momento (em bits por segundo). Se nenhum valor personalizado estiver definido, a função retorna 0.

Exemplo:

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

Para definir um valor personalizado para a taxa de bits máxima (em vez de uma predefinição), use o otc_publisher_set_max_video_bitrate() função. Essa função possui os seguintes parâmetros:

  • publisher — Um ponteiro para uma instância existente de `otc_publisher`.
  • bitrate_bps — A taxa de bits máxima desejada (em bits por segundo). Deve estar entre 5.000 e 10.000.000.

A função retorna um dos seguintes valores:

  • OTC_SUCCESS — A taxa de bits foi aplicada com sucesso.
  • OTC_ERROR_INVALID_PARAMETER — O ponteiro do editor é NULL, ou bitrate_bps está fora do alcance.

Exemplo:

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

Veja Definição de valores de taxa de bits bruta para mais detalhes.

Casos especiais

Definir o valor da taxa de bits bruta como 0 remove qualquer limitação de taxa de bits definida anteriormente, retornando ao comportamento padrão.

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

Chamando o (otc_publisher_get_video_bitrate_preset()) A função, após definir uma taxa de bits personalizada, retorna 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);
}

O getter da taxa de bits bruta retorna 0 quando o editor está usando uma predefinição.

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