本页列出使用 Web SDK 的浏览器已知问题和功能已知限制。
浏览器已知问题
如无特殊需求,建议使用 VP8 视频编码。使用 H.264 编码可能会导致开启硬件加速后出现一系列问题,包括帧率、码率、分辨率达不到目标值;视频花屏、黑屏;弱网环境下体验较差等。
桌面端
| 浏览器 | 已知问题与解决方案 |
|---|
Chrome | 某些 Windows 设备上硬件加速对视频渲染处理时导致画面抖动。 解决方案:关闭硬件加速。 在 Windows 设备上使用 Chrome 进行屏幕分享,选择分享微信、QQ、钉钉、WPS 应用窗口时可能出现采集黑屏,或拖动应用窗口时出现采集黑屏。 解决方案:建议分享整个屏幕。 在 Windows 设备上使用 deviceId 为 "default" 或 "communications" 的麦克风时,如插入新的麦克风再拔出,原麦克风采集可能中断。 解决方案:避免使用 deviceId 为 "default" 或 "communications" 的麦克风。 在同一 PC 设备上同时使用 Chrome 和 Safari 进行音视频通话时,订阅端出现 Chrome 声音变小、Safari 视频图像略大于 Chrome 的现象。
|
Safari | |
Firefox | 由于 Firefox 没有旋转视频画面的 RTP 扩展头,使用 Firefox 与其他设备互通时,Firefox 端看其他端的视频画面会发生旋转。 解决方案:使用 CSS 实现旋转。 Firefox 仅支持设置视频帧率为 30 FPS。 首次安装 Firefox 浏览器会在联网状态下动态安装 H.264 编解码器。安装完成前,无法正常使用 Web SDK 推拉流。 解决方案:调用 getSupportedCodecs 获取当前浏览器支持的编解码类型。若检测到 Firefox 浏览器不支持 H.264 编解码,则使用 Firefox 打开 about:addons,在“插件”中检查 OpenH264 的安装情况,等待安装完成后再进行通话。
|
移动端
| 平台 | 已知问题与解决方案 |
|---|
Android | 由于华为设备限制,部分版本的华为浏览器及华为设备上的 Chrome 浏览器无法推流和订阅视频。 解决方案:使用 VP8 编码。 在某些 Android 12 设备上(如 Google Pixel 3/Pixel 4、红米 K50)使用 Chrome 浏览器或 Chromium 内核浏览器 97 以下版本开启视频硬件编码可能会导致花屏。 解决方案:使用 Chrome 97+。 由于 Android 设备的音频路由全部由 Android 操作系统分配而 Chromium 不能修改,用户使用 Chromium 为内核的浏览器加入音视频通话并从扬声器切换到蓝牙耳机时,远端用户的音频仍然通过扬声器播放。参看 Chromium Issue 1317548。 Android Chrome 上无法使用 H.264 编码发送大小流。 解决方案:使用 VP8 编码。 在部分小米、OnePlus、Vivo 机型上,如果本地用户使用蓝牙耳机,在通话过程中通过蓝牙耳机采集本地音频且发送音频流后,有概率会无法收听到远端用户的声音,出现无声问题。 Chrome 88 开启硬件加速时,使用 HTMLMediaElement.captureStream 推 MP4 文件,远端拉流观看黑屏。参看 Chromium Issue 1156408。 解决方案:升级至 Chrome 96+。 华为 MediaPad M5 lite,使用 Chrome、自带浏览器,第一次连接蓝牙的时候无法切换到蓝牙耳机,第二次连接蓝牙耳机才能正常切换。 华为 P30 Pro 在不同采集参数设置下,使用的默认摄像头可能不同。如果希望指定前置或者后置摄像头,建议采集时不使用默认值。
|
iOS | iOS 15.x 上的所有浏览器及内嵌 WKWebView 的应用(如微信浏览器和 Chrome 浏览器),在 DOM 中播放视频且在 video 元素或其父元素添加某些 CSS 属性(如 transform、animation)后,或者改变 CSS 属性重绘视频渲染区域后,有概率视频播放出现黑屏。参看 Webkit Bug 230532。 解决方案:尽量减少更改 video 元素及其父元素的 CSS 属性。 iOS 15.1 使用 H.264 推流导致页面崩溃。参看 Webkit Bug 232381、Webkit Bug 231505。 解决方案:使用 iOS 15.2+ 或使用 VP8 推流。 iPhone 14 Pro/iPhone 14 Pro Max 设备上使用 iOS 16.0 出现音频采集失败或音频断流现象。 解决方案:使用 iOS 16.1+。 iOS 15 以下版本无法使用 video 元素播放 canvas.captureStream 采集的外部视频。参看 Webkit Bug 181663。 解决方案:使用 iOS 15+。 iOS 15 以下版本连接耳机时无法切换到内置麦克风,始终通过耳机麦克风输入。参看 Webkit Bug 233634。 在 iPad 设备上使用 iOS 15 以下版本调用 enumerateDevices 无法获取外置音频输入设备信息。 解决方案:使用 iOS 15+。 iOS 13 和 iOS 14 上可能出现远端用户音量随机变化的问题。 切换前置、后置摄像头时采集画面可能出现瞬间旋转。 语音路由不稳定,可能出现连接外置耳机时通过扬声器播放,或未连接耳机时自动切换扬声器和听筒。 连续两次调用 getUserMedia 获取相同媒体类型的轨道时,第一次获取的媒体轨道会静音或黑屏,建议避免这样的操作。 在其他应用中使用过音视频输入设备后(如 Siri 或微信),无法通过 Web SDK 采集本地音频或视频。 iOS 11 和 12 中,旋转视频画面的 RTP 扩展头不生效。 解决方案:使用 CSS 实现旋转。 iOS 15 上的 Safari 浏览器及 iOS 14.4 至 iOS 15 上内嵌 WKWebView 的应用(如微信浏览器、Chrome 浏览器),在浏览器或应用切换到后台时,音频流发送中断。参看 Webkit Bug 231105、Apple 论坛讨论。 解决方案:用户在本地监听 visibilityChange 事件,如果切到后台,就通过信令通知远端用户在 UI 上进行提示。
|
功能已知限制
屏幕共享
移动端不支持采集屏幕共享 startScreenCapture。该方法仅支持 Windows 和 macOS,浏览器及版本需为:
Chrome 74+
Firefox 66+
Edge 99+
Safari 13+
仅 Chrome 浏览器支持采集屏幕音频。
不同浏览器可选择分享的内容不一致。
- Chrome、Edge 浏览器支持分享整个屏幕、应用窗口、标签页。
- Firefox 浏览器支持分享整个屏幕、应用窗口。
- Safari 浏览器支持分享整个屏幕。
仅 Chrome 浏览器支持设置屏幕采集的视频内容类型,即 setScreenEncoderConfig 方法中的 ScreenEncoderConfig.contentHint 参数,其他浏览器中调用无效。
在 Windows 设备上使用 Chrome 进行屏幕分享,选择分享微信、QQ、钉钉、WPS 应用窗口时可能出现采集黑屏,或拖动应用窗口时出现采集黑屏。建议分享整个屏幕。
获取设备列表
获取和设置扬声器设备
收发 SEI
插件功能