Freigeben über


Integration von Entwicklern mit Multimediaumleitung für WebRTC-basierte Aufrufen von Apps in einer Remotesitzung

Die Multimediaumleitung leitet die Videowiedergabe und Anrufe in einer Remotesitzung von Azure Virtual Desktop, einem Windows 365 Cloud-PC oder Microsoft Dev Box an Ihr lokales Gerät um, um die Verarbeitung und das Rendering zu beschleunigen.

Die Anrufumleitung optimiert Audioanrufe für WebRTC-basierte Anruf-Apps, reduziert die Latenz und verbessert die Anrufqualität. Die Verbindung erfolgt zwischen dem lokalen Gerät und dem Telefonie-App-Server, bei dem WebRTC-Anrufe von einer Remotesitzung auf ein lokales Gerät ausgelagert werden. Nachdem die Verbindung hergestellt wurde, hängt die Anrufqualität von der Webseite oder den App-Anbietern ab, genau wie bei einem nicht umgeleiteten Aufruf.

Die Anrufumleitung kann mit den meisten WebRTC-basierten Anruf-Apps ohne Änderungen funktionieren. Es gibt jedoch möglicherweise nicht unterstützte Szenarien, oder Sie möchten eine andere Benutzeroberfläche in einer Remotesitzung bereitstellen.

Dieser Artikel enthält Informationen zu unterstützten API-Schnittstellen und instance Methoden und zeigt JavaScript-Codeausschnitte, die Sie mit der mediaDevices -Eigenschaft der Navigator-Schnittstelle verwenden können.

Die Navigator-Schnittstelle ist Teil der Media Capture and Streams-API , um Ihre Website in die Aufrufumleitung zu integrieren. Zusammen mit der WebRTC-API bieten diese APIs Unterstützung für das Streaming von Audio- und Videodaten mit WebRTC-basierten Aufrufen von Apps. Die Multimediaumleitung ersetzt die Implementierung des mediaDevices -Objekts in den APIs, um Aufrufumleitungen zu erkennen, Trennungs- und Verbindungswiedenereignisse zu behandeln und Diagnoseinformationen zu sammeln.

Tipp

Wenn Sie Ihre Integration mit multimedialer Umleitung testen möchten, können Sie die Anrufumleitung aktivieren, um für alle Websites verfügbar zu sein. Weitere Informationen finden Sie unter Aktivieren der Aufrufumleitung für alle Websites zum Testen.

Unterstützte API-Schnittstellen und instance Methoden

Die Anrufumleitung ist so konzipiert, dass die Standardmäßige WebRTC-Verwendung nahtlos durch eine Implementierung ersetzt wird, die Aufrufe von einer Remotesitzung an das lokale Gerät umleitet.

Im Folgenden finden Sie eine Liste der unterstützten Schnittstellen und instance Methoden, die von der Aufrufumleitung von der Media Capture and Streams-API undder WebRTC-API verwendet werden:

Bekannte Einschränkungen

Für die Aufrufumleitung gelten die folgenden API-Einschränkungen:

  • Derzeit wird nur eine begrenzte Anzahl von WebAudio Knoten unterstützt.

  • setSinkId HTMLAudioElement funktioniert für WebRTC-TitelsrcObject, aber jede lokale Wiedergabe, z. B. ein Klingelton, wird immer auf der Standardaudioausgabe der Remotesitzung wiedergegeben.

  • Da einige APIs unter normalen Bedingungen synchron zurückgeben, aber proxys sein müssen, wenn sie mit der Aufrufumleitung verwendet werden, ist es möglich, dass der Zustand eines Objekts nicht sofort verfügbar ist.

Erkennen der Anrufumleitung

Um zu ermitteln, ob die Aufrufumleitung aktiv ist, können Sie die isCallRedirectionEnabled -Eigenschaft des MediaDevices -Objekts überprüfen. Wenn diese Eigenschaft ist true, ist die Aufrufumleitung aktiv. Wenn diese Eigenschaft oder falseistundefined, ist die Aufrufumleitung nicht aktiv.

window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;

Erkennen der Trennung von einer Remotesitzung

Wenn ein Benutzer die Verbindung mit einer Remotesitzung trennt und erneut eine Verbindung mit einer Remotesitzung herstellt, wenn die Anrufumleitung auf einer Webseite verwendet wird, ist die lokale WebRTC-instance, die die Objekte unterstützt hat, nicht mehr verfügbar. Wenn ein Benutzer die Seite aktualisiert, kann er in der Regel erneut Anrufe tätigen.

Die Webseite kann diese Ereignisse zum Trennen und Wiederherstellen der Verbindung erkennen und behandeln, indem alle WebRTC-Objekte, Audio- oder Videoelemente und oder MediaStreamTrack -Schnittstellen heruntergefahren und MediaStream neu erstellt werden. Durch diesen Ansatz entfällt die Notwendigkeit, die Webseite zu aktualisieren.

Um über diese Ereignisse benachrichtigt zu werden, registrieren Sie das rdpClientConnectionStateChanged -Ereignis für das MediaDevices -Objekt, wie im folgenden Beispiel gezeigt. Dieses Ereignis enthält den neuen Zustand, der entweder connected oder disconnectedsein kann.

navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () => 
    console.log("state change: " + event.detail.state);
);

Anrufumleitungs-Diagnose

Im folgenden Beispiel werden die Eigenschaften aufgelistet, die für das MediaDevices -Objekt verfügbar gemacht werden. Sie stellen spezifische Diagnoseinformationen zu den verwendeten Versionen der Anrufumleitung und Sitzungsbezeichner bereit. Diese Informationen sind nützlich, wenn Sie Probleme an Microsoft melden, und es wird empfohlen, sie als Teil Ihrer eigenen Telemetriedaten oder Diagnose Daten zu sammeln.

window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];

window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];

Die einzelnen Eigenschaften stellen folgendes dar:

  • mmrClientVersion: Die Version der Datei MsMmrDVCPlugin.dll auf dem lokalen Computer, die teil von Windows App und der Remotedesktop-App ist.

  • mmrHostVersion: Die Version der Datei MsMMRHost.exe , die auf dem Sitzungshost, Cloud-PC oder der Dev-Box installiert ist.

  • mmrExtensionVersion: Die Version der Microsoft Multimedia Redirection-Erweiterung, die im Browser ausgeführt wird.

  • activityId: Ein eindeutiger Bezeichner, der von Microsoft verwendet wird, um Telemetriedaten einer bestimmten Sitzung zuzuordnen und der aktuellen Multimediaumleitung der Webseite zuzuordnen.

  • connectionId: Ein eindeutiger Bezeichner, der von Microsoft verwendet wird, um Telemetriedaten einer bestimmten Sitzung zuzuordnen, und bezieht sich auf die angegebene Verbindung zwischen dem lokalen Gerät und der Remotesitzung.

Alle diese Informationen stehen dem Endbenutzer in den Details der Browsererweiterung zur Verfügung, aber dieses Beispiel bietet eine programmgesteuerte Möglichkeit, sie zu sammeln.

Anrufumleitungsprotokolle

Standardmäßig wird die Multimediaumleitung nicht in der Konsole protokolliert. Die Browsererweiterung verfügt über eine Schaltfläche zu , damit Benutzer Protokolle sammeln können. Das folgende Beispiel zeigt, wie Sie Konsolenprotokolle programmgesteuert aktivieren können. Möglicherweise möchten Sie Konsolenprotokolle programmgesteuert aktivieren, wenn Sie an der Integration arbeiten oder ein Problem erfassen, das länger ausgeführte Protokolle erfordert, als die Option in der Browsererweiterungsschnittstelle bietet.

window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;

Sie können auch multimediale Umleitungsprotokolle programmgesteuert sammeln, um Untersuchungen zu unterstützen. Alle Protokolle für die Webseite sind auch verfügbar, indem Sie sich für das mmrExtensionLog Ereignis im Dokument registrieren.

Das Ereignisobjekt weist im Detail zwei Eigenschaften auf:

  • Ebene: Gibt an, welche Art von Ablaufverfolgung der Eintrag ist, und ermöglicht es Ihnen, nach bestimmten Ereignissen zu filtern. Level ist einer der folgenden Werte:

    • info
    • wortreich
    • warning
    • error
  • Meldung: die textbasierte Ablaufverfolgungsmeldung.

Das folgende Beispiel zeigt, wie Sie sich für das mmrExtensionLog Ereignis registrieren:

document.addEventListener('mmrExtensionLog', () =>
    console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);

Übermitteln Ihrer Website zur Überprüfung oder Anfordern von Unterstützung

Wenn Sie einen ISV vertreten und möchten, dass Ihre Website der Liste der Websites zur Anrufumleitung hinzugefügt wird, oder wenn Sie Unterstützung bei der Integration Ihrer Website mit Anrufumleitung benötigen, füllen Sie dieses Formular aus, und übermitteln Sie es.

Erfahren Sie mehr über die Multimediaumleitung für die Videowiedergabe und Anrufe in einer Remotesitzung.