Utiliza la API de audio fallback para priorizar dinámicamente el audio en respuesta a la calidad de la red.

Notas: En PublisherKit.setAudioFallbackEnabled() y PublisherKit.getAudioFallbackEnabled() quedarán obsoletos. Utilice los métodos PublisherKit.Builder.publisherAudioFallbackEnabled() y PublisherKit.Builder.subscriberAudioFallbackEnabled() en su lugar.

Enabling and disabling audio-only fallback

Para activar el audio fallback del editor, llame a la función PublisherKit.Builder.publisherAudioFallbackEnabled() al crear el editor.

// Enable publisher audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(true)
  .build();

// Enable publisher audio fallback and disable subscriber audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(true)
  .subscriberAudioFallbackEnabled(false)
  .build();

// Enable subscriber audio fallback and disable publisher audio fallback
mPublisher = new Publisher.Builder(context)
  .publisherAudioFallbackEnabled(false)
  .subscriberAudioFallbackEnabled(true)
  .build();

Para activar y desactivar el audio fallback de abonado (para todos los abonados al flujo), llame a la función PublisherKit.Builder.subscriberAudioFallbackEnabled() al crear el editor. El audio fallback del suscriptor sólo se admite en sesiones enrutadas (sesiones que utilizan la función 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.

Audio fallback events

Cuando está activada la función fallback de audio del editor, los métodos callback de la función PublisherKit.VideoListener se invocan para los eventos relacionados con la caída de audio del editor:

  • PublisherKit.VideoListener.onVideoDisableWarning() - 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.
  • PublisherKit.VideoListener.onVideoDisableWarningLifted() - Se activa cuando el Editor determina que la calidad de la transmisión ha mejorado hasta el punto en que la desactivación del vídeo no supone un riesgo inmediato.
  • PublisherKit.VideoListener.onVideoDisabled() - Se ejecuta cuando el editor determina que la calidad del flujo se ha degradado y el transporte de vídeo saliente se ha desactivado. Nota: mientras 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. PublisherKit.VideoListener.onVideoEnabled() - Llamada con la razón "calidad" cuando el Editor determina que la calidad del flujo ha mejorado y el transporte de vídeo saliente se ha vuelto a habilitar. Por ejemplo, el siguiente código gestiona los eventos relacionados (para que pueda proporcionar sus propias notificaciones de interfaz de usuario):
@Override
public void onVideoDisableWarning(PublisherKit publisher) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoDisableWarningLifted(PublisherKit publisher) {
  // Custom action — for example, remove custom UI notification
}

@Override
public void onVideoDisabled(PublisherKit publisher, String reason) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoEnabled(PublisherKit subscriber, String reason) {
  // Custom action — for example, remove custom UI notification
}

Desde la perspectiva del abonado, los siguientes eventos indican que se ha producido un fallo de audio. Aunque estos eventos están vinculados al abonado, pueden ocurrir tanto debido al fallback de audio del abonado como a consecuencia del fallback de audio del editor. En otras palabras la diferencia entre el fallback de audio del editor y del suscriptor es que, en el caso del editor, el cliente de publicación puede activar el fallback de audio basado en su propio flujo. audio fallback basándose en la degradación de su propio flujo, razón por la cual se envían eventos adicionales del lado del editor. Para la recuperación de audio del suscriptor del suscriptor, el enrutador de medios de video de Vonage evalúa la degradación de la red que afecta al suscriptor. En ambos casos, en caso de audio del editor o del suscriptor, siempre se envían eventos del suscriptor para indicar que se ha producido una caída de audio para el receptor.

Cuando se produce un fallback de audio, los métodos de callback de la función SubscriberKit.VideoListener se invocan para los eventos relacionados con la caída de audio del abonado:

SubscriberKit.VideoListener.onVideoDisableWarning() - Llamada cuando se determina que la calidad del flujo se ha degradado y el vídeo se desactivará si la calidad se degrada más. SubscriberKit.VideoListener.onVideoDisableWarningLifted() - 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. SubscriberKit.VideoListener.onVideoDisabled() - Llamada cuando se determina que la calidad del flujo se ha degradado y se ha desactivado el transporte de vídeo saliente. Nota: mientras el vídeo está deshabilitado, 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. SubscriberKit.VideoListener.onVideoEnabled() - 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):


@Override
public void onVideoDisableWarning(SubscriberKit subscriber) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoDisableWarningLifted(SubscriberKit subscriber) {
  // Custom action — for example, remove custom UI notification
}

@Override
public void onVideoDisabled(SubscriberKit subscriber, String reason) {
  // Custom action — for example, add custom UI notification
}

@Override
public void onVideoEnabled(SubscriberKit subscriber, String reason) {
  // Custom action — for example, remove custom UI notification
}