火山引擎 Web RTC SDK 基于浏览器的 PeerConnection 实现与服务端的 ICE 建联和媒体能力协商。本文介绍 Web SDK 的浏览器兼容性及已知问题、功能已知限制。本文将介绍 Web RTC SDK 的浏览器兼容性和已知问题,以及功能已知限制。
浏览器兼容性
建议使用浏览器的最新稳定版本,以获取更优质、稳定的音视频通话体验。下文列出了浏览器的最低版本要求。
桌面端
操作系统 | 浏览器 | 浏览器最低版本要求 | 订阅音视频流(拉流) | 发布音视频流(推流) | 屏幕共享 |
---|
Windows | Chrome | 70 | ✅ | ✅ | ✅(需要 Chrome 74 或以上版本) |
Edge | 83 | ✅ | ✅ | ✅(需要 Edge 99 或以上版本) |
Firefox | 80 | ✅ | ✅ | ✅ |
macOS | Safari | 12 | ✅ | ✅ | ✅(需要 Safari 13 或以上版本) |
Chrome | 70 | ✅ | ✅ | ✅(需要 Chrome 74 或以上版本) |
Edge | 83 | ✅ | ✅ | ✅(需要 Edge 99 或以上版本) |
Firefox | 80 | ✅ | ✅ | ✅ |
移动端
说明
Android 的浏览器支持情况与设备硬件和使用的 WebView 版本有关,多数系统自带浏览器不支持发送和接收音频流。
操作系统 | 浏览器 | 浏览器最低版本要求 | 订阅音视频流(拉流) | 发布音视频流(推流) | 屏幕共享 |
---|
Android | Chrome | 86 | ✅ | ✅ | ❌ |
微信内嵌浏览器 | 8.0.32 | ✅ | ✅ | ❌ |
iOS 12+ | Safari | 与操作系统版本一致 | ✅ | ✅ | ❌ |
Chrome | 无明确信息 | ✅ | ❌ | ❌ |
微信内嵌浏览器 | 8.0.32 | ✅ | ❌ | ❌ |
iOS 14.3+ | Safari | 与操作系统版本一致 | ✅ | ✅ | ❌ |
Chrome | 无明确信息 | ✅ | ✅ | ❌ |
微信内嵌浏览器 | 8.0.32 | ✅ | ✅ | ❌ |
HarmonyOS NEXT Developer Beta 1 | 华为浏览器 | 与操作系统版本一致 | ✅ | ✅ | ❌ |
浏览器已知问题
下文列出了 Web RTC SDK 的浏览器已知问题和解决方案。
说明
如无特殊需求,建议使用 VP8 视频编码。使用 H.264 编码可能会导致开启硬件加速后出现一系列问题,包括帧率、码率、分辨率达不到目标值;视频花屏、黑屏;弱网环境下体验较差等。
桌面端
浏览器 | 已知问题与解决方案 |
---|
Chrome | - 某些 Windows 设备上硬件加速对视频渲染处理时导致画面抖动。
解决方案:关闭硬件加速。 - 在 Windows 设备上使用 Chrome 进行屏幕分享,选择分享微信、QQ、钉钉、WPS 应用窗口时可能出现采集黑屏,或拖动应用窗口时出现采集黑屏。
解决方案:建议分享整个屏幕。 - 在 Windows 设备上使用
deviceId 为 "default" 或 "communications" 的麦克风时,如插入新的麦克风再拔出,原麦克风采集可能中断。 解决方案:避免使用 deviceId 为 "default" 或 "communications" 的麦克风。 - 在同一 PC 设备上同时使用 Chrome 和 Safari 进行音视频通话时,订阅端出现 Chrome 声音变小、Safari 视频图像略大于 Chrome 的现象。
|
Safari | - Safari 16 对外部采集的视频截图时,截图内容为黑屏。
- Safari 13 可能听不到远端用户的声音。
|
Firefox | - 由于 Firefox 没有旋转视频画面的 RTP 扩展头,使用 Firefox 与其他设备互通时,Firefox 端看其他端的视频画面会发生旋转。
解决方案:使用 CSS 实现旋转。 - Firefox 仅支持设置视频帧率为 30 FPS。
- 首次安装 Firefox 浏览器会在联网状态下动态安装 H.264 编解码器。安装完成前,无法正常使用 Web SDK 推拉流。
解决方案:调用 getSupportedCodecs 获取当前浏览器支持的编解码类型。若检测到 Firefox 浏览器不支持 H.264 编解码,则使用 Firefox 打开 about:addons ,在“插件”中检查 OpenH264 的安装情况,等待安装完成后再进行通话。 - 由于浏览器限制,Firefox 不支持大小流功能。
|
移动端
平台 | 已知问题与解决方案 |
---|
Android | - 由于华为设备限制,部分版本的华为浏览器及华为设备上的 Chrome 浏览器无法推流和订阅视频。
解决方案:使用 VP8 编码。 - 在某些 Android 12 设备上(如 Google Pixel 3/Pixel 4、红米 K50)使用 Chrome 浏览器或 Chromium 内核浏览器 97 以下版本开启视频硬件编码可能会导致花屏。
解决方案:使用 Chrome 97+。 - 由于 Android 设备的音频路由全部由 Android 操作系统分配而 Chromium 不能修改,用户使用 Chromium 97.0.4692.98 内核的浏览器 (常见的如荣耀手机的自带浏览器) 加入音视频通话并从扬声器切换到蓝牙耳机时,远端用户的音频仍然通过扬声器 (喇叭或者手机上方的听筒,特别的,如果声音从手机上方的听筒出来,将导致小声甚至无声的问题) 播放。参看 Chromium Issue 1317548。建议使用 chrome 浏览器, 并且版本在 M106 以上。
- Android Chrome 上无法使用 H.264 编码发送大小流。
解决方案:使用 VP8 编码。 - 在部分小米、OnePlus、Vivo 机型上,如果本地用户使用蓝牙耳机,在通话过程中通过蓝牙耳机采集本地音频且发送音频流后,有概率会无法收听到远端用户的声音,出现无声问题。
- Chrome 88 开启硬件加速时,使用 HTMLMediaElement.captureStream 推 MP4 文件,远端拉流观看黑屏。参看 Chromium Issue 1156408。
解决方案:升级至 Chrome 96+。 - 华为 MediaPad M5 lite,使用 Chrome、自带浏览器,第一次连接蓝牙的时候无法切换到蓝牙耳机,第二次连接蓝牙耳机才能正常切换。
- 华为 P30 Pro 在不同采集参数设置下,使用的默认摄像头可能不同。如果希望指定前置或者后置摄像头,建议采集时不使用默认值。
- Android Chrome 对 H.264 的支持依赖硬件,部分 Android 设备不支持 H.264 编解码格式。可以通过调用 isSupported 接口,查看兼容性。
- 小米手机自带浏览器不支持 webRTC。
|
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 上进行提示。
|
功能已知限制
下文列出了 Web RTC SDK 的功能已知限制。
屏幕共享
发布 Simulcast 流
发布端开启 Simulcast 功能已经在以下浏览器版本中通过验证:
- Chrome 74 或以上版本
- Safari 14.1 或以上版本
- Android 端 Chrome 128 或以上版本
- iOS 15 或以上版本
- HarmonyOS NEXT Developer Beta 1 或以上版本,但仅支持通过 VP8 编码方式发布 Simulcast 流。
获取设备列表
获取和设置扬声器设备
收发 SEI 消息
sendSEIMessage 等收发 SEI 消息接口兼容性说明:
- SEI 消息仅支持在 H.264 编码,且使用 Chromium 86+ 内核的浏览器上使用。
- Android 设备无法在语音通话场景下自动生成黑帧视频流发送 SEI 数据。
- iOS 设备不支持使用 SEI 功能。
插件功能