Establecer la tasa de bits máxima para un flujo
Puede controlar dinámicamente la tasa de bits máxima que un editor puede utilizar para las secuencias de vídeo de la cámara.
Esta guía muestra cómo configurar los ajustes de la tasa de bits de vídeo, cómo interactuar con los distintos preajustes, cómo establecer tasas de bits sin procesar y las mejores prácticas para utilizar la API de forma eficaz.
Este tema incluye las siguientes secciones:
Visión general
Puede establecer dinámicamente la tasa de bits máxima que un editor puede utilizar al codificar medios. A continuación, el codificador de vídeo ajusta la tasa de bits de forma dinámica, utilizando un valor dentro del rango permitido, desde un umbral mínimo hasta la tasa de bits máxima establecida, en función de las condiciones de la red y otras restricciones.
Establecer el bitrate máximo puede ayudar a reducir el consumo de ancho de banda cuando un usuario se conecta desde una conexión con contador. Asegúrese de leer la Limitaciones abajo.
Limitaciones
Hay que tener en cuenta algunas limitaciones importantes:
Condiciones de la red - La tasa de bits real alcanzada en la red puede ser inferior al valor establecido, debido a las estimaciones de la red en tiempo real, las fluctuaciones del ancho de banda y las limitaciones del backend.
Valores fuera de los límites - Si proporciona un valor de bitrate fuera del rango válido, el SDK puede ignorar la solicitud o devolver un error.
Uso de la API
Preajustes de velocidad de bits de vídeo
La API ofrece preajustes de velocidad de bits de vídeo que simplifican la reducción de la calidad de vídeo sin necesidad de preocuparse por los ajustes del códec y de la sesión. Estos preajustes están diseñados para casos de uso comunes como videoconferencias y se adaptan a resoluciones de 480p, 540p, 720p y 1080p.
Los preajustes disponibles son:
DEFAULT- La configuración predeterminada de la tasa de bits del SDK que ofrece una experiencia visual equilibrada para las secuencias de vídeo.BW_SAVER- Un ajuste de calidad media para videoconferencias que reduce la tasa de bits para ahorrar ancho de banda.EXTRA_BW_SAVER- La tasa de bits más baja para la comunicación de vídeo esencial, que ofrece una baja calidad de vídeo pero un uso mínimo del ancho de banda.
Ten en cuenta que los valores exactos de la tasa de bits utilizados cuando se trata de preajustes son específicos de la implementación y dependen del códec negociado y del modo del medio (retransmitido o enrutado). Los SDK de cliente de la Video API incluyen métodos para establecer y obtener la tasa de bits preestablecida.
Ajuste de los valores de la tasa de bits bruta
Si las tasas de bits predefinidas no satisfacen tus necesidades, puedes establecer un valor de tasa de bits en bruto personalizado. Esto te permite definir límites específicos de bitrate dentro de un rango, desde 5.000 bps hasta 10.000.000 bps. Ten en cuenta que el valor sólo se aplica a la tasa de bits del codificador, por lo que la sobrecarga de la red sigue aplicándose además del valor elegido.
Los SDK de cliente de la Video API de Vonage incluyen métodos para establecer el valor de la tasa de bits sin procesar y para recuperarlo. Hasta que se establece una tasa de bits bruta, o hasta que sólo se establecen preajustes, el getter devuelve 0 (excepto para el SDK de JS, en el que el valor devuelto es indefinido). Una vez establecida una tasa de bits bruta, el getter de preajustes de tasa de bits devuelve 'custom', lo que indica que se ha aplicado un valor personalizado. Sin embargo, no utilices el valor preestablecido "custom" en el establecedor; simplemente establece el número de tasa de bits específico que se utilizará como valor máximo.
Interacción de la tasa de bits y la capa de codificación con VP8 y escalabilidad habilitada
El cambio de la tasa de bits máxima cuando se utiliza VP8 escalable desencadena una eficiencia adicional: el Client SDK activa o desactiva dinámicamente las capas de codificación en función de la tasa de bits disponible para garantizar que el flujo de vídeo sea lo más eficiente posible. Este proceso adapta la resolución a la que el editor está publicando.
Las siguientes notas se aplican al preajustado cuando se utiliza VP8:
DEFAULT- Este preajuste utiliza todas las capas de codificación disponibles. Para un flujo típico, esto incluye hasta tres capas (baja, media y alta).BW_SAVER- Este preajuste sólo utiliza las dos primeras capas de codificación (calidad baja y media). Está diseñado para ahorrar ancho de banda, por lo que es adecuado para escenarios como las videoconferencias, donde la alta calidad de vídeo puede no ser tan crítica.EXTRA_BW_SAVER- Este preajuste reduce aún más la tasa de bits, utilizando sólo la capa de codificación base (la más baja). Este es el modo más eficiente en cuanto a ancho de banda, ya que proporciona la calidad mínima para una comunicación de vídeo significativa.
Cuando se establece un valor de tasa de bits sin procesar, si la tasa de bits proporcionada es insuficiente para mantener determinadas capas de codificación, el SDK desactiva automáticamente las capas superiores. Por ejemplo, si la tasa de bits es demasiado baja para las capas de calidad media o alta, esas capas se descartan y sólo se transmite la capa base.
Si una nueva tasa de bits proporcionada es lo suficientemente alta como para mantener más capas de codificación, el SDK reactiva las capas de codificación superiores, restaurando progresivamente la calidad del vídeo al volver a añadir las capas media y alta.
Este mecanismo garantiza que el flujo de vídeo siga siendo lo más eficiente posible, maximizando el uso del ancho de banda disponible sin comprometer la experiencia del usuario.
Ejemplos
Al inicio de una sesión, un editor utiliza la función DEFAULT que proporciona una calidad de vídeo completa. En esta fase concreta de la sesión, supongamos que ha negociado el códec VP8 no escalable. Sin embargo, tras un cambio de red a una conexión con contador (por ejemplo, celular), puede reducir el ancho de banda de publicación utilizando la opción BW_SAVER preestablecido. Cuando se utiliza un preajuste para la tasa de bits máxima del editor, el Client SDK se asegura de que el nivel de calidad siga siendo el mismo independientemente de cualquier evento. Cuando la red vuelve a cambiar a una conexión ilimitada, puede restablecer el valor predeterminado configurando el parámetro DEFAULT preestablecido.
También puedes fijar el valor de la tasa de bits bruta para establecer un umbral superior de ancho de banda.
Para obtener más información sobre cada Client SDK, consulte lo siguiente:
Los detalles sobre el uso de Publisher Max Bitrate en Vonage Video macOS Client SDK son los mismos que en Linux Client SDK.
En properties prop del componente OTPublisher incluye un videoBitratePreset propiedad. Establézcala a uno de los siguientes valores de cadena para que el editor utilice una configuración de tasa de bits de vídeo preestablecida: default, bw_savero extra_bw_saver. Véase Preajustes de velocidad de bits de vídeo para más detalles sobre estos preajustes.
Ejemplo:
<OTPublisher
properties={{
videoBitratePreset: 'bw_saver',
// ... other properties
}}
/>
En videoBitratePreset se ignora si la propiedad maxVideoBitrate (descrita en la sección siguiente). Si no se define ninguna de las dos, el editor utilizará la configuración predeterminada.
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
En properties prop del componente OTPublisher incluye un maxVideoBitrate propiedad. Para establecer el valor máximo de bitrate (en lugar de un valor preestablecido), establece esta propiedad en un valor entre 5.000 y 10.000.000 (en bits por segundo).
Ejemplo:
<OTPublisher
properties={{
maxVideoBitrate: 500000,
// ... other properties
}}
/>
En maxVideoBitrate tiene prioridad sobre la propiedad videoBitratePreset (descrita en la sección anterior). Si ambas están activadas, sólo la propiedad maxVideoBitrate . Si no se establece ninguna de las dos, el editor utiliza el preajuste predeterminado.
Tenga en cuenta que la API es compatible con las versiones recientes de todos los navegadores compatibles. Si encuentra errores, asegúrese de que el cliente utiliza una versión actualizada del navegador.
El objeto Editor incluye setVideoBitratePreset() y
getVideoBitratePreset() métodos. El sitio setVideoBitratePreset() acepta
valores de cadena - 'DEFAULT', 'BW_SAVER', o 'EXTRA_BW_SAVER' (o sus
minúsculas) - y el método getVideoBitratePreset() devuelve estos valores
valores (o 'CUSTOM'). Véase Preajustes de velocidad de bits de vídeo para
más detalles sobre estos preajustes.
Tenga en cuenta que getVideoBitratePreset()
el método devuelve undefined si no se ha establecido previamente ningún preajuste o tasa de bits.
En setVideoBitratePreset() tiene un parámetro: preset, la presintonía deseada.
Ejemplo:
console.log(publisher.getVideoBitratePreset()); // undefined
await publisher.setVideoBitratePreset('BW_SAVER'); // or 'DEFAULT' or 'EXTRA_BW_SAVER'
console.log(publisher.getVideoBitratePreset()); // 'BW_SAVER'
En setVideoBitratePreset() puede lanzar un error con el método name del objeto de error con el siguiente valor:
OT_INVALID_PARAMETER- Preajuste no válido. Debe ser 'DEFAULT', 'BW_SAVER', o 'EXTRA_BW_SAVER'.OT_UNEXPECTED_ERROR_CODE- Se ha producido un error inesperado y la preselección no se ha actualizado.
Envuelve la llamada al setVideoBitratePreset() en un bloque try/catch, aunque el nombre de la preselección sea correcto:
const invalidPreset = 'VERY_FAST';
try {
await publisher.setVideoBitratePreset(invalidPreset);
} catch (err) {
console.error(err.name);
// 'OT_INVALID_PARAMETER'
}
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
Para obtener la tasa de bits de vídeo máxima establecida actualmente para un editor, llame a la función getMaxVideoBitrate() de un objeto Publisher. Devuelve la tasa de bits máxima establecida actualmente (en bits por segundo). Si no se establece ningún valor personalizado, la función devuelve undefined.
Ejemplo:
console.log(publisher.getMaxVideoBitrate());
Para establecer un valor de bitrate máximo personalizado (en lugar de uno preestablecido), utilice la opción setMaxVideoBitrate() de un objeto Publisher. Esta función tiene un único parámetro: bitrateBpsel bitrate máximo deseado (en bits por segundo), entre 5.000 y 10.000.000.
Ejemplo:
const new_bitrate = 300000; // 300 kbps
await publisher.setMaxVideoBitrate(new_bitrate);
En setMaxVideoBitrate() puede lanzar un error con el método name del objeto de error con el siguiente valor:
OT_INVALID_PARAMETER- Tasa de bits no válida. El valor debe ser 0 o un número entre 5000 y 10000000.OT_UNEXPECTED_ERROR_CODE- Se ha producido un error inesperado y no se ha actualizado la tasa de bits.
Envuelve la llamada al setVideoBitratePreset() en un bloque try/catch, aunque el número introducido sea válido.
Véase Ajuste de los valores de la tasa de bits bruta para más detalles.
Establecer el valor de bitrate máximo en 0 elimina cualquier limitación de bitrate establecida previamente, volviendo al comportamiento por defecto.
const zero_bitrate = 0; // no limitations
const int new_bitrate = 300000; // 300 kbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getMaxVideoBitrate() === 300000
publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getMaxVideoBitrate() === 0
natale-p marked this conversation as resolved.
Llamada al getVideoBitratePreset() tras establecer una tasa de bits personalizada distinta de 0 devuelve CUSTOM.
const zero_bitrate = 0; // no limitations
const new_bitrate = 1000000; // 1 mbps
publisher.setMaxVideoBitrate(new_bitrate);
// publisher.getVideoBitratePreset() === 'CUSTOM'
publisher.setMaxVideoBitrate(zero_bitrate);
// publisher.getVideoBitratePreset() === 'DEFAULT'
El indicador de tasa de bits bruta devuelve 0 cuando el editor utiliza un preajuste.
let bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setVideoBitratePreset('bw_saver);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setVideoBitratePreset('extra_bw_saver');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
publisher.setMaxVideoBitrate(200000);
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 200000
publisher.setVideoBitratePreset('default');
bitrateBps = publisher.getMaxVideoBitrate();
// bitrateBps === 0
En PublisherKit .VideoBitratePreset incluye valores preestablecidos:
VideoBitratePresetDefaultVideoBitratePresetBwSaverVideoBitratePresetExtraBwSaverVideoBitratePresetCustom
Véase Preajustes de velocidad de bits de vídeo para más detalles sobre estos preajustes.
Para recuperar la tasa de bits de vídeo actualmente configurada para un editor determinado, llame a la función PublisherKit.getVideoBitratePreset() método:
PublisherKit.VideoBitratePreset retrievedBitratePreset = publisherKit.getVideoBitratePreset();
System.out.println("The video bitrate preset is: " + retrievedBitratePreset);
Para establecer una preselección, llame al PublisherKit.setVideoBitratePreset() método. Este método incluye un parámetro: preset - un valor de la VideoBitratePreset enum. No utilice VideoBitratePresetCustom.
Ejemplo:
PublisherKit.VideoBitratePreset bitratePreset = PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver;
publisherKit.setVideoBitratePreset(bitratePreset);
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
Para obtener la tasa de bits de vídeo máxima establecida actualmente para un editor, llame a la función PublisherKit.getMaxVideoBitrate() método. Devuelve la tasa de bits máxima establecida actualmente (en bits por segundo). Si no se establece ningún valor personalizado, el método devuelve 0.
Ejemplo:
int retrievedMaxVideoBitrate = publisherKit.getMaxVideoBitrate();
System.out.println("The maximum video bitrate is: " + retrievedMaxVideoBitrate + " kbps");
Para establecer un valor de bitrate máximo personalizado (en lugar de uno preestablecido), utilice la opción PublisherKit.setMaxVideoBitrate() método. Este método tiene un parámetro: maxVideoBitrateel bitrate máximo deseado (en bits por segundo). La dirección maxVideoBitrate debe estar comprendido entre 5.000 y 10.000.000.
Ejemplo:
int maxVideoBitrate = 300000; // 300 kbps
publisherKit.setMaxVideoBitrate(maxVideoBitrate);
Véase Ajuste de los valores de la tasa de bits bruta para más detalles.
Al establecer el valor de la tasa de bits bruta en 0 se elimina cualquier limitación de la tasa de bits establecida previamente, volviendo al comportamiento predeterminado.
int zeroBitrate = 0; // No limitations
int newBitrate = 300000; // 300 kbps
// Set the maximum video bitrate
publisherKit.setMaxVideoBitrate(newBitrate);
// Validate that the bitrate was set correctly
if (publisherKit.getMaxVideoBitrate() == newBitrate) {
System.out.println("Max video bitrate set successfully to: " + newBitrate);
}
// Reset the maximum video bitrate to the default behavior
publisherKit.setMaxVideoBitrate(zeroBitrate);
// Validate that the bitrate was reset to default
if (publisherKit.getMaxVideoBitrate() == zeroBitrate) {
System.out.println("Max video bitrate reset to default.");
}
Llamada al getVideoBitratePreset() después de establecer una tasa de bits personalizada devuelve VideoBitratePresetCustom.
int newBitrate = 1000000; // 1 Mbps
// Set a custom bitrate
publisherKit.setMaxVideoBitrate(newBitrate);
// Validate that the preset is set to CUSTOM
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetCustom) {
System.out.println("Video bitrate preset set to CUSTOM.");
}
// Reset bitrate to default
publisherKit.setMaxVideoBitrate(zeroBitrate);
// Validate that the preset is reset to DEFAULT
if (publisherKit.getVideoBitratePreset() == PublisherKit.VideoBitratePreset.VideoBitratePresetDefault) {
System.out.println("Video bitrate preset reset to DEFAULT.");
}
En PublisherKit.getMaxVideoBitrate() devuelve 0 cuando el editor está utilizando un preajuste.
// Get the current raw bitrate (default should be 0)
int bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set the preset to BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set the preset to EXTRA_BW_SAVER
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetExtraBwSaver);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
// Set a custom bitrate
publisherKit.setMaxVideoBitrate(200000);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 200000;
// Reset the preset to DEFAULT
publisherKit.setVideoBitratePreset(PublisherKit.VideoBitratePreset.VideoBitratePresetDefault);
bitrateBps = publisherKit.getMaxVideoBitrate();
assert bitrateBps == 0;
En OTVideoBitratePreset incluye valores preestablecidos:
OTVideoBitratePresetDefaultOTVideoBitratePresetBwSaverOTVideoBitratePresetExtraBwSaverOTVideoBitratePresetCustom
Véase Preajustes de velocidad de bits de vídeo para más detalles sobre estos preajustes.
Para recuperar el preajuste de velocidad de bits de vídeo configurado actualmente para un editor determinado, establezca la opción OTPublisherKit.videoBitratePreset propiedad:
OTVideoBitratePreset retrievedBitratePreset = publisher.videoBitratePreset;
NSLog(@"The video bitrate preset is: %ld", (long)retrievedBitratePreset);
Para establecer una preselección, asigne un valor a la tecla videoBitratePreset propiedad. Esta propiedad acepta uno de los valores de la propiedad OTVideoBitratePreset
excepto para OTVideoBitratePresetCustom.
Ejemplo:
publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
Para obtener la tasa de bits de vídeo máxima establecida actualmente para un editor, compruebe la opción OTPublisherKit.maxVideoBitrate propiedad. Establece el bitrate máximo (en bits por segundo). Si no se establece ningún valor personalizado, la propiedad se establece en 0.
Ejemplo:
int retrievedMaxVideoBitrate = publisher.maxVideoBitrate;
NSLog(@"The maximum video bitrate is: %d kbps", retrievedMaxVideoBitrate);
Para utilizar un valor de bitrate máximo personalizado (en lugar de uno preestablecido), establezca el parámetro OTPublisherKit.maxVideoBitrate propiedad. Esta propiedad acepta valores entre 5.000 y 10.000.000 (en bits por segundo).
Ejemplo:
publisher.maxVideoBitrate = 300000; // 300 kbps
Véase Ajuste de los valores de la tasa de bits bruta para más detalles.
Al establecer el valor de la tasa de bits bruta en 0 se elimina cualquier limitación de la tasa de bits establecida previamente, volviendo al comportamiento predeterminado.
publisher.maxVideoBitrate = 300000; // Set the maximum video bitrate to 300 kbps
NSLog(@"Max video bitrate set successfully to: %d", publisher.maxVideoBitrate);
publisher.maxVideoBitrate = 0; // Reset the maximum video bitrate to the default behavior
NSLog(@"Max video bitrate reset to default: %d", publisher.maxVideoBitrate);
Después de establecer una tasa de bits personalizada, el videoBitratePreset se establece en OTVideoBitratePresetCustom.
publisher.maxVideoBitrate = 1000000; // Set a custom bitrate to 1 Mbps
if (publisher.videoBitratePreset == OTVideoBitratePresetCustom) {
NSLog(@"Video bitrate preset set to CUSTOM.");
}
publisher.maxVideoBitrate = 0; // Reset bitrate to default
if (publisher.videoBitratePreset == OTVideoBitratePresetDefault) {
NSLog(@"Video bitrate preset reset to DEFAULT.");
}
En publisher.maxVideoBitrate se establece en 0 cuando el editor utiliza un preajuste.
NSLog(@"Default bitrate: %d", publisher.maxVideoBitrate); // Default should be 0
publisher.videoBitratePreset = OTVideoBitratePresetBwSaver;
NSLog(@"Bitrate for BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0
publisher.videoBitratePreset = OTVideoBitratePresetExtraBwSaver;
NSLog(@"Bitrate for EXTRA_BW_SAVER preset: %d", publisher.maxVideoBitrate); // Should be 0
publisher.maxVideoBitrate = 200000; // Set a custom bitrate
NSLog(@"Custom bitrate: %d", publisher.maxVideoBitrate);
publisher.videoBitratePreset = OTVideoBitratePresetDefault; // Reset to default preset
NSLog(@"Bitrate after reset to DEFAULT preset: %d", publisher.maxVideoBitrate); // Should be 0
En VideoBitratePreset incluye valores preestablecidos:
DefaultBwSaverExtraBwSaverCustom
Véase Preajustes de velocidad de bits de vídeo para más detalles sobre estos preajustes.
Para recuperar el preajuste de velocidad de bits de vídeo actualmente configurado para un editor determinado, acceda a la función Publisher.VideoBitratePreset propiedad:
var preset = publisher.VideoBitratePreset;
if (preset == VideoBitratePreset.BwSaver)
{
Console.WriteLine("The publisher is using the BW_SAVER preset.");
}
Para establecer una preselección, pulse el botón Publisher.VideoBitratePreset a un valor de la propiedadVideoBitratePreset enum. No utilice la función Custom valor.
Ejemplo:
publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
Console.WriteLine("Bitrate preset successfully set to BW_SAVER.");
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
Para obtener la tasa de bits de vídeo máxima actual (en bits por segundo), acceda a la función Publisher.MaxVideoBitrate propiedad. Si no se establece ningún valor personalizado, se establece en 0.
Ejemplo:
int maxBitrate = publisher.MaxVideoBitrate;
Console.WriteLine($"Current max video bitrate: {maxBitrate} bps");
Para establecer una tasa de bits máxima personalizada (en lugar de una preestablecida), asigne un valor (entre 5.000 y 10.000.000) al botón MaxVideoBitrate propiedad.
Ejemplo:
int newBitrate = 300000; // 300 kbps
publisher.MaxVideoBitrate = newBitrate;
Console.WriteLine($"Successfully set max video bitrate to {newBitrate} bps.");
Véase Ajuste de los valores de la tasa de bits bruta para más detalles.
Al establecer el valor de la tasa de bits bruta en 0 se elimina cualquier limitación de la tasa de bits establecida previamente, volviendo al comportamiento predeterminado.
int zeroBitrate = 0; // no limitations
int newBitrate = 300000;
publisher.MaxVideoBitrate = newBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == newBitrate);
publisher.MaxVideoBitrate = zeroBitrate;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == zeroBitrate);
La configuración de una tasa de bits personalizada hace que el VideoBitratePreset que debe establecerse en VideoBitratePreset.Custom:
publisher.MaxVideoBitrate = 1000000; // 1 Mbps
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Custom);
publisher.MaxVideoBitrate = 0;
System.Diagnostics.Debug.Assert(publisher.VideoBitratePreset == VideoBitratePreset.Default);
En MaxVideoBitrate devuelve 0 cuando el editor está utilizando un preajuste:
publisher.VideoBitratePreset = VideoBitratePreset.BwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
publisher.VideoBitratePreset = VideoBitratePreset.ExtraBwSaver;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
publisher.MaxVideoBitrate = 200000;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 200000);
publisher.VideoBitratePreset = VideoBitratePreset.Default;
System.Diagnostics.Debug.Assert(publisher.MaxVideoBitrate == 0);
En otc_video_bitrate_preset enum, en el publisher.h incluye valores preestablecidos:
OTC_VIDEO_BITRATE_PRESET_DEFAULTOTC_VIDEO_BITRATE_PRESET_BW_SAVEROTC_VIDEO_BITRATE_PRESET_EXTRA_BW_SAVEROTC_VIDEO_BITRATE_PRESET_CUSTOM
Véase Preajustes de velocidad de bits de vídeo para más detalles sobre estos preajustes.
Para recuperar la tasa de bits de vídeo actualmente configurada para un editor determinado, llame a la función otc_publisher_get_video_bitrate_preset() función:
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 establecer una preselección, llame al otc_publisher_set_video_bitrate_preset() función. Esta función incluye dos parámetros:
publisher- Un puntero a la instancia otc_publisher.preset- Un valor deotc_video_bitrate_preset. No utilizarOTC_VIDEO_BITRATE_PRESET_CUSTOM.
La función devuelve uno de estos valores:
OTC_SUCCESS- El preajuste se ha aplicado correctamente.OTC_ERROR_INVALID_PARAMETER- El editor proporcionado es NULL o el preajuste no es válido.
Ejemplo:
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");
}
Si los preajustes predefinidos no son adecuados, puedes establecer manualmente un valor de tasa de bits brutos personalizado.
Para obtener la tasa de bits de vídeo máxima establecida actualmente para un editor, llame a la función otc_publisher_get_max_video_bitrate() función. Devuelve la tasa de bits máxima establecida actualmente (en bits por segundo). Si no se establece ningún valor personalizado, la función devuelve 0.
Ejemplo:
int max_bitrate = otc_publisher_get_max_video_bitrate(publisher);
printf("Current max video bitrate: %d bps\n", max_bitrate);
Para establecer un valor de bitrate máximo personalizado (en lugar de uno preestablecido), utilice la opción otc_publisher_set_max_video_bitrate() función. Esta función tiene los siguientes parámetros:
publisher- Un puntero a una instancia existente de otc_publisher.bitrate_bps- El bitrate máximo deseado (en bits por segundo). Debe estar entre 5.000 y 10.000.000. La función devuelve uno de los siguientes valores:OTC_SUCCESS- La tasa de bits se ha aplicado correctamente.OTC_ERROR_INVALID_PARAMETER- El puntero del editor esNULLobitrate_bpsestá fuera de rango. Ejemplo:
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");
}
Véase Ajuste de los valores de la tasa de bits bruta para más detalles.
Al establecer el valor de la tasa de bits bruta en 0 se elimina cualquier limitación de la tasa de bits establecida previamente, volviendo al comportamiento predeterminado.
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);
}
Llamada al (otc_publisher_get_video_bitrate_preset()) después de establecer una tasa de bits personalizada devuelve 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);
}
El indicador de tasa de bits bruta devuelve 0 cuando el editor utiliza un preajuste.
// 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);
Buenas prácticas
Para garantizar el mejor rendimiento y un uso óptimo del ancho de banda, siga estas prácticas recomendadas:
Uso de tasas de bits predefinidas - Siempre que sea posible, utilice las tasas de bits predefinidas (
DEFAULT,BW_SAVER,EXTRA_BW_SAVER) para gestionar la calidad de vídeo. Estos preajustes se adaptan a situaciones habituales, como las videoconferencias, y garantizan el equilibrio entre la calidad de vídeo y la eficiencia del ancho de banda. Y lo que es más importante, abstraen los detalles de los códecs y los modos multimedia.Cuidado con los ajustes personalizados de bitrate - Aunque los ajustes personalizados de la tasa de bits te dan más control, su uso está ligado a detalles del códec que pueden cambiar durante la fase de negociación de WebRTC. Recomendamos utilizarlos con moderación y solo cuando sea necesario un umbral estricto de la tasa de bits.
No apliques tasas de bits personalizadas ni preajustes a los flujos de pantalla compartida - La codificación de flujos de pantalla compartida difiere de la codificación de flujos de cámara. El uso de la API de tasa de bits máxima para limitar un flujo de pantalla compartida puede degradar la calidad sin ofrecer ninguna mejora de ancho de banda.