Abonnieren: Management & Veranstaltungen

Dieses Handbuch behandelt die Verwaltung des Abonnentenverhaltens und die Reaktion auf Laufzeitereignisse, sowohl für Web (JavaScript) als auch für React Native.

Verwalten von Abonnenten-Streams (React Native)

Erkennen, wenn sich die Videodimensionen eines Streams ändern

Die Videodimensionen eines Streams können sich ändern, wenn die Größe eines von einem mobilen Gerät veröffentlichten Streams geändert wird (z. B. aufgrund von Änderungen der Geräteausrichtung) oder wenn die Größe eines Fensters der Bildschirmfreigabequelle geändert wird. Wenn sich die Videodimensionen eines Streams ändern, sendet das Sitzungsobjekt ein Ereignis, das auf .

Einstellen der bevorzugten Bildrate und Auflösung

Wenn Sie einen Stream abonnieren, der die skalierbare Videofunktion verwendet, können Sie einstellen, dass die Videoauflösung des Abonnenten automatisch verwaltet und die CPU-/Netzwerknutzung optimiert wird. Für eine erweiterte Steuerung können Sie die bevorzugte Bildrate und Auflösung für den abonnierten Stream festlegen:

  • - Gültige Werte sind 30, 15, 7 und 1. Lassen Sie den Wert undefiniert, um die höchste verfügbare Bildrate zu verwenden.
  • - Gültige Werte sind , , und . Lassen Sie den Wert undefiniert, um die höchste verfügbare Auflösung zu verwenden.

Erkennen, wenn Streams eine Sitzung verlassen

Wenn ein Remote Stream eine Sitzung verlässt, sendet die Komponente ein Ereignis:

Die Veranstaltung umfasst Details wie , , , , und .

Benutzerdefiniertes Rendering von Abonnenten

Standardmäßig werden untergeordnete Ansichten für Abonnentenvideos gerendert. Sie können auch eine Renderfunktion bereitstellen, um das Rendering vollständig zu steuern, indem Sie :

Stream-Eigenschaften einstellen

Legen Sie globale Eigenschaften für alle Abonnenten über den Parameter on fest, oder legen Sie die Eigenschaften pro Stream über den Parameter prop fest.

Verwalten von Abonnentenströmen (iOS Swift)

Verwalten Sie Abonnenten, behandeln Sie Ereignisse und passen Sie Einstellungen in iOS an.

Erkennen, wenn das Video eines Abonnenten deaktiviert ist

func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video disabled.")
}

Mögliche Gründe

  • OTSubscriberVideoEventPublisherPropertyChanged
  • OTSubscriberVideoEventQualityChanged
  • OTSubscriberVideoEventSubscriberPropertyChanged

Wenn das Video fortgesetzt wird:

func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
    print("subscriber video enabled.")
}

Informationen über einen Stream erhalten

Die OTStream Objekt umfasst:

  • connection - Die Verbindung zum Verlagswesen
  • creationTime - Zeitstempel
  • hasAudio - Bool
  • hasVideo - Bool
  • name - Optionaler Streamname
  • session - Assoziierte Sitzung
  • streamId - Eindeutige ID
  • videoDimensions - CGS-Größe
  • videoType - Kamera, Bildschirm, oder benutzerdefiniert

Sie können Statistiken überwachen mit OTSubscriberKitNetworkStatsDelegate.

Siehe die Leitfaden zur Beobachtung der Kunden für weitere Einzelheiten.

Einstellen der bevorzugten Bildrate und Auflösung

Für skalierbare Videostreams können Sie die Einstellungen vornehmen:

  • SubscriberKit.preferredFrameRate
  • SubscriberKit.preferredResolution

Verwalten von Abonnentenströmen (nur JavaScript)

Einschränken der Bildrate eines abonnierten Streams

Sie können auch die Bildrate des Videostroms eines Subscribers einschränken. Um die Bildrate eines Subscribers einzuschränken, rufen Sie die Methode des Subscriber-Objekts auf und übergeben dabei :

Pass in und die Bildrate des Videostroms ist nicht eingeschränkt:

Wenn die Bildrate eingeschränkt ist, wird das Videobild des Teilnehmers einmal oder weniger pro Sekunde aktualisiert.

Diese Funktion ist nur in Sitzungen verfügbar, die den Media Router verwenden (Sitzungen mit dem Medienmodus "geroutet"), nicht aber in Sitzungen mit dem Medienmodus "weitergeleitet". In weitergeleiteten Sitzungen hat der Aufruf dieser Methode keine Auswirkungen.

Die Begrenzung der Teilnehmerbildrate hat folgende Vorteile:

  • Es reduziert die CPU-Nutzung.
  • Dadurch wird die von der Anwendung verbrauchte Netzwerkbandbreite reduziert.
  • Damit können Sie mehrere Streams gleichzeitig abonnieren.

Die Reduzierung der Bildrate eines Teilnehmers hat keine Auswirkungen auf die Bildrate des Videos in anderen Clients.

Erkennen, wann das Audio eines Teilnehmers blockiert oder freigegeben ist

Einige Browser blockieren automatisch die Audiowiedergabe und erfordern ein Ereignis, bevor die Audiowiedergabe für Abonnenten beginnt. Zu diesen Browsern gehören Safari, Firefox 66+ und Chrome 71+.

Das Subscriber-Objekt zeigt eine Schaltfläche für die Audiowiedergabe an, wenn die Audiowiedergabe blockiert ist. Sie können die Standardschaltfläche für die Audiowiedergabe des Abonnenten deaktivieren und ein eigenes Oberflächenelement anzeigen, auf das der Benutzer klickt, um die Audiowiedergabe zu starten.

Siehe Anzeige eines benutzerdefinierten UI-Elements, wenn Teilnehmer-Audio blockiert ist.

Wenn der Ton des Teilnehmers blockiert ist, sendet das Subscriber-Objekt ein Ereignis, und es sendet ein Ereignis, wenn der Ton wieder freigegeben wird:

Außerdem enthält der Abonnent eine Funktion, die zurückgibt, ob der Ton blockiert ist oder nicht.

Der Ton des Teilnehmers wird freigegeben, wenn einer der folgenden Fälle eintritt:

  • Der Benutzer klickt auf das Standardsymbol für die Audiowiedergabe des Teilnehmers
  • Die OT.unblockAudio() Methode wird als Reaktion auf ein HTML-Element aufgerufen, das ein Ereignis auslöst (wenn Sie das Standardsymbol für die Audiowiedergabe deaktiviert haben)
  • Der lokale Client erhält Zugriff auf die Kamera oder das Mikrofon (z. B. als Reaktion auf einen erfolgreichen Anruf bei ).

Weitere Informationen finden Sie unter dieser Mozilla-Artikel über Autoplay in Firefox und dieser Google-Artikel über Autoplay in Chrome.

Erkennen, wenn das Video eines Abonnenten deaktiviert ist

Wenn das Video des Abonnenten deaktiviert wird, sendet das Subscriber-Objekt ein Ereignis:

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

Die Eigenschaft des Ereignisobjekts definiert den Grund, aus dem das Video deaktiviert wurde. Sie kann auf einen der folgenden Werte gesetzt werden:

  • - Der Herausgeber hat die Veröffentlichung des Videos durch einen Anruf gestoppt.
  • - 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.)

Wenn sich die Qualität des Streams des Teilnehmers so weit verschlechtert, dass die Gefahr besteht, dass der Videostream deaktiviert wird, sendet der Teilnehmer vor dem Senden dieses Ereignisses ein Ereignis.

Wenn sich die Konnektivität verbessert und wieder Video unterstützt wird, sendet das Subscriber-Objekt ein Ereignis, und der Subscriber kann wieder Video empfangen.

Standardmäßig zeigt der Abonnent eine Anzeige für deaktiviertes Video an, wenn ein Ereignis mit diesem Grund ausgelöst wird, und entfernt die Anzeige, wenn das Ereignis eintritt.

Wenn Sie einen Stream veröffentlichen, können Sie verhindern, dass das Video aufgrund der Streamqualität deaktiviert wird. Stellen Sie in den Optionen, die Sie in .

Abonnentenstatistiken abrufen (Web)

Die Methode eines Subscriber-Objekts liefert Ihnen Informationen über den Stream des Abonnenten, einschließlich der 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

Der folgende Code protokolliert die Verlustquoten und Bitraten jede Sekunde:

Um Statistiken für einen Stream zu erhalten, der vom lokalen Client veröffentlicht wurde, müssen Sie eine geroutete Sitzung verwenden und die Option beim Abonnieren aktivieren:

Um detailliertere Stream-Statistiken zu erhalten, verwenden Sie .

Einstellen der bevorzugten Bildrate und Auflösung (Web)

Wenn Sie einen Stream abonnieren, der die skalierbare Videofunktion verwendet, können Sie festlegen, dass die Videoauflösung des Abonnenten automatisch verwaltet wird. Für eine erweiterte Steuerung stellen Sie und in den Optionen ein, die Sie an übergeben (oder verwenden Sie und nach dem Abonnieren).

Verwalten von Abonnentenströmen (Android)

Verwalten Sie Abonnenten, behandeln Sie Ereignisse und passen Sie Einstellungen in Android an.

Erkennen, wenn das Video eines Abonnenten deaktiviert ist

Wenn Video deaktiviert ist:

override fun onVideoDisabled(subscriber: SubscriberKit, reason: String) {
    // Video disabled
}

Wenn das Video fortgesetzt wird:

override fun onVideoEnabled(subscriber: SubscriberKit, reason: String) {
    // Video resumed
}

Die reason Parameter erklärt, warum die Änderung aufgetreten ist.

Informationen über einen Stream erhalten

Die Stream Objekt bietet:

  • getConnection() - Anschlussobjekt
  • getCreationTime() - Zeitstempel der Erstellung
  • hasAudio() - boolesch
  • hasVideo() - boolesch
  • getName() - Name des Stroms
  • getStreamId() - Eindeutige ID
  • getVideoHeight() - Höhe in Pixel
  • getVideoWidth() - Breite in Pixel
  • getVideoType() - Kamera, Bildschirmfreigabe oder benutzerdefiniert

Sie können auch Statistiken überwachen:

  • setAudioStatsListener()
  • setVideoStatsListener()
  • setMediaLinkStatsListener()
  • getRtcStatsReport()

Einstellen der bevorzugten Bildrate und Auflösung

Für skalierbare Videostreams können Sie Einstellungen vornehmen:

  • SubscriberKit.setPreferredFrameRate()
  • SubscriberKit.setPreferredResolution()

Verwalten von Abonnentenströmen (Windows)

Verwalten Sie Abonnenten, behandeln Sie Ereignisse und passen Sie Einstellungen in Windows an.

Erkennen, wenn das Video eines Abonnenten deaktiviert ist

Der OpenTok Media Router kann die Übertragung von Videos unterbrechen, wenn sich die Netzwerkbedingungen verschlechtern.

Der Teilnehmer empfängt weiterhin Audio, sofern verfügbar.

Wenn Video deaktiviert ist, wird die Subscriber Objekt sendet eine VideoDisabled Veranstaltung:

subscriber.VideoDisabled += Subscriber_VideoDisabled;

public void Subscriber_VideoDisabled(object sender)
{
    // Display a user interface notification.
}

Wenn das Video fortgesetzt wird:

subscriber.VideoEnabled += Subscriber_VideoEnabled;

public void Subscriber_VideoEnabled(object sender)
{
    // Video resumes for the subscriber.
}

Möglicherweise möchten Sie die Benutzeroberfläche als Reaktion auf diese Ereignisse anpassen.

Informationen über einen Stream erhalten

Die Stream Objekt weist die folgenden Eigenschaften auf:

  • Connection - Die Verbindung zum Verlagswesen
  • CreationTime - Zeitstempel der Stream-Erstellung
  • HasAudio - Ob der Stream Audio enthält
  • HasVideo - Ob der Stream Video enthält
  • Name - Name des Stroms
  • Id - Eindeutige Stream-ID
  • Height - Höhe des Videos in Pixeln
  • Width - Videobreite in Pixel
  • VideoSourceType - Kamera, Bildschirmfreigabe oder benutzerdefinierter Quellentyp

Möglicherweise VideoSourceType Werte:

  • VideoSourceType.StreamVideoTypeCamera
  • VideoSourceType.StreamVideoTypeScreen
  • VideoSourceType.StreamVideoTypeCustom

Überwachung der Statistiken

Verwenden Sie diese Ereignisse zur Überwachung der Stream-Statistiken:

  • Subscriber.AudioStatsUpdated
  • Subscriber.VideoStatsUpdated
  • Subscriber.MediaLinkStatsUpdated

Zum Abrufen von RTC-Statistiken auf niedriger Ebene:

subscriber.GetRtcStatsReport();

Einstellen der bevorzugten Bildrate und Auflösung

Für Streams, die die skalierbare Videofunktion verwenden, konfigurieren Sie:

  • Subscriber.PreferredFramerate
  • Subscriber.PreferredResolution

Verwalten von Abonnentenströmen (Linux)

Verwalten Sie Abonnenten, behandeln Sie Ereignisse und passen Sie Einstellungen unter Linux an.

Erkennen, wenn das Video eines Streams deaktiviert ist

Die on_stream_has_video_changed Callback-Funktion des otc_session_callbacks struct wird aufgerufen, wenn sich die Videoverfügbarkeit eines Streams ändert.

Die stream Parameter ist ein Zeiger auf ein otc_stream Struktur.

Verwendung:

otc_stream_get_id(stream)

um die Stream-ID abzurufen.

Informationen über einen Stream erhalten

Verwenden Sie die folgenden Funktionen zum Abrufen von Stream-Informationen:

  • otc_stream_get_connection() - Gibt die Veröffentlichungsverbindung zurück
  • otc_stream_get_creation_time() - Gibt den Zeitstempel der Stream-Erstellung zurück
  • otc_stream_has_audio() - Ob der Stream Audio veröffentlicht
  • otc_stream_has_video() - Ob der Stream ein Video veröffentlicht
  • otc_stream_has_audio_track() - ob der Stream eine Tonspur hat
  • otc_stream_has_video_track() - Ob der Stream eine Videospur hat
  • otc_stream_get_name() - Gibt den Streamnamen zurück
  • otc_stream_get_id() - Gibt die eindeutige Stream-ID zurück
  • otc_stream_get_video_height() - Gibt die Videohöhe in Pixeln zurück
  • otc_stream_get_video_width() - Gibt die Videobreite in Pixeln zurück
  • otc_stream_get_video_type() - Gibt den Stream-Videotyp zurück

Mögliche Videotypen:

  • OTC_STREAM_VIDEO_TYPE_CAMERA
  • OTC_STREAM_VIDEO_TYPE_SCREEN

Überwachung der Statistiken

Verwenden Sie diese Teilnehmer-Rückruffunktionen:

  • on_audio_stats()
  • on_video_stats()
  • on_media_link_stats()

Um RTC-Statistiken auf niedriger Ebene abzurufen, verwenden Sie:

otc_subscriber_get_rtc_stats_report()

Einstellen der bevorzugten Bildrate und Auflösung

Für Streams, die die skalierbare Videofunktion verwenden, können Sie die bevorzugte Bildrate und Auflösung mit einstellen:

  • otc_subscriber_set_preferred_framerate()
  • otc_subscriber_set_preferred_resolution()