Veröffentlichen: Diagnostik
In diesem Leitfaden erfahren Sie, wie Sie Diagnosen für Verlage erstellen und häufige Probleme beheben können.
Abrufen von Statistiken über den Stream eines Verlegers
Das Vonage Video SDK stellt detaillierte Metriken zur Stream-Qualität über eine High-Level-Statistik-API zur Verfügung, die für die meisten Anwendungsfälle empfohlen wird und die Audio-, Video-, Netzwerk- und Absenderstatistiken in einer einheitlichen, sitzungsspezifischen Form bereitstellt, die über Peer-Verbindungsübergänge hinweg stabil bleibt. Für fortgeschrittenes Debugging bietet das SDK auch Zugriff auf den rohen WebRTC-Statistikbericht, der unverarbeitete Peer-Verbindungsdaten wiedergibt.
Siehe das Handbuch für Entwickler von Client Observability für detaillierte Informationen.
Test stream
Sie können einen Teststream veröffentlichen und dessen Audio- und Videostatistiken überprüfen, um die Art des Streams (z. B. hochauflösend oder nur Audio) zu ermitteln, die von Ihrer Verbindung unterstützt wird.
Um Statistiken für einen Stream zu erhalten, der vom lokalen Client veröffentlicht wurde, müssen Sie eine Sitzung verwenden, die den Media Router nutzt (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), und Sie müssen die Option testNetwork Eigenschaft zu true im options Objekt, das Sie an die Session.subscribe() Methode. Sie können dann die getStats() Methode des Subscriber-Objekts, um Audio- und Videostatistiken für den von Ihnen veröffentlichten Stream zu erhalten.
Sie können die SubscriberKit.setAudioStatsListener(AudioStatsListener listener) und SubscriberKit.setVideoStatsListener(VideoStatsListener listener) Methoden des Subscriber-Objekts, um Audio- und Videostatistiken für den von Ihnen veröffentlichten Stream zu erhalten.
Siehe dieses Thema für weitere Informationen.
Sie können die networkStatsDelegate Methode des OTSubscriberKit-Objekts, um Audio- und Videostatistiken für den von Ihnen veröffentlichten Stream zu erhalten.
Die vonage-video-api-network-test-samples Repo enthält Beispielcode, der zeigt, wie die Statistiken eines Teststreams vor der Veröffentlichung in einer Sitzung verwendet werden können.
Sie können die networkStatsDelegate Methode des OTSubscriberKit-Objekts, um Audio- und Videostatistiken für den von Ihnen veröffentlichten Stream zu erhalten.
Die vonage-video-api-network-test-samples Repo enthält Beispielcode, der zeigt, wie die Statistiken eines Teststreams vor der Veröffentlichung in einer Sitzung verwendet werden können.
Sie können dann den Stream abonnieren und die Subscriber.AudioStatsUpdated und Subscriber.VideoStatsUpdated Ereignisse, um Audio- und Videostatistiken für den von Ihnen veröffentlichten Stream zu erhalten.
Bewährte Praktiken bei der Veröffentlichung
Dieser Abschnitt enthält Tipps für die erfolgreiche Veröffentlichung von Streams.
Zugriff auf das Gerät zulassen
Es empfiehlt sich, die Nutzer darüber zu informieren, dass sie aufgefordert werden, den Zugriff auf ihre Kamera und ihr Mikrofon zu gestatten.
Wir haben festgestellt, dass die weitaus meisten Fehler bei der Veröffentlichung darauf zurückzuführen sind, dass Benutzer auf die Schaltfläche "Verweigern" klicken oder die Schaltfläche "Zulassen" überhaupt nicht anklicken. Wir stellen Ihnen alle Ereignisse zur Verfügung, die Sie benötigen, um Ihre Benutzer durch diesen Prozess zu führen:
Es ist auch eine gute Idee, Ihre Website über SSL bereitzustellen. Der Grund dafür ist, dass Chrome von den Nutzern nur einmal pro Domain verlangt, den Zugriff auf Geräte zu erlauben, wenn diese Domain über SSL bereitgestellt wird. Das bedeutet, dass Ihre Nutzer (wenn sie Chrome verwenden) nicht jedes Mal, wenn sie die Seite laden, mit dem lästigen Dialogfeld "Zulassen/Ablehnen" konfrontiert werden.
OT.initPublisher() und Session.publish() aufteilen
Außerdem empfehlen wir die Aufteilung der OT.initPublisher() und Session.publish() Schritte. Dadurch wird die anfängliche Verbindungszeit verkürzt, da Sie eine Verbindung zur Sitzung herstellen, während Sie darauf warten, dass der Benutzer auf die Schaltfläche "Zulassen" klickt. Also statt:
Bewegen Sie die OT.initPublisher() bevor Sie eine Verbindung herstellen, wie im Folgenden beschrieben:
Auflösung und Bildrate
Sie können die Auflösung und die Bildrate des Publishers bei der Initialisierung einstellen:
Standardmäßig ist die Auflösung eines Publishers 640x480, aber Sie können sie auch auf 1920x1080, 1280x720 oder 320x240 einstellen. Am besten versuchen Sie, die Auflösung an die Größe anzupassen, in der das Video angezeigt werden soll. Wenn Sie das Video nur mit 320x240 Pixeln anzeigen, macht es keinen Sinn, mit 1280x720 oder 1920x1080 zu streamen. Durch die Verringerung der Auflösung können Sie Bandbreite sparen und Überlastungen und Verbindungsabbrüche vermeiden.
Standardmäßig beträgt die Bildrate des Videos 30 Bilder pro Sekunde, aber Sie können sie auch auf 15, 7 oder 1 einstellen. Durch die Verringerung der Bildrate kann die erforderliche Bandbreite reduziert werden. Videos mit geringerer Auflösung können eine niedrigere Bildrate haben, ohne dass der Benutzer einen großen Unterschied bemerkt. Wenn Sie also eine niedrige Auflösung verwenden, sollten Sie auch eine niedrige Bildrate in Betracht ziehen.
Fehlersuche
Befolgen Sie die Tipps in diesem Abschnitt, um Konnektivitätsprobleme bei der Veröffentlichung zu vermeiden. Allgemeine Informationen zur Fehlerbehebung finden Sie unter Fehlersuche - Web.
Umgang mit Fehlern
Es gibt Callback-Methoden für beide Session.publish() und OT.initPublisher(). Wir empfehlen, die Fehlerantworten auf diese beiden Methoden zu behandeln. Wie bereits erwähnt, ist es am besten, diese Schritte aufzuteilen und die OT.initPublisher() bevor Sie mit der Verbindung zu Ihrer Sitzung begonnen haben. Es erleichtert auch die Fehlerbehandlung, wenn Sie nicht beide Methoden gleichzeitig aufrufen. Der Grund dafür ist, dass beide Fehlerbehandlungsmethoden ausgelöst werden, wenn ein Fehler veröffentlicht wird. Es ist am besten, zu warten, bis OT.initPublisher() zu vervollständigen und Session.connect() zu vervollständigen, und rufen Sie dann Session.publish(). Auf diese Weise können Sie alle hardwarebezogenen Probleme in der OT.initPublisher() Rückruf und alle netzbezogenen Fragen in der Session.publish() Rückruf.
Zugang verweigert
Die höchste Anzahl von Misserfolgen bei OT.initPublisher() sind darauf zurückzuführen, dass der Endnutzer den Zugang zu Kamera und Mikrofon verweigert. Dies kann entweder durch Abhören des accessDenied Ereignis oder durch Abwarten einer Fehlerantwort auf die Methode OT.initPublisher() mit einer code Eigenschaft auf 1500 gesetzt und eine message Eigenschaft auf "Publisher Access Denied:" gesetzt. Wir empfehlen, dass Sie diesen Fall behandeln und dem Benutzer eine Meldung anzeigen, dass er versuchen sollte, erneut zu veröffentlichen und den Zugriff auf die Kamera zu erlauben.
Zugang zum Gerät
Ein weiterer Grund für OT.initPublisher() Wenn OpenTok nicht auf eine Kamera oder ein Mikrofon zugreifen kann, schlägt das Programm fehl. Dies kann passieren, wenn keine Kamera oder kein Mikrofon an den Rechner angeschlossen ist, wenn etwas mit dem Treiber für die Kamera oder das Mikrofon nicht stimmt oder wenn eine andere Anwendung die Kamera oder das Mikrofon verwendet (dies geschieht nur unter Windows). Sie können versuchen, das Auftreten dieser Probleme zu minimieren, indem Sie unsere Hardware-Setup-Komponente verwenden oder die Funktion OT.getDevices() Methode direkt. Sie sollten jedoch auch jeden Fehler behandeln, wenn Sie OT.initPublisher() denn es kann immer noch etwas schief gehen. Zum Beispiel könnte der Benutzer den Zugriff auf die Kamera oder das Mikrofon verweigert haben. In diesem Fall muss die error.name Eigenschaft wird auf "OT_USER_MEDIA_ACCESS_DENIED":
Netzwerk-Fehler
Die anderen Gründe für Fehler bei der Veröffentlichung sind in der Regel auf eine Art von Netzwerkfehler zurückzuführen. Wir behandeln diese in dem Callback zu Session.publish(). Wenn der Benutzer nicht mit dem Netz verbunden ist, wird der Callback-Funktion ein Fehlerobjekt mit dem name Eigenschaft eingestellt auf "OT_NOT_CONNECTED". Wenn der Benutzer über eine sehr restriktive Netzwerkverbindung verfügt, die keine WebRTC-Verbindungen zulässt, kann der Publisher keine Verbindung herstellen, und das Publisher-Element zeigt ein sich drehendes Rad an. Dieser Fehler hat eine name Eigenschaft eingestellt auf "OT_CREATE_PEER_CONNECTION_FAILED". In diesem Fall empfiehlt es sich, dem Benutzer eine Nachricht zu übermitteln, die ihn darauf hinweist, dass die Veröffentlichung fehlgeschlagen ist und dass er seine Netzwerkverbindung überprüfen sollte. Die Behandlung dieser Fehler sieht folgendermaßen aus:
Verlust der Konnektivität
Ihr Publisher kann auch die Verbindung verlieren, nachdem er bereits eine Verbindung hergestellt hat. In den meisten Fällen führt dies dazu, dass auch die Sitzung ihre Verbindung verliert, aber das ist nicht immer der Fall. Sie können das Trennen der Verbindung des Publishers behandeln, indem Sie auf die streamDestroyed Ereignis mit einer reason Eigenschaft auf "networkDisconnected" wie folgt eingestellt:
publisher.on({
streamDestroyed: function (event) {
if (event.reason === 'networkDisconnected') {
showMessage('Your publisher lost its connection. Please check your internet connection and try publishing again.');
}
}
});