Solución alternativa de audio — iOS (Swift)
Utiliza la API de respaldo de audio de OpenTok para priorizar dinámicamente el audio en función de la calidad de la red.
Para obtener información conceptual, consulte el visión general del fallback de audio.
Notas:
- El
audioFallbackEnabledpropiedad deOTPublisherKitquedará obsoleto. Utiliza elsubscriberAudioFallbackEnabledpropiedad deOTPublisherKitSettingsen su lugar.
Este tema incluye las siguientes secciones:
Activación y desactivación de la opción de «solo audio» como alternativa
Para habilitar la opción de audio alternativa del editor, configura el OTPublisherKitSettings.publisherAudioFallbackEnabled al crear el editor.
// Enable publisher audio fallback
let publisherSettings = OTPublisherSettings()
publisherSettings.publisherAudioFallbackEnabled = YES
// Enable publisher audio fallback and disable subscriber audio fallback
let publisherSettings = OTPublisherSettings()
publisherSettings.publisherAudioFallbackEnabled = YES
publisherSettings.subscriberAudioFallbackEnabled = NO
// Enable subscriber audio fallback and disable publisher audio fallback
let publisherSettings = OTPublisherSettings()
publisherSettings.publisherAudioFallbackEnabled = NO
publisherSettings.subscriberAudioFallbackEnabled = YES
Para activar y desactivar el audio fallback de abonado (para todos los abonados al flujo), configure el parámetro OTPublisherKitSettings.subscriberAudioFallbackEnabled al crear el editor. El audio fallback del suscriptor sólo se admite en sesiones enrutadas (sesiones que utilizan la propiedad Router multimedia de vídeo de Vonage). El audio fallback de abonado está activado por defecto (en sesiones enrutadas) para flujos con una fuente de vídeo de cámara.
Eventos de alternativa de audio
Cuando está activada la reproducción de audio del editor, el PublisherKitDelegate enviará los siguientes mensajes relativos a eventos relacionados con la caída de audio del editor:
OTPublisherKitDelegate publisherVideoDisableWarning(_:)- Se activa cuando el Editor determina que la calidad del flujo se ha degradado y el vídeo se desactivará si la calidad se degrada más.OTPublisherKitDelegate publisherVideoDisableWarningLifted(_:)— Se activa cuando el editor determina que la calidad de la transmisión ha mejorado hasta el punto de que el vídeo que se va a desactivar ya no supone un riesgo inmediato.OTPublisherKitDelegate publisherVideoDisabled(_:reason:)— Se invoca cuando el editor determina que la calidad de la transmisión se ha deteriorado y se ha desactivado el transporte de vídeo saliente. Nota: aunque el vídeo esté desactivado, el editor sigue mostrando el vídeo del editor (como la imagen de la cámara) en la interfaz de usuario del cliente de publicación.OTPublisherKitDelegate publisherVideoEnabled(_:reason:)— Se denomina «calidad» cuando la editorial determina que la calidad de la transmisión ha mejorado y se ha reactivado el transporte de vídeo saliente.
Por ejemplo, el siguiente código gestiona los eventos relacionados (para que pueda proporcionar sus propias notificaciones de interfaz de usuario):
func publisherVideoDisableWarning(_ publisher: OTPublisherKit) {
// Custom action — for example, add custom UI notification
}
func publisherVideoDisableWarningLifted(_ publisher: OTPublisherKit) {
// Custom action — for example, remove custom UI notification
}
func publisherVideoDisabled(_ publisher: OTPublisherKit, reason: OTPublisherVideoEventReason) {
// Custom action — for example, add custom UI notification
}
func publisherVideoEnabled(_ publisher: OTPublisherKit, reason: OTPublisherVideoEventReason) {
// Custom action — for example, remove custom UI notification
}
Desde la perspectiva del suscriptor, los siguientes eventos indican que se ha producido un cambio a audio alternativo. Aunque estos eventos están vinculados al suscriptor, pueden producirse tanto debido a un cambio a audio alternativo por parte del suscriptor como a raíz de un cambio a audio alternativo por parte del editor. En otras palabras, la diferencia entre la conmutación de audio del editor y la del suscriptor radica en que, en el caso del editor, el cliente editor puede activar la conmutación de audio en función de la degradación de su propia transmisión, razón por la cual se envían eventos adicionales por parte del editor. En el caso de la conmutación de audio del suscriptor, el Vonage Video Media Router evalúa la degradación de la red que afecta al suscriptor. En ambos casos, tras la conmutación de audio del editor o del suscriptor, siempre se envían eventos del suscriptor para indicar que se ha producido una conmutación de audio para el receptor.
Cuando se produce un cambio a un formato de audio alternativo, el SubscriberKitDelegate El objeto enviará los siguientes mensajes relacionados con los eventos de recambio de audio del suscriptor:
OTSubscriberKitDelegate subscriberVideoDisableWarning(_:)— Se activa cuando se detecta que la calidad de la transmisión se ha deteriorado y el vídeo se desactivará si la calidad sigue empeorando.OTSubscriberKitDelegate subscriberVideoDisableWarningLifted(_:)- Llamada cuando se determina que la calidad del flujo ha mejorado hasta el punto en que el vídeo desactivado no supone un riesgo inmediato.OTSubscriberKitDelegate subscriberVideoDisabled(_:reason:)— Se invoca cuando se determina que la calidad de la transmisión se ha deteriorado y se ha desactivado el transporte de vídeo de salida. Nota: aunque el vídeo esté desactivado, el suscriptor sigue mostrando el vídeo del suscriptor (como la imagen de la cámara) en la interfaz de usuario del cliente de publicación.OTSubscriberKitDelegate subscriberVideoEnabled(_:reason:)- Llamada con motivo "calidad" cuando se determina que la calidad del flujo ha mejorado y se ha vuelto a habilitar el transporte de vídeo saliente.
Por ejemplo, el siguiente código gestiona los eventos relacionados (para que pueda proporcionar sus propias notificaciones de interfaz de usuario):
func subscriberVideoDisableWarning(_ subscriber: OTSubscriberKit) {
// Custom action — for example, add custom UI notification
}
func subscriberVideoDisableWarningLifted(_ subscriber: OTSubscriberKit) {
// Custom action — for example, remove custom UI notification
}
func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
// Custom action — for example, add custom UI notification
}
func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
// Custom action — for example, remove custom UI notification
}