Suscríbase: Diagnóstico

Utilice esta guía para inspeccionar los detalles de los flujos, detectar cuándo finalizan y resolver los problemas más comunes de los abonados. También incluye consejos para solucionar problemas de conectividad en la interfaz de usuario.

Información sobre el flujo

El SDK de video de Vonage expone métricas detalladas de la calidad de la transmisión a través de una API de estadísticas de alto nivel, recomendada para la mayoría de los casos de uso, que proporciona estadísticas de audio, video, red y del lado del emisor en una forma unificada y consciente de la sesión que permanece estable a través de las transiciones de conexión entre pares. Para la depuración avanzada, el SDK también ofrece acceso al informe de estadísticas WebRTC sin procesar, que refleja los datos de la conexión entre pares sin procesar.

Consulte guía del desarrollador de la observabilidad del cliente para obtener información detallada.

También puede obtener detalles de diagnóstico de los flujos activos para facilitar la depuración y el análisis.

Para obtener las estadísticas de audio y vídeo de los abonados, añada controladores de eventos para los botones audioNetworkStats y videoNetworkStats enviados por el OTSubscriber. Proporcionan información sobre el flujo del suscriptor, incluyendo lo siguiente:

  • Número total de paquetes de audio y vídeo perdidos.
  • Número total de paquetes de audio y vídeo recibidos.
  • Número total de bytes de audio y vídeo recibidos.
  • La frecuencia de imagen de vídeo media actual.
<OTSubscriber
  eventHandlers={{
    audioNetworkStats: event => {
      console.log('subscriber audioNetworkStats event', event);
    },
    videoNetworkStats: event => {
      console.log('subscriber videoNetworkStats event', event);
    },
  }}
/>

Para obtener estadísticas de flujo más detalladas, utilice la función Subscriber.getRtcStatsReport() del objeto OTSubscriber. Devuelve una promesa que, en caso de éxito, se resuelve con una representación JSON de un objeto RtcStatsReport para el flujo suscrito:

<OTSubscriber
  eventHandlers={{
    connected: event => {
      setTimeout(() => {
        this.subscriber.getRtcStatsReport();
      }, 4000);
    },
    rtcStatsReport: event => {
      console.log('subscriber rtcStatsReport event', event);
    },
  }}
/>

Detectar el final del flujo y el vídeo desactivado

Detecta cuándo finaliza un flujo para que puedas realizar la limpieza y ajustar la interfaz de usuario.

Cuando se desactiva el vídeo de un abonado, el objeto OTSubscriber envía un mensaje videoDisabled evento:

<OTSubscriber
  eventHandlers={{
    videoDisabled: (event) => {
      console.log('stream video disabled -- stream ID:', event.streamId);
      // Display a user interface notification.
    },
  }}/>

Cuando el Media Router desactiva el vídeo de un abonado, es posible que desee ajustar la interfaz de usuario relacionada con el abonado.

En reason propiedad del videoDisabled define la razón por la que se ha desactivado el vídeo. Se puede establecer en uno de los siguientes valores:

  • "PublisherPropertyChanged" - El editor dejó de publicar vídeos.

  • "QualityChanged" - El Media Router dejó de enviar vídeo al abonado basándose en los cambios de calidad del flujo. Esta función del Media Router hace que el abonado abandone el flujo de vídeo cuando la conectividad se degrada. (El abonado sigue recibiendo el flujo de audio, si lo hay).

Antes de enviar este evento, cuando la calidad del flujo del abonado se deteriora hasta un nivel lo suficientemente bajo como para que el flujo de vídeo corra el riesgo de quedar inhabilitado, el programa OTSubscriber objet despacha un videoDisableWarning evento.

Si la conectividad mejora para volver a soportar vídeo, el OTSubscriber envía un videoEnabled y el abonado reanuda la recepción de vídeo.

Esta función sólo está disponible en las sesiones que utilizan la función Router multimedia (sesiones con el modo de medios configurado como enrutado), no en sesiones con el modo de medios configurado como retransmitido.

Al publicar un flujo, puede evitar que se desactive su vídeo debido a la calidad del flujo. Establezca audioFallbackEnabled a false en el properties prop en el componente OTPublisher.

  • "SubscriberPropertyChanged" - El suscriptor inició o detuvo la suscripción a vídeo, estableciendo subscribeToVideo en false en las propiedades prop pasadas a la acción OTSubscriber componente.

  • "CodecNotSupported" - El abonado ha dejado de abonarse al vídeo debido a un códec incompatible (consulte la sección Guía del desarrollador de códecs de vídeo).

En OTSubscriber envíos de objetos videoEnabled cuando se reanude el vídeo:

La propiedad reason del objeto de evento videoEnabled define la razón por la que se habilitó el vídeo. Puede tener uno de los siguientes valores:

  • "PublisherPropertyChanged" - El editor reanudó la publicación del vídeo.

  • "QualityChanged" - El Media Router reanuda el envío de vídeo al abonado basándose en los cambios de calidad del flujo. Esta función del Media Router hace que el abonado abandone el flujo de vídeo cuando la conectividad se degrada y lo reanude si la calidad del flujo mejora.

Esta función sólo está disponible en sesiones que utilizan el enrutador de medios (sesiones con el modo de medios establecido en enrutado), no en sesiones con el modo de medios establecido en retransmitido.

  • "SubscriberPropertyChanged" - El abonado inició o interrumpió la suscripción a vídeo, configurando subscribeToVideo a false en las propiedades prop pasadas al componente OTSubscriber.

  • "CodecNotSupported" - El vídeo de abonado se habilitó después de un cambio de códec incompatible (consulte la sección Guía del desarrollador de códecs de vídeo).

Solución de problemas (JavaScript)

Consejos para gestionar los errores de suscripción y los problemas de conectividad.

Para obtener información general sobre la solución de problemas, consulte Inspector de vídeo.

Tratamiento de errores

Sólo hay una forma de suscribirse: con Session.subscribe()-y la mayoría de los errores están relacionados con la red. Si el abonado no consigue conectarse, mostrará su propio mensaje de error, pero es mejor que usted mismo emita un mensaje claro:

session.subscribe(event.stream, 'subscriber', {insertMode: 'append'}, function (err) {
  if (err) {
    showMessage('Streaming connection failed. This could be due to a restrictive firewall.');
  }
});

Perder conectividad

Un abonado puede perder su conexión después de haberse conectado. Manejar el streamDestroyed en la sesión cuando el motivo es networkDisconnected e informar al usuario sin dar de baja al Abonado inmediatamente:

session.on({
  streamDestroyed: function (event) {
    if (event.reason === 'networkDisconnected') {
      event.preventDefault();
      var subscribers = session.getSubscribersForStream(event.stream);
      if (subscribers.length > 0) {
        var subscriber = document.getElementById(subscribers[0].id);
        subscriber.innerHTML = 'Lost connection. This could be due to your internet connection or because the other party lost their connection.';
        event.preventDefault();
      }
    }
  }
});

Para la gestión de eventos de abonado y los ajustes en tiempo de ejecución (audio bloqueado, vídeo desactivado, estadísticas), consulte Suscríbase: Gestión y Eventos.