Ajustar el audio y el vídeo — Linux
Puedes realizar ajustes de audio y vídeo en publicado y suscrito fuentes:
- Publicar sólo audio o vídeo
- Publicar en una sesión solo de voz
- Uso de un capturador de vídeo personalizado
- Duplicar la visualización local del vídeo de un editor
- Uso de un controlador de audio personalizado
- Ajustar el volumen del audio de un abonado
- Suscribirse solo a contenido de audio o vídeo
- Detectar si un flujo tiene audio o vídeo
- Ajuste de la calidad del audio
- Configuración de las preferencias de reducción de calidad de los vídeos del editor
Publicar sólo audio o vídeo
Puedes activar o desactivar el audio y el vídeo llamando a la función otc_publisher_set_publish_audio() y otc_publisher_set_publish_video() funciones, pasando como parámetro OTC_FALSE o OTC_FALSE como el publish_audio y publish_audio parámetros. Por ejemplo, el siguiente código desactiva el audio:
otc_publisher_set_publish_audio(publisher, OTC_FALSE);
Publicar en una sesión solo de voz
Para configurar un solo voz sesión, crear una instancia de un otc_publisher_settings struct, llama a la otc_publisher_settings_set_video_track() función, pasando como parámetro OTC_FALSE como el enabled parámetro. A continuación, utiliza el otc_publisher_new_with_settings() función que hay que crear. Por ejemplo, el siguiente código crea un editor para una sesión solo de voz:
otc_publisher_settings publisher_settings = otc_publisher_settings_new();
otc_publisher_settings_set_video_track(publisher_settings, OTC_FALSE);
otc_publisher_callbacks publisher_callbacks = {0};
// Set callbacks for the publisher. Then:
otc_publisher publisher = otc_publisher_new_with_settings(publisher_callbacks, publisher_settings);
Uso de un capturador de vídeo personalizado
El otc_publisher_new() La función incluye un capturer parámetro. Si lo configuras en NULL, el SDK utiliza la cámara predeterminada del sistema como fuente para la transmisión de vídeo publicada. No obstante, puedes utilizar un capturador de vídeo personalizado para el editor definiendo un otc_video_capturer_callbacks struct y pasándola como el capturer del otc_publisher_new() función. En otc_video_capturer_callbacks La estructura incluye punteros a funciones de devolución de llamada que se activan ante eventos relacionados con el vídeo del editor, como cuando el capturador de vídeo necesita un nuevo fotograma de vídeo.
Para ver un ejemplo, consulta el ejemplo «Custom Video Capturer» de la ejemplos-del-SDK-de-Vonage-para-Linux repo.
Duplicar la visualización local del vídeo de un editor
Por defecto, el renderizador local del vídeo publicado refleja el vídeo. Puede configurar el mirror_on_local_render propiedad del otc_video_capturer_settings que se obtiene llamando a la función get_capture_settings(capturer, settings) función. Configúrala en true para que el vídeo se duplique en el renderizador local del editor. Configúralo en false para que no se refleje.
Esta configuración solo afecta al vídeo reproducido en la aplicación cliente del editor. No tiene ningún efecto sobre el vídeo en los clientes suscritos.
Uso de un controlador de audio personalizado
Puedes definir un dispositivo de audio personalizado para proporcionar audio a todos los emisores del cliente y gestionar el flujo de audio mezclado procedente de todos los flujos a los que el cliente está suscrito.
Un dispositivo de audio personalizado se representa mediante un otc_audio_device struct. Y un otc_audio_device_callbacks La estructura incluye punteros a funciones que actúan como callbacks relacionados con el audio que invoca el SDK de OpenTok para Linux.
Para ver un ejemplo, consulta el ejemplo «Dispositivo de audio personalizado» en el ejemplos-del-SDK-de-Vonage-para-Linux repo.
Ajustar el volumen del audio de un abonado
Puede ajustar individualmente el volumen de audio para cada abonado llamando a la tecla otc_subscriber_set_audio_volume() función.
Suscribirse solo a contenido de audio o vídeo
De forma predeterminada, un suscriptor se configura para suscribirse al audio y al vídeo, si están disponibles. Puedes activar o desactivar el audio llamando a la función otc_subscriber_set_subscribe_to_audio(otc_subscriber *subscriber, otc_bool subscribe_to_audio) :
// audio off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// audio on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Puedes activar o desactivar el vídeo llamando al otc_subscriber_set_subscribe_to_video(otc_subscriber *subscriber, otc_bool subscribe_to_video) :
// video off:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_FALSE);
// video on:
otc_subscriber_set_subscribe_to_video(subscriber, OTC_TRUE);
Detectar si un flujo tiene audio o vídeo
Puedes llamar al otc_stream_has_audio() y otc_stream_has_audio() funciones miembro de un otc_stream por ejemplo, para comprobar si tiene audio o vídeo.
Ajuste de la calidad del audio
Para ajustar con precisión la calidad del audio de una transmisión de un editor, se pueden utilizar los siguientes métodos:
Velocidad de transmisión de audio
otc_publisher_set_max_audio_bitrate(otc_publisher* publisher, uint32_t bitrate);
El bitrate deseado para el audio publicado, en bits por segundo. El rango de valores admitido es de 6.000 - 510.000. (Los valores no válidos se ignoran). (Los valores no válidos se ignoran.) Establezca este valor para permitir audio de alta calidad (o para reducir el uso de ancho de banda con audio de menor calidad). Si no establece esta opción, OpenTok asigna automáticamente una tasa de bits de audio para el flujo.
A continuación se indican los ajustes recomendados:
- 8.000 - 12.000 para voz de banda estrecha (NB)
- 16.000 - 20.000 para voz de banda ancha (WB)
- Entre 28 000 y 40 000 para la voz en banda completa (FB)
- 48.000 - 64.000 para música de banda completa (FB)
Desactivar el procesamiento de audio
otc_publisher_settings_set_disable_audio_processing (otc_publisher_settings* settings, otc_bool disabled);
Si desea desactivar la cancelación de eco, el control automático de ganancia y la supresión de ruido para el audio publicado. Es posible que desee establecer esto en true al publicar audio de alta calidad. El valor por defecto es false.
Control automático de ganancia
otc_publisher_settings_set_auto_gain_control(otc_publisher_settings* settings, otc_bool enabled);
Si desea activar el control automático de ganancia para el audio publicado. Es posible que desee establecer esto en false al publicar audio de alta calidad. El valor por defecto es true. Esta configuración no se tiene en cuenta si desactivas el procesamiento de audio.
Cancelación de eco
otc_publisher_settings_set_echo_cancellation(otc_publisher_settings* settings, otc_bool enabled);
Si se desea activar la cancelación de eco para el audio publicado. Quizás te interese configurar esta opción en false al publicar audio de alta calidad. El valor por defecto es true. Esta configuración no se tiene en cuenta si desactivas el procesamiento de audio
Supresión del ruido
otc_publisher_settings_set_noise_suppression(otc_publisher_settings* settings, otc_bool enabled);
Si desea activar la supresión de ruido para el audio publicado. Es posible que desee establecer esto en false al publicar audio de alta calidad. El valor por defecto es true. Este ajuste se ignora si desactiva el procesamiento de audio.
Estéreo
otc_publisher_settings_set_stereo(otc_publisher_settings* settings, otc_bool enabled);
Si se publica audio estéreo. El valor por defecto es false.
Configuración de las preferencias de reducción de calidad de los vídeos del editor
Cuando el ancho de banda o la CPU son limitados, el motor de vídeo puede reducir la frecuencia de imagen y/o la resolución del vídeo del editor para ajustarse a las limitaciones.
La «preferencia de degradación» es un parámetro de configuración que permite ajustar este comportamiento.
Los desarrolladores son responsables de definir y aplicar las preferencias de degradación en función de sus casos de uso y requisitos.
Funciona como una opción de configuración, lo que significa que el motor de vídeo intentará seguir la opción seleccionada, pero no hay garantías sobre el resultado.
Esta preferencia puede comportarse de forma diferente cuando se utiliza vídeo escalabledonde el motor de vídeo puede decidir eliminar capas en lugar de degradar la resolución.
Sugerencia sobre el contenido y la preferencia de degradación sirven a propósitos diferentes pero relacionados: La sugerencia de contenido describe el tipo de contenido que se transmite, mientras que la preferencia de degradación controla la estrategia de codificación. Al definir una sugerencia de contenido, el motor de vídeo determina automáticamente la preferencia de degradación adecuada (por ejemplo, "texto" selecciona automáticamente mantener la resolución). Una preferencia de degradación establecida explícitamente anulará esta selección automática.
Puedes configurar este valor utilizando cualquiera de las opciones proporcionadas otc_degradation_preference valores:
No se ha establecido
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_NOT_SET);
El valor por defecto. El motor de vídeo determinará la preferencia de degradación óptima.
Mantener la frecuencia de fotogramas y la resolución
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE_AND_RESOLUTION);
El motor de vídeo intentará mantener constante la frecuencia de fotogramas y no reducir la resolución.
Mantener la frecuencia de fotogramas
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_FRAMERATE);
El motor de vídeo intentará mantener constante la frecuencia de fotogramas, pero podría reducir la resolución si fuera necesario.
Mantener la resolución
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_MAINTAIN_RESOLUTION);
El motor de vídeo no reducirá la resolución, pero podría reducir la frecuencia de fotogramas si fuera necesario.
Equilibrado
otc_publisher_set_degradation_preference(publisher, OTC_DEGRADATION_PREFERENCE_BALANCED);
El motor de vídeo intentará encontrar un equilibrio entre la reducción de la resolución y la frecuencia de fotogramas cuando sea necesario.