Allgemeine Anpassungen
Es gibt eine Reihe von Einstellungen, mit denen Sie die Benutzeroberfläche von Vonage Video anpassen können:
Hinzufügen eines Namens für einen veröffentlichten Stream
Wenn Sie einen Publisher erstellen, können Sie (optional) einen Namen angeben, der im Video angezeigt werden soll:
Sie können diesen Namen verwenden, um den Client zu identifizieren.
Beachten Sie, dass Sie beim Erstellen eines Tokens auch Metadaten über den Client hinzufügen können. Dieser Name wird nicht automatisch im Video angezeigt. Wenn Sie die Daten jedoch bei der Erstellung eines Tokens hinzufügen, können Sie die Informationen auf sicherere Weise hinzufügen (da Token auf dem Server und nicht auf dem Client erstellt werden). Weitere Informationen finden Sie unter Token-Erstellung.
Clients können den Namen in einer Publisher- oder Subscriber-Ansicht ausblenden. Siehe dieser Abschnitt
Sie können den Namen des Herausgebers angeben, indem Sie die Funktion name() Methode des Publisher.Builder-Objekts, wenn Sie das Publisher-Objekt instanziieren:
Sie können diesen Namen verwenden, um den Client zu identifizieren, der den Stream veröffentlicht. Die Stream-Klasse hat eine name Eigentum. Wenn Sie einen Stream abonnierenkönnen Sie diesen Namen in einem Element der Benutzeroberfläche anzeigen.
Um die Eigenschaft name des veröffentlichten Streams anzugeben, setzen Sie die name Eigenschaft des OTPublisherSettings-Objekts, das Sie beim Initialisieren eines Publishers verwenden:
Die Klasse OTStream hat eine name Eigentum. Wenn Sie einen Stream abonnierenkönnen Sie diesen Namen in einem Element der Benutzeroberfläche anzeigen. (Dieser Name wird auch angezeigt, wenn das Video auf einer Webseite angezeigt wird, die die OpenTok.js-Bibliothek verwendet).
Um die Eigenschaft name des veröffentlichten Streams anzugeben, setzen Sie die name Eigenschaft des OTPublisherSettings-Objekts, das Sie beim Initialisieren eines Publishers verwenden:
OTPublisherSettings *_publisherSettings = [[OTPublisherSettings alloc] init];
_publisherSettings.name = @"Juan";
_publisher = [[OTPublisher alloc]
initWithDelegate:self
settings:_publisherSettings];
Die Klasse OTStream hat eine name Eigentum. Wenn Sie einen Stream abonnierenkönnen Sie diesen Namen in einem Element der Benutzeroberfläche anzeigen. (Dieser Name wird auch angezeigt, wenn das Video auf einer Webseite angezeigt wird, die die OpenTok.js-Bibliothek verwendet).
Sie können den Namen des Herausgebers angeben, indem Sie die Funktion name() Methode des Publisher.Builder-Objekts, wenn Sie das Publisher-Objekt instanziieren:
Sie können diesen Namen verwenden, um den Client zu identifizieren, der den Stream veröffentlicht. Die Stream-Klasse hat eine Name Eigentum. Wenn Sie einen Stream abonnierenkönnen Sie diesen Namen in einem Element der Benutzeroberfläche anzeigen.
Hinzufügen einer Stummschalttaste für einen Herausgeber
Standardmäßig enthält die Benutzeroberfläche für einen Publisher oder einen Subscriber eine Schaltfläche zum Stummschalten des Tons. Bei einem Publisher kann der Benutzer darauf klicken, um das Mikrofon ein- und auszuschalten.
Wenn Sie einen Stream veröffentlichen, können Sie angeben, ob die Stummschalttaste angezeigt wird, indem Sie eine style.buttonDisplayMode Eigenschaft in die OT.initPublisher() Methode:
Die style.buttonDisplayMode kann auf einen von drei Werten gesetzt werden:
- "auto" - Die Stummschalttaste wird angezeigt, wenn der Stream zum ersten Mal angezeigt wird und wenn der Benutzer mit der Maus über das Video fährt (Standardeinstellung).
- "Aus" - Die Stummschalttaste wird nicht angezeigt.
- "on" - Die Stummschalttaste wird angezeigt.
Sobald Sie den Publisher erstellt haben, können Sie den Anzeigemodus der Stummschalttaste ändern, indem Sie die Funktion setStyle() Methode des Publisher-Objekts. Siehe die Dokumentation für Publisher.setStyle().
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Mikrofons des Herausgebers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion setPublishAudio() Methode des PublisherKit-Objekts, wenn der Benutzer darauf klickt. Einreichen false um den Herausgeber stumm zu schalten:
Einreichen true um Audio zu veröffentlichen.
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Mikrofons des Herausgebers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die publishAudio Eigenschaft des OTPublisher-Objekts, wenn der Benutzer darauf klickt. Setzen Sie die publishAudio Eigenschaft zu false um den Herausgeber stumm zu schalten:
Setzen Sie die publishAudio Eigenschaft zu true um Audio zu veröffentlichen.
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Mikrofons des Herausgebers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die publishAudio Eigenschaft des OTPublisher-Objekts, wenn der Benutzer darauf klickt. Setzen Sie die publishAudio Eigenschaft zu NO um den Herausgeber stumm zu schalten:
publisher.publishAudio = NO;
Setzen Sie die publishAudio Eigenschaft zu YES um Audio zu veröffentlichen.
publisher.publishAudio = YES;
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Mikrofons des Herausgebers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die PublishAudio des Publisher-Objekts, wenn der Benutzer es anklickt. Setzen Sie die Eigenschaft auf false um den Herausgeber stumm zu schalten:
Setzen Sie die Eigenschaft auf true um Audio zu veröffentlichen.
Hinzufügen einer Stummschalttaste für einen Teilnehmer
Standardmäßig enthält die Benutzeroberfläche für einen Publisher oder einen Subscriber eine Schaltfläche zum Stummschalten des Tons. Bei einem Abonnenten kann der Benutzer auf die Schaltfläche klicken, um den Lautsprecher ein- und auszuschalten.
Wenn Sie einen Stream abonnieren, können Sie angeben, ob der stumme Lautsprecher angezeigt wird, indem Sie eine style.buttonDisplayMode Eigenschaft in die Session.subscribe() Methode:
Die style.buttonDisplayMode kann auf einen von drei Werten gesetzt werden:
- "auto" - Die Stummschalttaste wird angezeigt, wenn der Stream zum ersten Mal angezeigt wird und wenn der Benutzer mit der Maus über das Video fährt (Standardeinstellung).
- "Aus" - Die Stummschalttaste wird nicht angezeigt.
- "on" - Die Stummschalttaste wird angezeigt.
Sobald Sie den Teilnehmer erstellt haben, können Sie den Anzeigemodus der Stummschalttaste ändern, indem Sie die Funktion setStyle() Methode des Subscriber-Objekts. Siehe die Dokumentation für Abonnent.setStyle().
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Tons des Teilnehmers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion setSubscribeToAudio() Methode des SubscriberKit-Objekts, wenn der Benutzer darauf klickt. Einreichen false zum Stummschalten des Teilnehmers
Einreichen true um Audio zu abonnieren (wenn es einen Audio-Stream gibt):
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Tons des Teilnehmers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die subscribeToAudio des OTSubscriber-Objekts, wenn der Benutzer es anklickt. Setzen Sie die subscribeToAudio Eigenschaft zu false zum Stummschalten des Teilnehmers
Setzen Sie die subscribeToAudio Eigenschaft zu true um Audio zu abonnieren (wenn es einen Audio-Stream gibt):
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Tons des Teilnehmers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die subscribeToAudio des OTSubscriber-Objekts, wenn der Benutzer es anklickt. Setzen Sie die subscribeToAudio Eigenschaft zu NO zum Stummschalten des Teilnehmers
subscriber.subscribeToAudio = NO;
Setzen Sie die subscribeToAudio Eigenschaft zu YES um Audio zu abonnieren (wenn es einen Audio-Stream gibt):
subscriber.subscribeToAudio = YES;
Es gibt kein Standard-Benutzeroberflächenelement zum Stummschalten des Tons des Teilnehmers. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die SubscribeToAudio des Subscriber-Objekts, wenn der Benutzer darauf klickt. Setzen Sie die Eigenschaft auf false um den Ton stumm zu schalten:
Setzen Sie die Eigenschaft auf true um die Audiowiedergabe zu aktivieren (wenn der Stream Audio enthält):
Hinzufügen einer Schaltfläche zum Umschalten der Kamera des Herausgebers
Es gibt kein Standard-Benutzeroberflächenelement, um die vom Herausgeber verwendete Kamera umzuschalten. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die Funktion swapCamera Methode des Publisher-Objekts:
Beachten Sie, dass die cameraPosition Eigenschaft ist in der PublisherKit-Klasse nicht verfügbar. Wenn Sie die PublisherKit-Klasse verwenden, um einen benutzerdefinierten Video-Capturer implementierenkönnen Sie die im benutzerdefinierten Code für die Videoaufzeichnung verwendete Kamera festlegen.
Es gibt kein Standard-Benutzeroberflächenelement, um die vom Herausgeber verwendete Kamera umzuschalten. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die cameraPosition Eigenschaft des OTPublisher-Objekts. Setzen Sie die Eigenschaft auf einen Wert, der in der Aufzählung AVCaptureDevicePosition definiert ist. Der folgende Code legt beispielsweise fest, dass der Herausgeber die Rückseitenkamera verwendet:
Beachten Sie, dass die cameraPosition Eigenschaft ist in der OTPublisherKit-Klasse nicht verfügbar. Wenn Sie die OTPublisherKit-Klasse verwenden, um einen benutzerdefinierten Video-Capturer implementierenkönnen Sie die im benutzerdefinierten Code für die Videoaufzeichnung verwendete Kamera festlegen.
Es gibt kein Standard-Benutzeroberflächenelement, um die vom Herausgeber verwendete Kamera umzuschalten. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die cameraPosition Eigenschaft des OTPublisher-Objekts. Setzen Sie die Eigenschaft auf einen Wert, der in der Aufzählung AVCaptureDevicePosition definiert ist. Der folgende Code legt beispielsweise fest, dass der Herausgeber die Rückseitenkamera verwendet:
publisher.cameraPosition = AVCaptureDevicePositionBack;
Beachten Sie, dass die cameraPosition Eigenschaft ist in der OTPublisherKit-Klasse nicht verfügbar. Wenn Sie die OTPublisherKit-Klasse verwenden, um einen benutzerdefinierten Video-Capturer implementierenkönnen Sie die im benutzerdefinierten Code für die Videoaufzeichnung verwendete Kamera festlegen.
Es gibt kein Standard-Benutzeroberflächenelement, um die vom Herausgeber verwendete Kamera umzuschalten. Sie können jedoch ein Element, z. B. eine Schaltfläche, hinzufügen, das die VideoCapturer Eigenschaft des Publisher-Objekts:
Weitere Informationen finden Sie unter Verwendung eines benutzerdefinierten Video-Capturers.
Anpassen der Benutzeroberfläche, wenn Video aktiviert oder deaktiviert ist
Ein Abonnentenobjekt sendet die folgenden Ereignisse im Zusammenhang mit der Aktivierung oder Deaktivierung des Videos für den Stream des Abonnenten:
videoEnabled- Wird ausgelöst, wenn das Video aktiviert wurde, nachdem es zuvor deaktiviert war.videoDisabled- Wird ausgelöst, wenn das Video deaktiviert wurde. Die Eigenschaft Grund des Ereignisobjekts gibt an, warum das Video deaktiviert wurde. (Dieses Ereignisobjekt ist ein VideoEnabledChangedEvent Objekt).videoDisableWarning- Wird gesendet, wenn der Medienrouter feststellt, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert. Wenn sich die Qualität weiter verschlechtert, deaktiviert der Abonnent das Video und sendet einevideoDisabledVeranstaltung.videoDisableWarningLifted- Das Video wurde aktiviert, nachdem es zuvor deaktiviert war.
Die videoDisableWarning und videoDisableWarningLifted Ereignisse sind nur in Sitzungen verfügbar, die die Medien-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist).
Standardmäßig zeigt der Teilnehmer eine Warnanzeige für deaktivierte Videos und eine Anzeige für deaktivierte Videos an, wenn die videoDisableWarning und videoDisableWarningLifted Ereignisse ausgelöst werden. Sie können die Standardanzeige des Indikators deaktivieren, indem Sie den Parameter videoDisabledDisplayMode Stil-Einstellung des Subscriber-Objekts.
Das folgende Beispiel verwendet die videoDisabledDisplayMode einstellen, dass die Warnanzeige für deaktiviertes Video und die Anzeige für deaktiviertes Video im Sekundentakt blinken, wenn der videoDisableWarning und videoDisableWarningLifted Ereignisse ausgelöst werden:
Sie können auch die videoDisabledDisplayMode Stil auf 'aus' und fügen Sie Ihre eigenen Elemente der Benutzeroberfläche auf der Grundlage der videoDisableWarning, videoDisabled, videoDisableWarningLiftedund videoEnabled Veranstaltungen.
Wenn das Video eines Abonnenten deaktiviert ist, wird die SubscriberKit.VideoListener.onVideoDisabled(subscriber, reason) Methode aufgerufen wird. In diesem Fall können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) hinzufügen, um anzuzeigen, dass das Video deaktiviert wurde:
Wenn das Video eines Abonnenten wieder aktiviert wird, wird die SubscriberKit.VideoListener.onVideoEnabled(subscriber, reason) Methode aufgerufen wird. Wenn dies geschieht, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) entfernen, das anzeigt, dass das Video wieder aktiviert ist:
In Sitzungen, die den Vonage Video-Media-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), kann der SubscriberKit.VideoListener auch die folgenden Methoden aufrufen:
- onVideoDisableWarning(Teilnehmer) - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.
- onVideoDisableWarningLifted(Teilnehmer) - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams soweit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko darstellt.
Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen lassen, wenn diese Nachrichten gesendet werden.
Beachten Sie, dass Sie bei der Veröffentlichung eines Streams verhindern können, dass das Video aufgrund der Streamqualität deaktiviert wird. Bevor Sie den Stream veröffentlichen (durch Aufruf der Funktion Session.publish(publisher) Methode), rufen Sie die setAudioFallbackEnabled(boolean enabled) Methode des Publisher-Objekts (oder PublisherKit-Objekts) und übergeben Sie in false.
Wenn das Video eines Abonnenten deaktiviert ist, wird die OTSubscriberKitDelegate subscriberVideoDisabled(_:reason:) Nachricht gesendet wird. Wenn dies der Fall ist, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) hinzufügen, um anzuzeigen, dass das Video deaktiviert wurde:
Wenn das Video eines Abonnenten wieder aktiviert wird, wird die OTSubscriberKitDelegate subscriberVideoEnabled(_:reason:) Nachricht gesendet wird. Wenn dies geschieht, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) entfernen, das anzeigt, dass das Video wieder aktiviert ist:
In Sitzungen, die den Vonage Video-Media-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), können auch die folgenden Nachrichten gesendet werden:
- OTSubscriberKitDelegate subscriberVideoDisableWarning(_:) - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.
- OTSubscriberKitDelegate subscriberVideoDisableWarningLifted(_:)] - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams soweit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko darstellt.
Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen lassen, wenn diese Nachrichten gesendet werden.
Beachten Sie, dass Sie bei der Veröffentlichung eines Streams verhindern können, dass das Video aufgrund der Streamqualität deaktiviert wird. Bevor Sie den Stream veröffentlichen (durch Aufruf der Funktion OTSession publish(_:error:) Methode), setzen Sie die audioFallbackEnabled Eigenschaft des Publisher-Objekts (oder des PublisherKit-Objekts) auf false.
Wenn das Video eines Abonnenten deaktiviert ist, wird die [OTSubscriberKitDelegate subscriberVideoDisabled:reason:] Nachricht gesendet wird. Wenn dies der Fall ist, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) hinzufügen, um anzuzeigen, dass das Video deaktiviert wurde:
- (void)subscriberVideoDisabled:(OTSubscriberKit*)subscriber
reason:(OTSubscriberVideoEventReason)reason
{
// Display the video disabled indicator
}
Wenn das Video eines Abonnenten wieder aktiviert wird, wird die [OTSubscriberKitDelegate subscriberVideoEnabled:reason:] Nachricht gesendet wird. Wenn dies geschieht, können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) entfernen, das anzeigt, dass das Video wieder aktiviert ist:
- (void)subscriberVideoEnabled:(OTSubscriberKit*)subscriber
reason:(OTSubscriberVideoEventReason)reason
{
// Remove the video disabled indicator
}
In Sitzungen, die den Vonage Video-Media-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), können auch die folgenden Nachrichten gesendet werden:
- [OTSubscriberKitDelegate subscriberVideoDisableWarning:] - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.
- [OTSubscriberKitDelegate subscriberVideoDisableWarningLifted:] - Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams soweit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko darstellt.
Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen lassen, wenn diese Nachrichten gesendet werden.
Beachten Sie, dass Sie bei der Veröffentlichung eines Streams verhindern können, dass das Video aufgrund der Streamqualität deaktiviert wird. Bevor Sie den Stream veröffentlichen (durch Aufruf der Funktion [OTSession publish:error] Methode), setzen Sie die audioFallbackEnabled Eigenschaft des Publisher-Objekts (oder PublisherKit-Objekts) auf NO.
Wenn das Video eines Abonnenten deaktiviert wird, sendet das Subscriber-Objekt eine VideoDisabled Ereignis. In diesem Fall können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) hinzufügen, um anzuzeigen, dass das Video deaktiviert wurde:
Wenn das Video eines Abonnenten wieder aktiviert wird, sendet das Subscriber-Objekt eine VideoEnabled Ereignis. In diesem Fall können Sie ein Element der Benutzeroberfläche (z. B. ein Symbol) entfernen, das anzeigt, dass das Video wieder aktiviert ist:
In Sitzungen, die den Vonage Video-Media-Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), kann das Subscribe auch die folgenden Ereignisse senden:
VideoDisableWarning- Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams verschlechtert hat und das Video deaktiviert wird, wenn sich die Qualität weiter verschlechtert.VideoDisableWarningLifted- Der Vonage Video Media Router hat festgestellt, dass sich die Qualität des Streams soweit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko darstellt.
Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen, wenn diese Ereignisse gesendet werden.
Anzeige eines Indikatorelements, wenn ein Lauf archiviert wird
Wenn ein Archiv einer Sitzung mit der Aufzeichnung beginnt (oder wenn Sie eine Verbindung zu einer Sitzung herstellen, die gerade aufgezeichnet wird), wird die Session.ArchiveListener.onArchiveStarted(session, name) Methode aufgerufen wird. Wenn die Aufzeichnung endet, wird die Session.ArchiveListener.onArchiveStopped(session, name) Methode aufgerufen wird. Sie können ein Element der Benutzeroberfläche hinzufügen, z. B. ein Symbol, das in einer Herausgeberansicht angezeigt wird, um anzuzeigen, dass ein Video aufgezeichnet wird:
Wenn ein Archiv einer Sitzung mit der Aufzeichnung beginnt (oder wenn Sie eine Verbindung zu einer Sitzung herstellen, die gerade aufgezeichnet wird), wird die OTSessionDelegate session(_:archiveStartedWithId:name:) Nachricht gesendet wird. Wenn die Aufzeichnung endet, wird die OTSessionDelegate session(_:archiveStoppedWithId:) Nachricht gesendet wird. Sie können ein Element der Benutzeroberfläche hinzufügen, z. B. ein Symbol, das in einer OTPublisher-Ansicht angezeigt wird, um anzuzeigen, dass ein Video aufgezeichnet wird:
Wenn ein Archiv einer Sitzung mit der Aufzeichnung beginnt (oder wenn Sie eine Verbindung zu einer Sitzung herstellen, die gerade aufgezeichnet wird), wird die [OTSessionDelegate session:archiveStartedWithId:name:] Nachricht gesendet wird. Wenn die Aufzeichnung endet, wird die [OTSessionDelegate session:archiveStoppedWithId:] Nachricht gesendet wird. Sie können ein Element der Benutzeroberfläche hinzufügen, z. B. ein Symbol, das in einer OTPublisher-Ansicht angezeigt wird, um anzuzeigen, dass ein Video aufgezeichnet wird:
- (void) session:(OTSession*)session
archiveStartedWithId:(NSString*)archiveId
name:(NSString*)name
{
// Display the archive indicator
}
- (void) session:(OTSession*)session
archiveStoppedWithId:(NSString*)archiveId
{
// Hide the archive indicator
}
Wenn ein Archiv einer Sitzung mit der Aufzeichnung beginnt (oder wenn Sie eine Verbindung zu einer Sitzung herstellen, die gerade aufgezeichnet wird), sendet das Sitzungsobjekt eine ArchiveStarted Ereignis. Wenn die Aufzeichnung endet, sendet das Session-Objekt eine ArchiveStopped Ereignis. Sie können ein Element der Benutzeroberfläche hinzufügen, z. B. ein Symbol, das in einer Herausgeberansicht angezeigt wird, um anzuzeigen, dass ein Video aufgezeichnet wird:
Anpassung der Benutzeroberfläche auf der Grundlage von Audiopegeln
Versand von Publisher- und Subscriber-Objekten audioLevelUpdated Ereignisse, um den Audiopegel periodisch zu melden. Sie können diese Ereignisse verwenden, um eine Audiopegelanzeige anzuzeigen. Sie können diese Ereignisse auch verwenden, um aktive Sprecher in einer Sitzung zu erkennen.
Das folgende Beispiel passt den Wert eines Zählerelements an, das die Lautstärke eines Teilnehmers anzeigt. Der Code setzt den audioLevelDisplayMode Stil zu 'off'Diese Option deaktiviert die Standard-Audiopegelanzeige, die im Abonnenten angezeigt wird. Beachten Sie, dass der Audiopegel logarithmisch angepasst wird und ein gleitender Durchschnitt angewendet wird:
Das Beispiel geht davon aus, dass es ein HTML-Zählerelement mit der ID "subscriberMeter" gibt.
Beachten Sie, dass im reinen Audiomodus ein Publisher- oder Subscriber-DOM-Element standardmäßig eine Lautstärkeanzeige anzeigt (in der oberen rechten Ecke des Elements). Sie können dieses Standard-Benutzeroberflächenelement deaktivieren und Ihre eigene Lautstärkeanzeige anzeigen. Siehe das nächste Thema, Anpassen der Benutzeroberfläche, wenn Video aktiviert oder deaktiviert ist.
Sie können auch die audioLevelUpdated Ereignis, um festzustellen, wann der Ton eines Verlegers oder Teilnehmers lange genug laut ist, um den Teilnehmer als sprechend zu kennzeichnen. Oder, wenn das Audio lange genug ruhig war, können Sie den Teilnehmer als nicht mehr sprechend identifizieren:
(Anstatt in der Konsole zu protokollieren, könnte Ihre Anwendung ein Element der Benutzeroberfläche anpassen, wenn der Benutzer zu sprechen beginnt und aufhört.
Die SubscriberKit.AudioLevelListener.onAudioLevelUpdated(subscriber, audioLevel) und PublisherKit.AudioLevelListener.onAudioLevelUpdated(publisher, audioLevel) Nachrichten werden in einem regelmäßigen Intervall mit dem Audiopegel des Teilnehmers und des Herausgebers gesendet. Sie können die audioLevel Wert, um die Anzeige in einer Audiopegelanzeige zu aktualisieren:
Aus Gründen des Datenschutzes wird die Audioerfassung standardmäßig beendet und das Mikrofon freigegeben, wenn alle Publisher stummgeschaltet sind. Das bedeutet, dass es keine weiteren Aktualisierungen des Audiopegels gibt, bis eine Verlagsinstanz Audio wieder aktiviert. Ab Version 2.31.0 ist der Publisher mit einer Eigenschaft ausgestattet, die es erlaubt, die Audioerfassung fortzusetzen, während er stummgeschaltet ist.
Bei der Instanziierung einer neuen Verlagsinstanz kann der Entwickler dieses Verhalten aktivieren:
Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.
Die OTPublisherKitAudioLevelDelegate publisher(_:audioLevelUpdated:) und OTSubscriberKitAudioLevelDelegate subscriber(_:audioLevelUpdated:) Nachrichten werden in einem regelmäßigen Intervall mit dem Audiopegel des Teilnehmers und des Herausgebers gesendet. Sie können die audioLevel Wert, um die Anzeige in einer Audiopegelanzeige zu aktualisieren.
Aus Gründen des Datenschutzes wird die Audioerfassung standardmäßig beendet und das Mikrofon freigegeben, wenn alle Publisher stummgeschaltet sind. Das bedeutet, dass es keine weiteren Aktualisierungen des Audiopegels gibt, bis eine Verlagsinstanz Audio wieder aktiviert. Ab Version 2.31.0 ist der Publisher mit einer Eigenschaft ausgestattet, die es erlaubt, die Audioerfassung fortzusetzen, während er stummgeschaltet ist.
Bei der Instanziierung einer neuen Verlagsinstanz kann der Entwickler dieses Verhalten aktivieren:
Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.
Die [OTPublisherKitAudioLevelDelegate publisher:audioLevelUpdated:] und [OTSubscriberKitAudioLevelDelegate subscriber:audioLevelUpdated:] Nachrichten werden in einem regelmäßigen Intervall mit dem Audiopegel des Teilnehmers und des Herausgebers gesendet. Sie können die audioLevel Wert, um die Anzeige in einer Audiopegelanzeige zu aktualisieren.
Aus Gründen des Datenschutzes wird die Audioerfassung standardmäßig beendet und das Mikrofon freigegeben, wenn alle Publisher stummgeschaltet sind. Das bedeutet, dass es keine weiteren Aktualisierungen des Audiopegels gibt, bis eine Verlagsinstanz Audio wieder aktiviert. Ab Version 2.31.0 ist der Publisher mit einer Eigenschaft ausgestattet, die es erlaubt, die Audioerfassung fortzusetzen, während er stummgeschaltet ist.
Bei der Instanziierung einer neuen Verlagsinstanz kann der Entwickler dieses Verhalten aktivieren:
OTPublisherKitSettings* settings = [[OTPublisherKitSettings alloc] init];
settings.allowAudioCaptureWhileMuted = true;
_publisher = [[OTPublisherKit alloc] initWithDelegate:self settings:settings];
Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.
Die Subscriber.AudioLevel und Publisher.AudioLevel Ereignisse werden in regelmäßigen Abständen mit dem Audiopegel des Abonnenten und des Herausgebers gesendet. Sie können die AudioLevel Eigenschaft der Ereignisargumente, um die Anzeige in einer Audiopegelanzeige zu aktualisieren:
Aus Gründen des Datenschutzes wird die Audioerfassung standardmäßig beendet und das Mikrofon freigegeben, wenn alle Publisher stummgeschaltet sind. Das bedeutet, dass es keine weiteren Aktualisierungen des Audiopegels gibt, bis eine Verlagsinstanz Audio wieder aktiviert. Ab Version 2.31.0 ist der Publisher mit einer Eigenschaft ausgestattet, die es erlaubt, die Audioerfassung fortzusetzen, während er stummgeschaltet ist.
Bei der Instanziierung einer neuen Verlagsinstanz kann der Entwickler dieses Verhalten aktivieren:
Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.
Verwendung eines benutzerdefinierten Video-Renderers
Die Subscriber- und Publisher-Klassen implementieren einen Standard-Videorenderer, der den Stream rendert und Steuerelemente für die Benutzeroberfläche zum Anzeigen des Streamnamens und zum Stummschalten des Mikrofons oder der Kamera bereitstellt. Sie können die SubscriberKit- und PublisherKit-Klassen verwenden, um einen benutzerdefinierten Video-Renderer zu implementieren.
Das Android SDK enthält eine BaseVideoRenderer-Klasse. Überschreiben Sie diese Klasse, um einen benutzerdefinierten Videorenderer zu erstellen.
Nachdem Sie ein PublisherKit-Objekt instanziiert haben, können Sie einen benutzerdefinierten Videorenderer festlegen, indem Sie die setRenderer() Methode des PublisherKit-Objekts:
Die SubscriberKit-Klasse hat auch eine setRenderer() Methode.
Die onFrame() Methode der BaseVideoRenderer-Klasse wird aufgerufen, wenn ein neues Bild verfügbar ist:
Die frame ist ein BaseVideoRenderer.Frame-Objekt. Dieses Objekt enthält ein getBuffer() die den Byte-Puffer mit den Videobilddaten zurückgibt. Sie können diesen Bytepuffer verwenden, um das Videobild in die Ansicht des Herausgebers einzufügen.
Ein Beispiel finden Sie in der Klasse OpenTokVideoRenderer in der Beispielanwendung OpenTokHelloWorld.
Sie können einen Verlag auch so einrichten, dass er eine benutzerdefinierter Video-Capturer.
Die Klassen OTPublisher und OTSubscriber stellen eine Standardinstanz von UIView bereit, die das Herausgeber- oder Abonnentenvideo wiedergibt. Sie können die benutzerdefinierte Videostream-API verwenden, um einen benutzerdefinierten Videorenderer zu definieren, indem Sie die Klassen OTPublisherKit, OTSubscriberKit und OTVideoRender verwenden.
Sie können einen Verlag auch so einrichten, dass er eine benutzerdefinierter Video-Capturer.
Die Klassen OTPublisher und OTSubscriber stellen eine Standardinstanz von UIView bereit, die das Herausgeber- oder Abonnentenvideo wiedergibt. Sie können die benutzerdefinierte Videostream-API verwenden, um einen benutzerdefinierten Videorenderer zu definieren, indem Sie die Klassen OTPublisherKit, OTSubscriberKit und OTVideoRender verwenden.
Sie können einen Verlag auch so einrichten, dass er eine benutzerdefinierter Video-Capturer.
Standardmäßig verwenden Publisher einen Standard-Videorenderer für Windows Presentation Foundation, der durch das Vonage Video Windows SDK definiert ist.
Sie können auch einen Renderer für das Video angeben, indem Sie eine Klasse erstellen, die die Schnittstelle IVideoRenderer implementiert. Die Schnittstelle enthält eine RenderFrame(frame) Methode, die aufgerufen wird, wenn ein neues Videobild verfügbar ist. Verwenden Sie in Ihrer Implementierung dieser Methode das an die Methode übergebene Frame-Objekt, um ein zu renderndes Bild zu erstellen. Stellen Sie außerdem sicher, dass Sie am Ende Ihrer Implementierung dieser Methode die Methode Dispose() Methode der frame Objekt, um Speicherlecks zu vermeiden.
Wenn Sie ein Publisher- oder Subscriber-Objekt instanziieren, können Sie das benutzerdefinierte Video-Renderer-Objekt an die Publisher() oder Subscriber() Konstruktor (wie der renderer Parameter).