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:
- Definir e recuperar uma predefinição
- Definir e recuperar um valor de taxa de bits bruta
- Casos especiais
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_DEFAULTOTC_VIDEO_BITRATE_PRESET_BW_SAVEROTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVEROTC_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 deotc_video_bitrate_preset. Não useOTC_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, oubitrate_bpsestá 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);