你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
多媒体重定向将远程会话中的视频播放和通话从 Azure 虚拟桌面、Windows 365 云电脑或Microsoft Dev Box 重定向到本地设备,以便更快地处理和呈现。
呼叫重定向优化基于 WebRTC 的通话应用的音频呼叫,减少延迟并提高通话质量。 连接发生在本地设备和电话应用服务器之间,其中 WebRTC 呼叫从远程会话卸载到本地设备。 建立连接后,通话质量将依赖于网页或应用提供商,就像使用非重定向呼叫一样。
呼叫重定向可与大多数基于 WebRTC 的通话应用配合使用,而无需修改。 但是,可能存在不支持的方案,或者你可能希望在远程会话中提供不同的体验。
本文提供有关支持的 API 接口和实例方法的信息,并介绍了可与 Navigator 接口的 属性一起使用mediaDevices的 JavaScript 代码片段。
导航器接口是 媒体捕获和流 API 的一部分,用于将网站与呼叫重定向集成。 这些 API 与 WebRTC API 一起支持使用基于 WebRTC 的通话应用流式处理音频和视频数据。 多媒体重定向取代了 API 中 对象的实现 mediaDevices ,用于检测呼叫重定向、处理断开连接和重新连接事件以及收集诊断信息。
提示
如果想要测试与多媒体重定向的集成,可以启用呼叫重定向,使其可用于所有网站。 有关详细信息,请参阅 为所有用于测试的站点启用呼叫重定向。
支持的 API 接口和实例方法
呼叫重定向旨在将呼叫从远程会话重定向到本地设备的实现无缝替换标准 WebRTC 用法。
下面是从 媒体捕获和流 API 和 WebRTC API 调用重定向所使用的受支持接口和实例方法的列表:
AnalyserNodeAudioContextHTMLAudioElementMediaDevicesMediaStreamMediaStreamAudioDestinationNodeMediaStreamAudioSourceNodeMediaStreamTrackRTCDataChannelRTCPeerConnectionRTCRtpReceiverRTCRtpSenderRTCRtpTransceiver
已知限制
调用重定向具有以下 API 限制:
目前仅支持有限数量的
WebAudio节点。setSinkIdHTMLAudioElement适用于 WebRTCsrcObject轨道,但任何本地播放(如铃声)始终在远程会话的默认音频输出上播放。由于某些 API 在正常情况下同步返回,但在与调用重定向一起使用时必须是代理,因此对象的状态可能不立即可用。
检测呼叫重定向
若要检测调用重定向是否处于活动状态,可以检查 isCallRedirectionEnabled 对象的 属性MediaDevices。 如果此属性为 true,则调用重定向处于活动状态。 如果此属性为 undefined 或 false,则调用重定向不处于活动状态。
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
检测与远程会话断开连接
当用户在网页上使用呼叫重定向时断开连接并重新连接到远程会话时,支持对象的本地 WebRTC 实例不再可用。 通常,如果用户刷新页面,他们就可以再次拨打电话。
网页可以通过删除并重新创建所有 WebRTC 对象、音频或视频元素以及 或 MediaStreamTrack 接口来检测和处理这些断开连接和MediaStream重新连接事件。 此方法无需刷新网页。
若要获取有关这些事件的通知,请在 rdpClientConnectionStateChanged 对象上 MediaDevices 注册 事件,如以下示例所示。 此事件包含新状态,可以是 connected 或 disconnected。
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
呼叫重定向诊断
以下示例列出对象上 MediaDevices 公开的属性。 它们提供有关所使用的呼叫重定向版本和会话标识符的特定诊断信息。 向Microsoft报告问题时,此信息非常有用,建议将其作为自己的遥测或诊断数据的一部分进行收集。
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
下面是每个属性所表示的内容:
mmrClientVersion:本地计算机上的文件
MsMmrDVCPlugin.dll版本,作为Windows App和远程桌面应用的一部分提供。mmrHostVersion:在会话主机、云电脑或开发箱上安装的文件
MsMMRHost.exe版本。mmrExtensionVersion:在浏览器中运行的Microsoft多媒体重定向扩展的版本。
activityId:Microsoft用于将遥测关联到特定会话并映射到当前网页多媒体重定向的唯一标识符。
connectionId:一个唯一标识符,Microsoft使用该标识符将遥测数据关联到特定会话,并且与本地设备和远程会话之间的给定连接相关。
在浏览器扩展的详细信息中,最终用户可以使用所有这些信息,但此示例提供了一种编程方式来收集这些信息。
呼叫重定向日志
默认情况下,多媒体重定向不会记录到控制台。 浏览器扩展有一个按钮,供用户收集日志。 以下示例演示如何以编程方式启用控制台日志。 如果要进行集成或捕获需要比浏览器扩展界面中的 选项更长的日志运行时间的问题,则可能需要以编程方式启用控制台日志。
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
你可能还希望以编程方式收集多媒体重定向日志以帮助进行调查。 也可以通过注册 mmrExtensionLog 文档上的 事件来获取网页的所有日志。
事件对象在 详细信息下有两个属性:
级别:表示条目的跟踪类型,并允许筛选特定事件。 Level 是以下值之一:
- info
- 详细
- 警告
- error
消息:基于文本的跟踪消息。
以下示例演示如何注册 mmrExtensionLog 事件:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
提交网站以供审阅或请求帮助
如果您代表 ISV,并且希望将网站添加到 网站列表以进行呼叫重定向,或者您需要帮助将您的网站与呼叫重定向集成, 请完成并提交此表单。
相关内容
详细了解远程 会话中视频播放和通话的多媒体重定向。