平台

移动端webRTC支持

下载pdf
更新时间:2019-12-23 17:37

1 概述

Zego Web SDK是基于webRTC实现音视频通讯的,所以Web SDK的支持度依赖于浏览器或webview对webRTC的支持度,目前市场上pc绝大多数浏览器以及移动端主流浏览器都支持webRTC。

但开发者需要关注的是,移动端各个平台浏览器的实现方式以及视频编码支持度是不同的,目前 Zego Web SDK 1.3.0 已支持VP8、H.264编码格式,目前PC绝大多数浏览器也支持这两种编码,但移动端较为复杂。故若需要在移动端使用Web SDK,开发者需要关注移动端不同应用场景对VP8、H.264编码格式支持情况,本文也将对此做详细介绍。

2 支持度

2.1 Android

目前 Andriod 平台除开 FireFox 浏览器在68版本后不再安装OpenH264之外,主流浏览器都支持H.264以及VP8视频编码格式
与iOS 不同的是,安卓平台原生WebView 是可支持自定义的,故不同平台,不同设备以及不同应用的WebView 实现是可能不同的,下面仅供参考。

VP8 H.264
Chrome 58 及以上 支持推拉流 部分设备支持推拉流
FireFox 56 及以上 部分设备支持推拉流 部分设备支持推拉流
微信内置浏览器 支持推拉流 最新支持推拉流(7.0.8+)
应用内嵌WebView 部分设备支持推拉流 部分设备支持推拉流

2.2 iOS

目前iOS 平台上所有应用内置WebView 只能使用系统提供的,具有一定的局限性,并且都不支持音视频的推流。

VP8 H.264
Safari浏览器 iOS 12.2及以上支持推拉流 iOS 11及以上支持推拉流
微信内置浏览器 iOS 12.2及以上只支持拉流 iOS 11及以上只支持拉流
应用内嵌WebView iOS 12.2及以上只支持拉流 iOS 12.1.4及以上只支持拉流

3 编码格式选择

开发者需根据实际情况选择合适视频编码格式。
若主播端与观众端都为web,通常情况下建议开发者使用VP8视频编码格式进行推拉流。若出现两端冲突,即一端只支持 H.264,一端只支持 VP8(Andriod FireFox 68 与 iOS 11 Safari)的情况,这时候建议客户使用混流转码,具体请参考混流转码
若主播端观众端有一端使用的Native SDK,则需要Native 端与Web端的视频编码保持一致。

3.1 检测当前浏览器是否支持VP8、H.264视频编码

因不同平台不同浏览器不同应用对视频编码格式支持度不同,开发者在推拉流前需要检测当前浏览器或 WebView 对VP8、H.264的支持情况,可通过调用Zego Web SDK 1.3.0 新增接口 supportDetection 进行检测。

detectRTC为静态方法,无需初始化,下面代码仅供参考:

ZegoClient.supportDetection ( function(result){
    if (result.videoDecodeType.VP8) {
    // 当前浏览器支持VP8 视频编码
    }
    if (result.videoDecodeType.H264) {
    // 当前浏览器支持H.264 视频编码
    }
    if (!result.videoDecodeType.VP8 && !result.videoDecodeType.H264) {
    // 当前浏览器既不支持VP8 也不支持H.264
    }
}, function(err){
    console.error(err)
})

3.2 选择合适的视频编码格式进行推流

Zego Web SDK 1.3.0 推流接口startPublishingStream 增加了视频编码参数,开发者可根据实际情况选择视频编码格式,下面代码仅供参考:

zg.startPublishingStream(streamid, localVideo, null, {videoDecodeType: 'VP8'})

3.3 选择合适的视频编码格式进行拉流

Zego Web SDK 1.3.0 拉流接口startPlayingStream 增加了视频编码参数,开发者可根据实际情况进行选择,下面代码仅供参考

zg.startPlayingStream(streamid, remoteVideo, null, {videoDecodeType: 'VP8'})

4 API 参考列表

方法 描述
supportDetection 支持度检测
startPublishingStream 推流
startPlayingStream 拉流