音视频通话

浏览器兼容性说明

1. 概述

WebRTC 是一个支持网页浏览器进行实时语音对话或视频对话、进行实时数据传输(Web Real-Time Communication)的 JavaScript API。

Web SDK 使用了 WebRTC 技术实现实时音视频功能。因此,在当前浏览器中能否使用 Web SDK,依赖于当前浏览器对 WebRTC 能否兼容。目前 WebRTC 主要在桌面端的 Chrome、 Firefox、Safari 等浏览器,以及移动端的 Safari浏览器、微信内置浏览器上有较为完整的支持。本文将分别介绍桌面端和移动端的浏览器兼容性情况。

由于平台和一些应用内置浏览器的实现各不相同,无法涵盖所有浏览器,以下文档中未列举的浏览器并不代表不支持。开发者如有疑问,请联系技术支持咨询。

2. 桌面端

2.1 浏览器兼容性

目前 Web SDK 在桌面端支持的浏览器及版本如下:

WebRTC 技术在 Chrome 平台支持度最好,建议开发者使用最新版本的 Chrome 浏览器 或 Edge 浏览器,下载最新版本的 Web SDK。

操作系统 浏览器 版本兼容性 备注
Windows Chrome 浏览器 56 或以上版本 屏幕共享需要Chrome 72 或以上版本
Firefox 浏览器 56 或以上版本 屏幕共享需要Firefox 66 或以上版本
Edge 浏览器 80 或以上版本
微信内置浏览器 微信3.6.0+ 不支持屏幕共享
企业微信内置浏览器 - 企业微信中点击链接会自动跳转到系统默认浏览器
其它使用Chromium
内核的浏览器
Chrome/68+ 部分国产浏览器,如:360浏览器的极速模式等
macOS Safari 浏览器 11 或以上版本 屏幕共享需要Safari 13 或以上版本
Chrome 浏览器 56 或以上版本 屏幕共享需要Chrome 72 或以上版本
Firefox 浏览器 56 或以上版本 屏幕共享需要Firefox 66 或以上版本
Edge 浏览器 80 或以上版本
微信内置浏览器 - 微信中点击链接会自动跳转到系统默认浏览器
企业微信内置浏览器 - 企业微信中点击链接会自动跳转到系统默认浏览器

2.2 兼容性限制

不同的浏览器存在差异,导致支持的功能可能有所不同。
WebRTC 技术是由 Google 最先提出,Chrome 也是最先支持的浏览器,所以在 Chrome 上的限制较少。

浏览器 限制
Chrome

  • Chrome 版本要求 58 或以上,建议使用 Chrome 68 或以上版本。
  • Chrome 72 或以上支持屏幕共享,72 以下版本需要安装 屏幕共享插件。
  • macOS 上 Chrome 84 存在缺陷,采用 H.264 格式进行编码时, WebRTC 有概率出现帧率突然下降导致图像卡顿。
Edge

  • Windows 10+ 平台上自带的 Edge 要求 80 及以上版本。
Safari

  • Safari 无法获取音频输出设备(扬声器)信息。
  • Safari 无法共享本地影音文件。
  • Safari 屏幕共享默认共享整个显示器屏幕,不可选择共享哪些内容。
  • Safari 11 只支持 480p 及以上的分辨率。
  • Safari 12.1(或以下版本)仅支持 H.264 编解码格式。
  • Safari 13 的用户可能听不到远端用户的声音。
  • Safari 14.0.1 在 macOS 上音频可能断断续续。
  • Safari 15.1 上使用H.264编码可能会导致页面崩溃。
Firefox

  • Firefox 视频帧率只支持 30 fps。
  • Firefox 在使用 Apple M1 芯片的 Mac 设备上不支持 H.264 编解码。
  • Firefox 与某些设备互通时,Firefox 端看其他端的视频画面可能会发生旋转。
其它限制

  • Chrome 81 及以上版本、Safari 和 Firefox 浏览器需要在获得媒体设备权限后才能获取到完整的设备列表。

3. 移动端

3.1 浏览器兼容性

Android:由于不同手机产商对自带浏览器或多或少会对其浏览器内核做出改动,无法保证自带浏览器能够很好地支持 WebRTC,建议使用 Chrome 浏览器 或 微信内置浏览器。
Android 平台原⽣ WebView 可支持自定义,因此不同平台不同设备以及不同应⽤的 WebView 实现可能存在差异。
iOS 只支持系统 WebView,因此对 Web SDK 的支持只与 iOS 系统版本有关。

操作系统 浏览器 版本兼容性 备注
Android Chrome ✔️ Chorme 68 或以上
Firefox ✔️ -
Edge ✔️ 内核版本 Chrome/68.0 或以上
QQ、微信、支付宝 ✔️ 内置浏览器
企业微信内置浏览器 ✔️ 企业微信版本4.0.3+
微信小程序WebView ✔️ -
支付宝小程序WebView ✔️ -
其它使用Chromium内核的
浏览器或WebView
✔️ 如 系统自带浏览器或System WebView等,内核版本Chrome/68.0或以上
iOS 12.2+ Safari 浏览器 ✔️ -
iOS 14.3+ Safari 浏览器 ✔️ -
QQ、微信、支付宝 ✔️ 内置浏览器
企业微信内置浏览器 ✔️ -
使用WKWebView的应用 ✔️ 其它使用WKWebView的应用或浏览器、小程序等
鸿蒙Next 系统自带浏览器 ✔️ -
QQ、微信、支付宝等 ✔️ 内置浏览器
使用系统webView的应用 ✔️ 其它使用系统webView的应用或浏览器、小程序等

3.2 兼容性限制

Web SDK 在 Android 上的兼容性限制如下:

浏览器 限制
所有浏览器 或 WebView

  • 均不支持屏幕共享。
  • 部分 Android 设备上可能无法获取到媒体设备的 device label。
  • 浏览器是否兼容,和浏览器版本、运行内核,设备芯片等都相关,强烈建议在使用前,先进行 兼容性检测。
  • 部分自研安卓设备或应用未取得H.264授权,仅支持VP8编码格式。
Chrome

  • 部分安卓设备上,Chrome 浏览器不支持 H.264 编解码格式,仅支持VP8编码格式。
Firefox

  • 在Firefox 上使用 Web SDK 与某些设备通话时,可能会出现所看到的对端画面发生了旋转。
微信
内置浏览器

  • 部分微信浏览器中视频无法自动播放。并且当用户通过手势(点击、触摸)恢复播放后,下一次视频仍然无法自动播放。
企业微信
内置浏览器

  • 企业微信内置浏览器进入房间后第一次需要先打开麦克风后才能打开摄像头,后续再开关则不受影响
系统自带
浏览器 或
WebView

  • 系统自带浏览器 或 WebView 需要满足Chromium内核版本要求:Chrome/68 或以上。
  • 部分安卓系统自带浏览器 或 WebView 不支持WebRTC,即使内核版本满足要求。

Web SDK 在 iOS 上的兼容性限制如下:

浏览器 限制
所有浏览器 或 webview

  • 均不支持屏幕共享。
  • iOS 15.x: 浏览器或应用切换到后台后,音频流发送中断。
  • iOS 15.x: 被其它语音或视频通话应用、Siri 呼叫、闹钟等打断后,音视频播放有概率无法自动恢复。
  • iOS 15.x: 本地用户听到远端音频流的 音量极低。
  • iOS 15.x: 播放视频有概率出现黑屏。
  • iOS 15.1.x: 使用 H.264 编码发送视频流会导致 页面崩溃。
Safari

  • 第二次调用浏览器的 “getUserMedia” 接口获取相同媒体类型的轨道,会导致第一次获取的媒体轨道静音或黑屏。
  • iOS 13 版本中可能出现远端音量大小随机变化的问题。
  • 可能出现没有插耳机却从听筒出声或者插上了耳机仍然从扬声器出声的情况。
  • 使用过其它音视频输入设备的 App 后(例如 Siri),无法采集本地音频或视频。(偶现)
  • iOS Safari 14.2 和 macOS Safari 14.0.1 上音频可能断断续续。

4. 兼容性检测

我们提供了一个 在线检测工具,帮助开发者自动检测设备浏览器能否正常运行 WebRTC 应用。

该工具支持检测以下项目:

  • 浏览器对WebRTC基础API的支持性
  • 浏览器是否支持获取设备列表
  • 浏览器是否支持H.264或VP8编码
  • 浏览器是否支持H.264或VP8解码
  • 浏览器是否支持音频输入
  • 浏览器是否支持音频输出
  • 浏览器是否支持视频输入
  • 浏览器是否支持常见视频分辨率
  • 浏览器是否支持屏幕共享
  • 浏览器是否支持本地影音共享