以下各部分介绍了与通信服务 JavaScript 语音和视频通话 SDK 相关的已知问题。
Chrome M115 - 回归
Chrome 版本 115 for Android 在进行视频通话时引入了回归 - 此 bug 的结果是,使用此 Chrome 版本在 ACS 上拨打电话的用户在组和 ACS-MS Teams 通话中没有传出视频。
这是
Chromium
中引入的已知回归
作为短期缓解措施,请指示用户在 Android 上使用 Microsoft Edge 或 Firefox,或避免在 Android 上使用 Google Chrome 115/116
Firefox 已知问题
Firefox 桌面浏览器支持现在以公共预览版提供。 已知问题包括:
扬声器枚举功能不可用:使用 Firefox 时,应用无法通过通信服务设备管理器枚举或选择扬声器。 在这种情况下,必须通过操作系统选择设备。
目前在进行 Firefox 桌面音频\视频呼叫时不支持虚拟相机。
iOS Chrome 已知问题
iOS Chrome 浏览器支持现已以公共预览版提供。 已知问题包括:
将浏览器切换到后台或锁定设备时,无传出和传入音频
蓝牙头戴显示设备没有传入/传出音频。 当用户在 ACS 呼叫中连接蓝牙耳机时,音频仍从扬声器传出,直到用户锁定并解锁电话。 我们已在较旧的 iOS 版本( (15.6、15.7) )上看到此问题,并且无法在 iOS 16 上重现。
在调用期间将浏览器置于后台时,iOS 16 引入了 bug
iOS 16 版本引入了一个 bug,该 bug 可在使用 Safari 移动浏览器时停止 ACS 音频\视频呼叫。 苹果已经意识到了这个问题,并正在寻找一个解决方案在他们身边。 影响可能是这样的:ACS 呼叫可能会在呼叫期间停止工作,唯一能使其正常工作的解决方法是让最终客户重启其手机。
若要重现此 bug,请执行以下操作:
让用户使用一台运行 iOS 16 的 iPhone
使用 Safari iOS 移动浏览器(通过音频或者通过音频和视频)加入 ACS 呼叫
如果在呼叫过程中有人将 Safari 浏览器置于后台并观看 YouTube,或者在通过蓝牙设备连接时收到 FaceTime\电话呼叫
出现这种情况几分钟后,传入和传出视频可能会中断。
让 ACS 呼叫恢复的唯一方法是让最终用户重启其手机。
Chrome M98 - 回归
Chrome 版本 98 引入了视频关键帧生成异常的回归,对大多数用户 (70% 以上的用户) 对已发送视频流的分辨率产生负面影响。
这是
Chromium
中引入的已知回归
通话期间无传入音频
有时,ACS 呼叫中的用户可能无法听到来自远程参与者的音频。
有一个相关的
Chromium
bug 导致了此问题,可以通过重新连接 PeerConnection 来缓解该问题。 自 SDK 1.9.1 (稳定) 和 SDK 1.10.0 (beta 版)
在 Android Chrome 上,如果用户多次加入 ACS 呼叫,传入的音频也可能消失。 在刷新页面之前,用户无法听到来自其他参与者的音频。 我们在 SDK 1.10.1-beta.1 中修复了此问题,并改进了音频资源的使用情况。
部分 Android 设备通话失败的场景(群组通话除外)。
许多特定的 Android 设备无法开启、接听通话和会议。 遇到此问题的设备将不会恢复,并且会在每次尝试时失败。 这些设备主要是 Samsung A 型号的设备,尤其是 A326U、A125U 和 A215U 型号。
这是在
Chromium
上引入的已知回归。
Android Chrome 在浏览器进入后台一分钟后将呼叫静音
在 Android Chrome 上,如果用户正在执行 ACS 调用并将浏览器置于后台一分钟。 麦克风将失去访问权限,呼叫中的其他参与者无法听到用户的音频。 用户将浏览器带到前台后,麦克风将再次可用。
此处
和
此处
的相关铬 bug
移动 (iOS 和 Android) 用户已放弃呼叫,但仍显示在参与者列表中。
如果移动用户在不使用 Call.hangUp () API 的情况下离开 ACS 组呼叫,则可能会出现此问题。 当移动用户关闭浏览器或刷新网页而不挂断时,群组呼叫中的其他参与者仍将在参与者列表中看到此移动用户约 60 秒。
如果用户转到另一个应用并返回浏览器,iOS Safari 将刷新页面
如果 ACS 中的用户使用 iOS Safari 通话,并切换到其他应用一段时间,则可能会出现此问题。 用户返回浏览器后,浏览器页面可能会刷新。 这是因为 OS 会终止浏览器。 缓解此问题的一种方法是保留某些状态并在页面刷新后恢复。
加入群组呼叫或 Microsoft Teams 会议的 iOS 15.1 用户。
有时,在收到传入的 PSTN 时,带有呼叫或会议的选项卡会挂起。
此处
和
此处
提供了相关的 WebKit bug。
当 iOS Safari 和 Android Chrome 发生某些中断时,本地麦克风/相机会静音。
如果另一个应用程序或操作系统接替了对麦克风或相机的控制,则可能会出现此问题。 下面是用户在通话过程中可能会发生的一些示例:
来电通过 PSTN(公用电话交换网)传入,并捕获麦克风设备访问权限。
例如,用户播放 YouTube 视频或发起 FaceTime 通话。 切换到另一个原生应用程序可以捕获对麦克风或相机的访问权限。
用户启用 Siri 后,它将捕获对麦克风的访问权限。
例如,在 iOS 上,在 ACS 呼叫中,如果 PSTN 呼叫传入,则会引发 microphoneMutedUnexepectedly 错误的 UFD,音频将停止在 ACS 呼叫中流动,呼叫将标记为静音。 PSTN 呼叫结束后,用户必须去取消 ACS 呼叫,以便音频再次在 ACS 呼叫中流动。 对于 Android Chrome,当 PSTN 呼叫传入时,音频将停止在 ACS 呼叫中流动,ACS 呼叫不会标记为静音。 在这种情况下,没有 microphoneMutedUnexepectedly UFD 事件。 PSTN 呼叫完成后,Android Chrome 将自动重新获得音频,音频将在 ACS 呼叫中再次开始正常流动。
如果相机已打开且发生中断,ACS 调用可能会丢失相机,也可能不会丢失相机。 如果丢失,则相机将被标记为关闭,用户必须在中断释放相机后重新打开它。
有时,麦克风或相机设备无法按时释放,这可能会导致原始通话问题。 例如,如果用户在观看 YouTube 视频时尝试取消静音,或者 PSTN 通话同时处于活动状态。
如果用户位于 iOS 15.2+ 上,并且使用 SDK 版本 1.4.1-beta.1+,则传入视频流不会停止呈现,并且仍将需要取消静音/启动视频步骤以重新启动传出的音频和视频。
对于 iOS 15.4+,在大多数情况下,音频和视频应该能够自动恢复。 在有些情况下,若要取消静音,应用程序必须调用指向“取消静音”的 API(可以是用户操作的结果)才能恢复传出的音频。
如果用户尝试从前置相机切换到后置相机,装有 Safari 的 iOS 会崩溃并刷新页面。
Azure 通信服务呼叫 SDK 版本 1.2.3-beta.1 中存在的一个 bug 会影响从 iOS Safari 发出的所有呼叫。 当用户尝试将相机视频流从前置相机切换到后置相机时,就会出现此问题。 切换相机会导致 Safari 浏览器崩溃并重新加载页面。
此问题在 Azure 通信服务呼叫 SDK 版本 1.3.1-beta.1 + 中进行了修复。
iOS Safari 版本:15.1
macOS Ventura Safari (v16.3 及更低版本中的屏幕共享)
屏幕共享不适用于 macOS Ventura Safari (v16.3 及更低版本) 。 来自 Safari 的已知问题,将在 v16.4+ 中修复
刷新页面不会立即将用户从其通话中删除
如果用户处于通话中并决定刷新页面,则通信服务媒体服务不会立即从通话中删除此用户。 它将等待用户重新加入。 媒体服务超时后,将从通话中删除该用户。
最好是构建在通话时不要求最终用户刷新应用程序页面的用户体验。 如果用户刷新页面,请在该用户返回应用程序后重复使用相同的通信服务用户 ID。 通过使用相同的用户 ID 重新加入,用户将表示为
remoteParticipants
集合中相同的现有对象。 从通话中其他参与者的角度来看,用户会在刷新页面所需的时间内保持通话状态,最长可达一两分钟。
如果用户在刷新前正在发送视频,则
videoStreams
集合将保留之前的流信息,直到服务超时再将其删除。 在这种情况下,应用程序可能会决定观察添加到集合中的任何新流,并呈现
id
最高的流。
无法在 Web 中从多个设备呈现多个预览
这是一个已知限制。 有关详细信息,请参阅
通话 SDK 概述
。
应用程序在 iOS 或 iPadOS 上运行时,无法在 Safari 中枚举设备
应用程序无法在 Safari iOS/iPadOS 上枚举或选择扬声器设备(如蓝牙)。 这是这些操作系统的已知限制。
如果你使用的是 macOS 上的 Safari,应用将无法通过通信服务设备管理器枚举或选择扬声器。 在这种情况下,必须通过操作系统选择设备。 如果在 macOS 上使用 Chrome,应用可通过通信服务设备管理器枚举或选择设备。
iOS Safari 版本:15.1
反复切换视频设备可能会导致视频流暂时停止
从选定设备获取视频时,在视频设备之间切换可能会导致视频流暂停。 在设备间频繁切换可能会导致性能降低。 开发人员最好先停止一个设备流,然后再开始另一个。
在 iOS 的 Safari 上通话期间未检测到蓝牙耳机麦克风或无法听到声音
iOS 上的 Safari 不支持蓝牙耳机。 你的蓝牙设备不会在可用麦克风选项中列出;如果你尝试在 Safari 上使用蓝牙,其他参与者将无法听到你的声音。
这是已知的操作系统限制。 对于 macOS 和 iOS/iPadOS 上的 Safari,无法通过通信服务设备管理器枚举或选择扬声器设备。 这是因为 Safari 不支持枚举或选择扬声器。 在这种情况下,请使用操作系统来更新设备选择。
旋转设备可能会降低视频质量
当用户旋转设备时,移动会降低正在播放的视频的质量。
出现此问题的环境如下所示:
受影响的设备:Google Pixel 5、Google Pixel 3a、Apple iPad 8 和 Apple iPad X
客户端库:通话 (JavaScript)
浏览器:Safari、Chrome
操作系统:iOS、Android
切换摄像头会使屏幕冻结
当通信服务用户使用 JavaScript 通话 SDK 加入通话,然后选择相机切换按钮时,UI 可能会变得无响应。 然后,用户必须刷新应用程序,或将浏览器推送到后台。
出现此问题的环境如下所示:
受影响的设备:Google Pixel 4a
客户端库:通话 (JavaScript)
浏览器:Chrome
操作系统:iOS、Android
通话处于连接状态时出现视频信号问题
如果用户在通话处于“正在连接”状态时快速打开和关闭视频,这可能会导致为通话获取的流出现问题。 开发人员最好采用在通话处于“正在连接”状态时不要求打开和关闭视频的方式来构建其应用。 在以下情况下,可能会出现视频性能下降的情况:
用户开始音频,然后在通话处于“正在连接”状态时打开和关闭视频。
用户开始音频,然后在通话处于“大厅”状态时打开和关闭视频。
在 macOS 和 iOS 的 Safari 上枚举或访问设备
在某些环境中,你可能会注意到设备权限会在一段时间后重置。 在 macOS 和 iOS 上,除非获取了流,否则 Safari 不会将权限保留很长时间。 解决此问题的最简单方法是在调用设备管理器的设备枚举 API 之前调用
DeviceManager.askDevicePermission()
API。 这些枚举 API 包括
DeviceManager.getCameras()
、
DeviceManager.getSpeakers()
和
DeviceManager.getMicrophones()
。 如果存在权限,用户将看不到任何内容。 如果权限不存在,系统将再次提示用户输入权限。
出现此问题的环境如下所示:
受影响的设备:iPhone
客户端库:通话 (JavaScript)
浏览器:Safari
操作系统:iOS
呈现远程参与者视频时出现延迟
在进行群组通话期间,假设用户 A 发送视频,然后用户 B 加入通话 。 有时,用户 B 看不到用户 A 的视频,或者用户 A 的视频延迟很长时间才开始呈现。 网络环境配置问题可能会导致此延迟。 有关详细信息,请参阅
网络建议
。
在通话期间使用第三方库可能会导致音频丢失
如果在应用程序内单独使用
getUserMedia
,音频流将丢失。 这是因为第三方库从 Azure 通信服务库接管设备访问权限。
通话期间,不要使用在内部采用
getUserMedia
API 的第三方库。
如果仍然需要使用第三方库,只能更改所选设备(如果用户有多台设备)或重启通话来恢复音频流。
出现此问题的环境如下所示:
浏览器:Safari
操作系统:iOS
此问题的原因可能是,从同一设备获取自己的流会产生争用条件这一负面影响。 从其他设备获取流可能会导致用户 USB/IO 带宽不足,并且
sourceUnavailableError
率将激增。
过度使用某些 API(如静音/取消静音)将导致 ACS 基础结构限制
由于静音/取消静音 API 调用,ACS 基础结构会通知呼叫中的其他参与者调用静音/取消静音的本地参与者的音频状态,以便呼叫中的参与者知道谁已静音/取消静音。
在 ACS 基础结构中,将阻止过度使用静音/取消静音。 如果代表参与者的参与者 (或应用程序) 尝试在 30 秒滚动窗口中每秒连续静音/取消静音 15 次以上,则会发生这种情况。
通信服务通话自动化 API
以下是通信服务通话自动化 API 中的已知问题:
目前,服务器应用程序唯一支持的身份验证是使用连接字符串。
仅在同一通信服务资源的实体之间进行通话。 跨资源通信已被阻止。
不允许在 Microsoft Teams 的租户用户与通信服务用户或服务器应用程序实体之间进行通话。
如果应用程序通过拨出方式与两个或更多个 PSTN 标识通话,然后退出通话,则其他 PSTN 实体之间的通话将被删除。
JS Web 呼叫 SDK 用户的群组呼叫限制
最多有 100 个用户可以使用 JS Web 呼叫 SDK 加入群组呼叫。
Android API 仿真器
在 Android 5.0(API 级别 21)和 Android 5.1(API 级别 22)上使用 Android API 模拟器时,预期会出现一些崩溃。