平台

移动端webRTC支持

下载pdf
更新时间:2019-09-18 16:45

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 及以上 部分设备支持推拉流 部分设备支持推拉流
微信内置浏览器 最新支持推拉流 不支持推拉流
应用内嵌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 进行检测。

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

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 拉流