Abonnieren: Diagnostik

Verwenden Sie diesen Leitfaden, um Stream-Details zu prüfen, das Ende von Streams zu erkennen und häufige Teilnehmerprobleme zu beheben. Er enthält auch Hinweise zur Behandlung von Verbindungsproblemen in der Benutzeroberfläche.

Informationen zum Stream

Abrufen von Diagnosedetails für aktive Streams zur Unterstützung von Fehlersuche und Analyse.

Um Audio- und Videostatistiken für Abonnenten zu erhalten, fügen Sie Ereignisbehandler für die audioNetworkStats und videoNetworkStats Ereignis, das vom OTSubscriber ausgelöst wird. Sie enthalten Informationen über den Stream des Abonnenten, darunter die folgenden:

  • Die Gesamtzahl der verlorenen Audio- und Videopakete.
  • Die Gesamtzahl der empfangenen Audio- und Videopakete.
  • Die Gesamtzahl der empfangenen Audio- und Videobytes.
  • Die aktuelle durchschnittliche Videobildrate.
<OTSubscriber
  eventHandlers={{
    audioNetworkStats: event => {
      console.log('subscriber audioNetworkStats event', event);
    },
    videoNetworkStats: event => {
      console.log('subscriber videoNetworkStats event', event);
    },
  }}
/>

Um detailliertere Stream-Statistiken zu erhalten, verwenden Sie die Subscriber.getRtcStatsReport() Methode des OTSubscriber-Objekts. Sie gibt ein Versprechen zurück, das im Erfolgsfall mit einer JSON-Darstellung eines RtcStatsReport Objekt für den abonnierten Stream:

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

Erkennen von Stream-Ende und deaktiviertem Video

Erkennen Sie, wann ein Stream endet, damit Sie die Bereinigung durchführen und die Benutzeroberfläche anpassen können.

Wenn das Video eines Abonnenten deaktiviert wird, sendet das OTSubscriber-Objekt eine videoDisabled Veranstaltung:

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

Wenn der Media Router das Video eines Teilnehmers deaktiviert, möchten Sie möglicherweise die Benutzeroberfläche für den Teilnehmer anpassen.

Die reason Eigenschaft der videoDisabled Ereignisobjekt definiert den Grund, warum das Video deaktiviert wurde. Dieser kann auf einen der folgenden Werte gesetzt werden:

  • "PublisherPropertyChanged" - Der Verlag hat die Veröffentlichung von Videos eingestellt.

  • "QualityChanged" - Der Media Router hat das Senden von Video an den Teilnehmer aufgrund von Änderungen der Streamqualität eingestellt. Mit dieser Funktion des Media Routers wird der Videostream eines Teilnehmers bei einer Verschlechterung der Konnektivität unterbrochen. (Der Teilnehmer empfängt weiterhin den Audiostream, sofern vorhanden.)

Vor dem Senden dieses Ereignisses, wenn sich die Streamqualität des Teilnehmers auf ein Niveau verschlechtert, das so niedrig ist, dass die Gefahr besteht, dass der Videostream deaktiviert wird, wird das OTSubscriber objet versendet eine videoDisableWarning Veranstaltung.

Wenn sich die Konnektivität so verbessert, dass wieder Video unterstützt wird, wird die OTSubscriber Objekt sendet eine videoEnabled und der Abonnent nimmt den Videoempfang wieder auf.

Diese Funktion ist nur in Sitzungen verfügbar, die die Medien-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), nicht aber in Sitzungen, bei denen der Medienmodus auf weitergeleitet eingestellt ist.

Wenn Sie einen Stream veröffentlichen, können Sie verhindern, dass das Video aufgrund der Streamqualität deaktiviert wird. einstellen audioFallbackEnabled zu false im properties Prop in die OTPublisher-Komponente übergeben.

  • "SubscriberPropertyChanged" - Der Abonnent hat das Videoabonnement gestartet oder gestoppt, indem er subscribeToVideo in der Eigenschaftsliste, die an die Funktion "Video" übergeben wird, auf false gesetzt hat. OTSubscriber Komponente.

  • "CodecNotSupported" - Der Abonnent hat das Videoabonnement aufgrund eines inkompatiblen Codecs beendet (siehe die Leitfaden für Entwickler von Videocodecs).

Die OTSubscriber Objektverteilungen videoEnabled Ereignis, wenn das Video fortgesetzt wird:

Die Eigenschaft reason des videoEnabled-Ereignisobjekts definiert den Grund, aus dem das Video aktiviert wurde. Diese Eigenschaft kann auf einen der folgenden Werte gesetzt werden:

  • "PublisherPropertyChanged" - Der Verlag hat die Veröffentlichung von Videos wieder aufgenommen.

  • "QualityChanged" - Der Media Router hat das Senden von Videos an den Abonnenten auf der Grundlage von Änderungen der Streamqualität wieder aufgenommen. Mit dieser Funktion des Medienrouters kann ein Teilnehmer den Videostream unterbrechen, wenn sich die Konnektivität verschlechtert, und den Videostream wieder aufnehmen, wenn sich die Qualität des Streams verbessert.

Diese Funktion ist nur in Sitzungen verfügbar, die den Medien-Router verwenden (Sitzungen, deren Medienmodus auf geroutet eingestellt ist), nicht in Sitzungen, deren Medienmodus auf weitergeleitet eingestellt ist.

  • "SubscriberPropertyChanged" - Der Abonnent hat ein Videoabonnement begonnen oder beendet, indem er subscribeToVideo in der Eigenschaftsliste, die an die Komponente OTSubscriber übergeben wird, auf false setzen.

  • "CodecNotSupported" - Das Teilnehmervideo wurde nach einem Codec-Wechsel von einem inkompatiblen Codec aktiviert (siehe die Leitfaden für Entwickler von Videocodecs).

Fehlersuche (JavaScript)

Tipps zum Umgang mit Anmeldefehlern und Konnektivitätsproblemen.

Allgemeine Informationen zur Fehlerbehebung finden Sie unter Fehlersuche.

Umgang mit Fehlern

Es gibt nur eine Möglichkeit, sich anzumelden - mit Session.subscribe()-und die meisten Fehler sind netzwerkbedingt. Wenn der Teilnehmer keine Verbindung herstellen kann, zeigt er seine eigene Fehlermeldung an, aber es ist besser, wenn Sie selbst eine klare Meldung anzeigen:

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

Verlust der Konnektivität

Ein Subscriber kann seine Verbindung verlieren, nachdem er sich verbunden hat. Behandeln Sie die streamDestroyed Ereignis auf der Sitzung, wenn der Grund ist networkDisconnected und informieren den Nutzer, ohne den Abonnenten sofort zu entfernen:

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();
      }
    }
  }
});

Für die Behandlung von Teilnehmerereignissen und Laufzeiteinstellungen (Audio blockiert, Video deaktiviert, Statistiken), siehe Abonnieren: Management & Veranstaltungen.