Anpassen der Benutzeroberfläche – Windows
Mit den folgenden Einstellungen können Sie die Benutzeroberfläche von OpenTok-Videos an Ihre Bedürfnisse anpassen:
- Hinzufügen eines Namens für einen veröffentlichten Stream
- Hinzufügen einer Stummschalttaste für einen Herausgeber
- Hinzufügen einer Stummschalttaste für einen Teilnehmer
- Hinzufügen einer Schaltfläche zum Umschalten der Kamera des Herausgebers
- Anpassen der Benutzeroberfläche, wenn Video aktiviert oder deaktiviert ist
- Anzeige eines Indikatorelements, wenn ein Lauf archiviert wird
- Anpassung der Benutzeroberfläche auf der Grundlage von Audiopegeln
- Verwendung eines benutzerdefinierten Video-Renderers
Hinzufügen eines Namens für einen veröffentlichten Stream
Sie können den Namen des Herausgebers angeben, indem Sie die Funktion name() Methode des Publisher.Builder-Objekts, wenn Sie das Publisher-Objekt instanziieren:
publisher = new Publisher(Context.Instance,
renderer: publisherVideoRenderer,
name: "Bob's video",
capturer: capturer);
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.
Verwenden Sie keine persönlichen Informationen im Feld "Name" des Herausgebers — Der Name des Herausgebers kann anderen Teilnehmern der Sitzung angezeigt werden und möglicherweise auch im Inspector-Tool sowie in den internen Protokollen von Vonage erscheinen. Verwenden Sie daher niemals unverschlüsselte sensible oder personenbezogene Daten im Namen des Herausgebers. Siehe bewährte Verfahren für die Sicherheit.
Hinzufügen einer Stummschalttaste für einen Herausgeber
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:
publisher.PublishAudio = false;
Setzen Sie die Eigenschaft auf true um Audio zu veröffentlichen.
publisher.PublishAudio = true;
Hinzufügen einer Stummschalttaste für einen Teilnehmer
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:
subscriber.SubscribeToAudio = false;
Setzen Sie die Eigenschaft auf true um die Audiowiedergabe zu aktivieren (wenn der Stream Audio enthält):
subscriber.SubscribeToAudio = true;
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 VideoCapturer Eigenschaft des Publisher-Objekts:
publisher.VideoCapturer = newCapturer;
Weitere Informationen finden Sie unter Verwendung eines benutzerdefinierten Video-Capturers.
Anpassen der Benutzeroberfläche, wenn Video aktiviert oder deaktiviert ist
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:
subscriber.VideoDisabled += Subscriber_VideoDisabled;
private void Subscriber_VideoDisabled(object sender, EventArgs e) {
// Display the video disabled indicator
}
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:
subscriber.VideoEnabled += Subscriber_VideoEnabled;
private void Subscriber_VideoEnabled(object sender, EventArgs e) {
// Display the video disabled indicator
}
In Sitzungen, die den OpenTok Media Router (Sitzungen, bei denen der Medienmodus auf geroutet eingestellt ist), kann das Subscribe auch die folgenden Ereignisse senden:
VideoDisableWarning— Der OpenTok Media Router hat festgestellt, dass sich die Stream-Qualität verschlechtert hat, und das Video wird deaktiviert, sollte sich die Qualität weiter verschlechtern.VideoDisableWarningLifted— Der OpenTok Media Router hat festgestellt, dass sich die Stream-Qualität so weit verbessert hat, dass die Deaktivierung des Videos kein unmittelbares Risiko mehr darstellt.
Sie können auch eine Benachrichtigung der Benutzeroberfläche (z. B. ein Symbol) anzeigen und entfernen, wenn diese Ereignisse gesendet werden.
Beachten Sie, dass Sie beim Instanziieren eines Publisher-Objekts den Audio-Fallback für Publisher und Subscriber für den veröffentlichten Stream aktivieren oder deaktivieren. Die Audio-Fallback-Funktion deaktiviert die Videoübertragung (bei Publishern und Subscribern), wenn die Netzwerk- oder CPU-Bedingungen die Videoübertragung nicht unterstützen. Siehe Audio-Fallback (Windows).
Wenn Sie das Audio-Fallback des Anbieters aktivieren, wird das Publisher sendet die folgenden Ereignisse im Zusammenhang mit dem Audio-Fallback:
VideoDisabledVideoEnabledVideoDisableWarningVideoDisableWarningLifted
Als Reaktion auf diese Ereignisse können Sie UI-Anzeigen einblenden.
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), 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:
session.ArchiveStarted += Session_ArchiveStarted;
session.ArchiveStopped += Session_ArchiveStopped;
private void Session_ArchiveStarted(object sender, EventArgs e) {
// Display the archive indicator
}
private void Session_ArchiveStopped(object sender, EventArgs e) {
// Hide the archive indicator
}
Anpassung der Benutzeroberfläche auf der Grundlage von Audiopegeln
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:
@Override
publisher.AudioLevel += Publisher_AudioLevel;
subscriber.AudioLevel += Subscriber_AudioLevel;
private void Publisher_AudioLevel(object sender, EventArgs e) {
// Display the audio level based on e.AudioLevel
}
private void Subscriber_AudioLevel(object sender, EventArgs e) {
// Display the audio level based on e.AudioLevel
}
Anmerkung: Der Audiopegel eines Publishers ist erst verfügbar, wenn dessen Stream in einer Sitzung veröffentlicht wurde. Um eine Vorschau des Audios zu erhalten, bevor der Publisher mit dem Streaming in die Sitzung beginnt, verwenden Sie einen benutzerdefinierter Audiotreiber.
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:
publisher = new Publisher.Builder(_context)
{
AllowAudioCaptureWhileMuted = true
}.Build();
Hinweis: Wenn Sie dieses Verhalten aktivieren, wird das Mikrofon auch dann verwendet, wenn der Herausgeber stummgeschaltet ist.
Verwendung eines benutzerdefinierten Video-Renderers
Standardmäßig verwenden Publisher einen Standard-Video-Renderer für Windows Presentation Foundation, der durch das OpenTok 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).