You need to enable JavaScript to run this app.
导航

Web SDK 浏览器兼容性和已知问题

最近更新时间2024.03.18 14:09:42

首次发布时间2022.05.20 14:52:51

火山引擎 Web RTC SDK 基于浏览器的 PeerConnection 实现与服务端的 ICE 建联和媒体能力协商。本文介绍 Web SDK 的浏览器兼容性及已知问题、功能已知限制。本文将介绍 Web RTC SDK 的浏览器兼容性和已知问题,以及功能已知限制。

浏览器兼容性

建议使用浏览器的最新稳定版本,以获取更优质、稳定的音视频通话体验。下文列出了浏览器的最低版本要求。

桌面端

操作系统浏览器浏览器最低版本要求订阅音视频流(拉流)发布音视频流(推流)屏幕共享
WindowsChrome70✅(需要 Chrome 74 或以上版本)
Edge83✅(需要 Edge 99 或以上版本)
Firefox80
macOSSafari12✅(需要 Safari 13 或以上版本)
Chrome70✅(需要 Chrome 74 或以上版本)
Edge83✅(需要 Edge 99 或以上版本)
Firefox80

移动端

说明

Android 的浏览器支持情况与设备硬件和使用的 WebView 版本有关,多数系统自带浏览器不支持发送和接收音频流。

操作系统浏览器浏览器最低版本要求订阅音视频流(拉流)发布音视频流(推流)屏幕共享
AndroidChrome86
微信内嵌浏览器8.0.32
iOS 12+Safari与操作系统版本一致
Chrome无明确信息
微信内嵌浏览器8.0.32
iOS 14.3+Safari与操作系统版本一致
Chrome无明确信息
微信内嵌浏览器8.0.32

浏览器已知问题

下文列出了 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 属性(如 transformanimation)后,或者改变 CSS 属性重绘视频渲染区域后,有概率视频播放出现黑屏。参看 Webkit Bug 230532
    解决方案:尽量减少更改 video 元素及其父元素的 CSS 属性。
  • iOS 15.1 使用 H.264 推流导致页面崩溃。参看 Webkit Bug 232381Webkit 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 231105Apple 论坛讨论
    解决方案:用户在本地监听 visibilityChange 事件,如果切到后台,就通过信令通知远端用户在 UI 上进行提示。

功能已知限制

下文列出了 Web RTC SDK 的功能已知限制。

屏幕共享

  • 采集屏幕共享 startScreenCapture 方法仅支持在桌面端使用(Windows 和 macOS),浏览器及版本需为:

    • Chrome 74+
    • Firefox 80+
    • Edge 99+
    • Safari 13+
  • 仅 Chrome、Edge 浏览器支持共享屏幕音频,即 startScreenCapture 方法中的 ScreenConfig.enableAudio 参数。各浏览器对共享屏幕音频的支持情况如下:

    操作系统浏览器共享整个屏幕共享标签页共享应用窗口
    WindowsChrome
    Edge
    macOSChrome
    Edge
  • 不同浏览器可选择分享的内容如下:

    浏览器共享整个屏幕共享标签页共享应用窗口
    Chrome
    Edge
    Firefox
    Safari
  • Firefox 浏览器不支持设置屏幕采集的视频内容类型,即 setScreenEncoderConfig 方法中的 ScreenEncoderConfig.contentHint 参数,详情参看 contentHint 浏览器兼容信息

  • 在 Windows 设备上使用 Chrome 进行屏幕分享,选择分享微信、QQ、钉钉、WPS 应用窗口时可能出现采集黑屏,或拖动应用窗口时出现采集黑屏。建议分享整个屏幕。

获取设备列表

获取和设置扬声器设备

enumerateAudioCaptureDevicessetAudioPlaybackDevice 方法仅在桌面端 Chrome 浏览器可用,其他浏览器调用会返回空列表。

收发 SEI 消息

sendSEIMessage 等收发 SEI 消息接口兼容性说明:

  • SEI 消息仅支持在 H.264 编码,且使用 Chromium 86+ 内核的浏览器上使用。
  • Android 设备无法在语音通话场景下自动生成黑帧视频流发送 SEI 数据。
  • iOS 设备不支持使用 SEI 功能。

插件功能

  • 基础美颜插件虚拟背景插件不建议在移动端使用,浏览器最低版本要求如下:

    设备类型浏览器浏览器最低版本要求
    桌面端Chrome78
    Safari15
    Firefox80
    Edge83
    移动端Chrome78
    Safari15.4
    微信内嵌浏览器8.0.32
  • AI 降噪插件仅支持 Windows 和 macOS,浏览器及版本需为:

    • Chrome 94+
    • Edge 94+