Integracja deweloperów z przekierowywaniem multimediów dla aplikacji wywołujących opartych na protokole WebRTC w sesji zdalnej
Przekierowywanie multimediów przekierowuje odtwarzanie wideo i wywołania w sesji zdalnej z usługi Azure Virtual Desktop, Komputer w chmurze Windows 365 lub Microsoft Dev Box do urządzenia lokalnego w celu szybszego przetwarzania i renderowania.
Przekierowywanie połączeń optymalizuje wywołania audio dla aplikacji wywołujących opartych na protokole WebRTC, zmniejszając opóźnienia i poprawiając jakość połączeń. Połączenie odbywa się między urządzeniem lokalnym a serwerem aplikacji telefonii, gdzie wywołania WebRTC są odciążane z sesji zdalnej do urządzenia lokalnego. Po nawiązaniu połączenia jakość wywołań staje się zależna od strony internetowej lub dostawców aplikacji, podobnie jak w przypadku wywołania nie przekierowanego.
Przekierowywanie wywołań może współdziałać z większością aplikacji wywołujących opartych na protokole WebRTC bez modyfikacji. Jednak w sesji zdalnej mogą występować nieobsługiwane scenariusze lub może być konieczne udostępnienie innego środowiska.
Ten artykuł zawiera informacje o obsługiwanych interfejsach API i metodach wystąpień oraz przedstawiono fragmenty kodu JavaScript, których można używać z mediaDevices
właściwością interfejsu Nawigator.
Interfejs nawigatora jest częścią interfejsu API przechwytywania multimediów i strumieni w celu zintegrowania witryny internetowej z przekierowaniem wywołań. Wraz z interfejsem API WebRTC te interfejsy API zapewniają obsługę przesyłania strumieniowego danych audio i wideo za pomocą aplikacji do wywoływania opartych na protokole WebRTC. Przekierowywanie multimediów zastępuje implementację mediaDevices
obiektu w interfejsach API w celu wykrywania przekierowania wywołań, obsługi rozłączania i ponownego łączenia zdarzeń oraz zbierania informacji diagnostycznych.
Napiwek
Jeśli chcesz przetestować integrację z przekierowywaniem multimediów, możesz włączyć przekierowywanie wywołań, aby było dostępne dla wszystkich witryn sieci Web. Aby uzyskać więcej informacji, zobacz Włączanie przekierowywania wywołań dla wszystkich witryn na potrzeby testowania.
Obsługiwane interfejsy API i metody wystąpień
Przekierowanie wywołań zostało zaprojektowane tak, aby bezproblemowo zastąpić standardowe użycie usługi WebRTC implementacją, która przekierowuje wywołania z sesji zdalnej do urządzenia lokalnego.
Oto lista obsługiwanych interfejsów i metod wystąpień używanych przez przekierowywanie wywołań z interfejsu API przechwytywania multimediów i strumieni oraz interfejsu API WebRTC:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
Znane ograniczenia
Przekierowanie wywołań ma następujące ograniczenia interfejsu API:
Obecnie obsługiwana jest tylko ograniczona liczba węzłów
WebAudio
.setSinkId
HTMLAudioElement
na działa dla utworów WebRTCsrcObject
, jednak wszelkie lokalne odtwarzanie, takie jak dzwonek, zawsze odtwarzane na domyślnych danych wyjściowych audio sesji zdalnej.Ponieważ niektóre interfejsy API zwracają synchronicznie w normalnych warunkach, ale muszą być serwerami proxy w przypadku użycia z przekierowaniem wywołań, możliwe, że stan obiektu nie jest dostępny natychmiast.
Wykrywanie przekierowania wywołań
Aby wykryć, czy przekierowanie wywołań jest aktywne, możesz sprawdzić isCallRedirectionEnabled
właściwość MediaDevices
obiektu. Jeśli ta właściwość to true
, przekierowanie wywołań jest aktywne. Jeśli ta właściwość jest undefined
lub false
, przekierowanie wywołań nie jest aktywne.
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
Wykrywanie rozłączenia z sesji zdalnej
Gdy użytkownik rozłącza się i ponownie nawiąż połączenie z sesją zdalną podczas korzystania z przekierowania wywołań na stronie internetowej, lokalne wystąpienie webRTC, które obsługuje obiekty, nie jest już dostępne. Zazwyczaj jeśli użytkownik odświeża stronę, może wykonywać wywołania ponownie.
Strona internetowa może wykrywać i obsługiwać te zdarzenia rozłączania i ponownego łączenia, usuwając i odtwarzając wszystkie obiekty WebRTC, elementy audio lub wideo oraz MediaStream
MediaStreamTrack
interfejsy. Takie podejście eliminuje konieczność odświeżenia strony internetowej.
Aby otrzymywać powiadomienia o tych zdarzeniach, zarejestruj rdpClientConnectionStateChanged
zdarzenie w MediaDevices
obiekcie, jak pokazano w poniższym przykładzie. To zdarzenie zawiera nowy stan, który może mieć connected
wartość lub disconnected
.
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
Diagnostyka przekierowania wywołań
W poniższym przykładzie wymieniono właściwości uwidocznione w MediaDevices
obiekcie. Udostępniają one określone informacje diagnostyczne dotyczące wersji używanego przekierowania wywołań i identyfikatorów sesji. Te informacje są przydatne podczas raportowania problemów do firmy Microsoft i zalecamy ich zbieranie w ramach własnych danych telemetrycznych lub diagnostycznych.
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
Oto, co reprezentuje każda właściwość:
mmrClientVersion: wersja pliku
MsMmrDVCPlugin.dll
na komputerze lokalnym, która jest częścią aplikacji systemu Windows i aplikacji pulpitu zdalnego.mmrHostVersion: wersja pliku
MsMMRHost.exe
zainstalowanego na hoście sesji, komputerze w chmurze lub polu deweloperskim.mmrExtensionVersion: wersja rozszerzenia przekierowania multimediów firmy Microsoft uruchomionego w przeglądarce.
activityId: unikatowy identyfikator używany przez firmę Microsoft do kojarzenia danych telemetrycznych z określoną sesją i mapowania do bieżącej przekierowania multimedialnego strony internetowej jest przekierowywany.
connectionId: unikatowy identyfikator używany przez firmę Microsoft do kojarzenia danych telemetrycznych z określoną sesją i odnosi się do danego połączenia między urządzeniem lokalnym a sesją zdalną.
Wszystkie te informacje są dostępne dla użytkownika końcowego w szczegółach rozszerzenia przeglądarki, ale w tym przykładzie przedstawiono programowy sposób ich zbierania.
Dzienniki przekierowania wywołań
Domyślnie przekierowywanie multimediów nie loguje się do konsoli. Rozszerzenie przeglądarki ma przycisk umożliwiający użytkownikom zbieranie dzienników. W poniższym przykładzie pokazano, jak programowo włączyć dzienniki konsoli. Możesz włączyć dzienniki konsoli programowo, jeśli pracujesz nad integracją lub przechwytujesz problem, który wymaga dłuższych dzienników uruchomionych niż opcja w interfejsie rozszerzenia przeglądarki.
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
Możesz również programowo zbierać dzienniki przekierowania multimediów, aby pomóc w dochodzeniu. Wszystkie dzienniki dla strony internetowej są również dostępne przez zarejestrowanie mmrExtensionLog
zdarzenia w dokumencie.
Obiekt zdarzenia ma dwie właściwości szczegółowo:
Poziom: określa rodzaj śledzenia wpisu i umożliwia filtrowanie pod kątem określonych zdarzeń. Poziom jest jedną z następujących wartości:
- informacje o
- tryb pełny
- ostrzeżenie
- error
Komunikat: wiadomość śledzenia oparta na tekście.
W poniższym przykładzie pokazano, jak zarejestrować się w przypadku mmrExtensionLog
zdarzenia:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
Powiązana zawartość
Dowiedz się więcej o przekierowywaniu multimediów na potrzeby odtwarzania wideo i wywołań w sesji zdalnej.