Интеграция разработчика с перенаправлением мультимедиа для приложений на основе WebRTC в удаленном сеансе
Перенаправление мультимедиа перенаправляет воспроизведение видео и вызовы в удаленном сеансе с виртуального рабочего стола Azure, Облачный компьютер Windows 365 или Microsoft Dev Box на локальное устройство для ускорения обработки и отрисовки.
Перенаправление звонков оптимизирует аудиозвонки для приложений на основе WebRTC, снижает задержку и улучшает качество звонков. Подключение происходит между локальным устройством и сервером приложений телефонии, где вызовы WebRTC выгружаются из удаленного сеанса на локальное устройство. После установления подключения качество вызова будет зависеть от веб-страницы или поставщиков приложений, так же, как и при ненаправленном вызове.
Перенаправление вызовов может работать с большинством приложений на основе WebRTC без изменений. Однако могут возникнуть неподдерживаемые сценарии или может потребоваться предоставить другой интерфейс в удаленном сеансе.
В этой статье содержатся сведения о поддерживаемых интерфейсах API и методах экземпляров, а также фрагменты кода JavaScript, которые можно использовать со mediaDevices
свойством интерфейса Навигатора.
Интерфейс навигатора является частью API отслеживания и потоков мультимедиа для интеграции веб-сайта с перенаправлением вызовов. Вместе с API WebRTC эти API обеспечивают поддержку потоковой передачи звуковых и видеоданных с помощью приложений на основе WebRTC. Перенаправление мультимедиа заменяет реализацию mediaDevices
объекта в API для обнаружения перенаправления вызовов, обработки событий отключения и повторного подключения и сбора диагностических сведений.
Совет
Если вы хотите протестировать интеграцию с перенаправлением мультимедиа, вы можете включить перенаправление звонков для всех веб-сайтов. Дополнительные сведения см. в разделе "Включение перенаправления вызовов для всех сайтов для тестирования".
Поддерживаемые интерфейсы API и методы экземпляров
Перенаправление вызовов предназначено для простой замены стандартного использования WebRTC реализацией, которая перенаправляет вызовы из удаленного сеанса на локальное устройство.
Ниже приведен список поддерживаемых интерфейсов и методов экземпляров, используемых перенаправлением вызовов из API отслеживания мультимедиа и потоков и API WebRTC:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
Известные ограничения
Перенаправление вызовов имеет следующие ограничения API:
В настоящее время поддерживается только ограниченное количество
WebAudio
узлов.setSinkId
HTMLAudioElement
в работе для треков WebRTCsrcObject
, однако любое локальное воспроизведение, например кольцо, всегда воспроизводится на выходе звука по умолчанию удаленного сеанса.Так как некоторые API возвращают синхронно в обычных условиях, но должны быть прокси-серверами при использовании с перенаправлением вызовов, возможно, состояние объекта недоступно немедленно.
Обнаружение перенаправления вызовов
Чтобы определить, активна ли перенаправление вызовов, можно проверить isCallRedirectionEnabled
свойство MediaDevices
объекта. Если это свойство имеет true
значение , перенаправление вызовов активно. Если это свойство или undefined
false
, перенаправление вызовов не активен.
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
Обнаружение отключения от удаленного сеанса
Когда пользователь отключает и повторно подключается к удаленному сеансу при использовании перенаправления вызовов на веб-странице, локальный экземпляр WebRTC, поддерживающий объекты, больше недоступен. Как правило, если пользователь обновляет страницу, он может снова вызывать.
Веб-страница может обнаруживать и обрабатывать эти события отключения и повторного подключения путем разрыва и повторного восстановления всех объектов WebRTC, аудио-элементов или видео и MediaStream
MediaStreamTrack
интерфейсов. Этот подход устраняет необходимость обновления веб-страницы.
Чтобы получить уведомление об этих событиях, зарегистрируйте rdpClientConnectionStateChanged
событие в MediaDevices
объекте, как показано в следующем примере. Это событие содержит новое состояние, которое может быть либо connected
disconnected
.
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
Перенаправление вызовов диагностика
В следующем примере перечислены свойства, предоставляемые объектом MediaDevices
. Они предоставляют определенные диагностические сведения о версиях используемого перенаправления вызовов и идентификаторах сеансов. Эта информация полезна при отправке отчетов корпорации Майкрософт и рекомендуется собирать их как часть собственных данных телеметрии или диагностика данных.
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
Вот что представляет каждое свойство:
mmrClientVersion: версия файла
MsMmrDVCPlugin.dll
на локальном компьютере, которая входит в состав приложения Windows и приложения удаленного рабочего стола.mmrHostVersion: версия файла
MsMMRHost.exe
, установленного на узле сеанса, облачном компьютере или поле разработки.mmrExtensionVersion: версия расширения перенаправления мультимедиа Майкрософт, запущенного в браузере.
activityId: уникальный идентификатор, который корпорация Майкрософт использует для связывания телеметрии с определенным сеансом и сопоставляется с текущим перенаправлением мультимедиа веб-страницы.
connectionId: уникальный идентификатор, который корпорация Майкрософт использует для связывания телеметрии с определенным сеансом и относится к заданному соединению между локальным устройством и удаленным сеансом.
Все эти сведения доступны конечному пользователю в подробных сведениях о расширении браузера, но в этом примере предоставляется программный способ его сбора.
Журналы перенаправления вызовов
По умолчанию перенаправление мультимедиа не регистрируется в консоли. Расширение браузера имеет кнопку, чтобы пользователи собирали журналы. В следующем примере показано, как включить журналы консоли программным способом. Возможно, вы хотите включить журналы консоли программным способом, если вы работаете над интеграцией или записываете проблему, требующую более длительных журналов, чем параметр в интерфейсе расширения браузера.
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
Кроме того, может потребоваться программно собирать журналы перенаправления мультимедиа для помощи в расследованиях. Все журналы веб-страницы также доступны путем регистрации mmrExtensionLog
события в документе.
Объект события имеет два свойства под подробными сведениями:
Уровень: обозначает тип трассировки записи и позволяет фильтровать определенные события. Уровень является одним из следующих значений:
- info
- verbose
- предупреждений (не рекомендуется)
- error
Сообщение: текстовое сообщение трассировки.
В следующем примере показано, как зарегистрировать mmrExtensionLog
событие:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
Связанный контент
Дополнительные сведения о перенаправлении мультимедиа для воспроизведения видео и вызовов в удаленном сеансе.