Aliyun WebRtc SDK
阿里云音视频通信aliyun-webrtc-sdk,提供基于WebRTC适用于浏览器的SDK。
Installation
You can install it as dependency with npm/cnpm or yarn.
$ # save into package.json dependencies with -S
$ npm install aliyun-webrtc-sdk -S
$ # you can use cnpm for fast install
$ cnpm install aliyun-webrtc-sdk -S
$ # use yarn for install
$ yarn add aliyun-webrtc-sdk
一、接入前准备
阿里云RTC提供移动端、PC等多端SDK,并兼容标准WebRTC浏览器接入网络,帮助您快速搭建多端实时应用。接入RTC的方法,请参见入门概述。
当您成功搭建本地SDK,可以在终端调用API与RTC服务端进行交互,在加入频道或房间后,您可以进行本地推流、订阅远端用户等操作,实现频道内不同用户之间的音视频实时通话。
阿里云RTC拥有全球实时智能调度系统,并结合实时媒体处理系统和1500+边缘节点,运用行业领先的音频3A(AGC、AEC、ANS)、视频编码、弱网对抗等算法为您提供低延时、抗丢包的音视频实时通信。
二、快速开启
import 'aliyun-webrtc-sdk'
/**
* 创始实例,目前支持多实例
*/
var aliWebrtc = new AliRtcEngine();
aliWebrtc.isSupport().then((res)=>{
//支持webrtc
}).catch((error)=>{
//不支持webrtc
})
- 订阅onPublisher回调。当远程用户推流时,在SDK里会触发onPublisher回调,通过订阅这个回调,能够得到频道里已经推流的用户。
aliWebrtc.on('onPublisher',(publisher) =>{
//远程发布者userId
console.log(publisher.userId);
//远程发布名字
console.log(publisher.displayName);
//远程流内容,streamConfigs是数组。
console.log(publisher.streamConfigs);
});
- 开启本地预览。在创建完AliRtcEngine实例后,您可以通过video标签播放。
aliWebrtc.startPreview(
video // html中的video元素
).then(()=>{
//预览成功
}).catch((error) => {
// 预览失败
});
aliWebrtc.joinChannel({
userid, // 用户ID,只能由数字、字母、下划线组成
channel, // 频道
appid, // 应用ID
nonce, // 随机码
timestamp, // 时间戳
gslb, // gslb服务地址
token, // 令牌
},displayName).then(()=>{
// 入会成功
} ,(error)=>{
// 入会失败,打印错误内容,可以看到失败原因
console.log(error.message);
});
aliWebrtc.publish().then(()=>{
} ,(error)=>{
console.log(error.message);
});
- 订阅和显示远程流。通过subscribe方法订阅远程流,订阅成功后在调用setDisplayRemoteVideo显示远程流。
通常在onPublisher回调中进行订阅与设置视图。
aliWebrtc.subscribe(userId).then((userId)=>{
aliWebrtc.setDisplayRemoteVideo(
userId, // userId是用户ID
video, // html中用于显示stream对象的video元素
1 // 1表示摄像头流(大流和小流)和音频流,2表示屏幕分享流
)
},(error)=>{
console.log(error.message);
});
aliWebrtc.leaveChannel().then(()=>{
} ,(error)=>{
console.log(error.message);
});
三、接口回调列表
基础接口
API |
描述 |
以上版本支持 |
isSupport |
检测浏览器是否支持RTC SDK |
1.7 |
getDevices |
获取设备信息 |
1.2 |
getAvailableResolutions |
获取可支持的分辨率 |
1.2 |
isSupportScreenShare |
是否支持屏幕共享 |
1.12 |
setChannelProfile |
设置频道模式 |
1.12 |
setClientRole |
设置角色 |
1.12 |
setAudioOnlyMode |
设置是否为纯音频模式 |
1.12.2 |
频道相关接口
API |
描述 |
以上版本支持 |
joinChannel |
加入频道 |
1.2 |
leaveChannel |
离开频道 |
1.2 |
发布相关接口
API |
描述 |
以上版本支持 |
configLocalAudioPublish |
设置是否允许发布音频流 |
1.9 |
configLocalCameraPublish |
设置是否允许发布相机流 |
1.9 |
configLocalScreenPublish |
设置是否允许发布屏幕共享流 |
1.9 |
publish |
发布本地视频流 |
1.2 |
unPublish |
结束发布本地流 |
1.2 |
订阅相关接口
API |
描述 |
以上版本支持 |
configRemoteAudio |
设置是否订阅远端音频流 |
1.9 |
configRemoteCameraTrack |
设置是否订阅远端相机流 |
1.9 |
configRemoteScreenTrack |
设置是否订阅远端屏幕流 |
1.9 |
subscribe |
订阅远程发布流 |
1.2 |
unSubscribe |
取消订阅该用户所有的流 |
1.2 |
视频相关接口
API |
描述 |
以上版本支持 |
currentCamera |
指定摄像头设备 |
1.9 |
videoProfile |
设置视频流参数 |
1.9 |
muteLocalCamera |
是否停止本地视频采集 |
1.2 |
setDisplayRemoteVideo |
为远端的视频设置渲染窗口以及绘制参数 |
1.5 |
setVideoProfile |
设置视频流或共享流参数 |
1.11 |
enableCamera |
设置是否推摄像头 |
1.13 |
音频相关接口
API |
描述 |
以上版本支持 |
currentAudioCapture |
指定麦克风设备 |
1.9 |
muteLocalMic |
是否停止本地音频采集 |
1.2 |
muteRemoteAudioPlaying |
设置是否停止播放远端音频流 |
1.12.2 |
muteAllRemoteAudioPlaying |
设置是否停止远端的所有音频流的播放 |
1.12.2 |
setAudioVolume |
设置订阅用户音量 |
1.13 |
getAudioVolume |
获取订阅用户音量 |
1.13 |
|
| enableAudioVolumeIndicator | 设置接收音量值回调 | 1.13 |
预览接口
API |
描述 |
以上版本支持 |
startPreview |
预览本地摄像头 |
1.2 |
stopPreview |
结束预览本地摄像头 |
1.2 |
enableHighDefinitionPreview |
设置是否开启高清预览 |
1.12.1 |
远端用户查询接口
API |
描述 |
以上版本支持 |
getUserList |
获取当前房间在线用户 |
1.9 |
getUserInfo |
获取用户信息 |
1.9 |
其他接口
API |
描述 |
以上版本支持 |
on |
订阅事件 |
1.2 |
off |
取消订阅事件 |
1.2 |
setExternalMediaTrack |
设置外部输入音视频流替换 |
1.12.1 |
API |
描述 |
以上版本支持 |
onPublisher |
发布流回调 |
1.2 |
onUnPublisher |
取消发布流回调 |
1.2 |
onJoin |
加入频道回调 |
1.2 |
onLeave |
离开频道回调 |
1.2 |
onError |
错误异常回调 |
1.2 |
onBye |
被服务器踢出或者频道关闭时回调 |
1.11 |
onUpdateRole |
角色切换回调 |
1.12 |
onAudioLevel |
音频能量值回调 |
1.13 |
四、错误码列表(详细错误码信息请参考官网错误码文档)
isSupport 错误码 errorCode
错误码 |
含义 |
描述 |
10000 |
ERROR_DEVICE_UNKNOWNERROR |
设备未知错误 |
10001 |
ERROR_DEVICE_AUDIODEVICENOTFOUND |
未找到音频设备 |
10002 |
ERROR_DEVICE_VIDEODEVICENOTFOUND |
未找到视频设备 |
10003 |
ERROR_DEVICE_AUDIODEVICENOTALLOWED |
浏览器禁用音频设备 |
10004 |
ERROR_DEVICE_VIDEODEVICENOTALLOWED |
浏览器禁用视频设备 |
10005 |
ERROR_DEVICE_AUDIODEVICENOTREADABLE |
系统禁用音频设备 |
10006 |
ERROR_DEVICE_VIDEODEVICENOTREADABLE |
系统禁用视频设备 |
10020 |
ERROR_NOTSUPPORT_WEBRTC |
浏览器不支持webrtc |
10021 |
ERROR_NEEDHTTPS |
不是Https环境 |
10022 |
ERROR_NOTSUPPORT_DEVICE |
不支持获取设备 |
10023 |
ERROR_NOTSUPPORT_H264 |
不支持H264 |
10024 |
ERROR_NOTSUPPORT_BROWSER |
不支持此浏览器 |
其他 错误码 errorCode
错误码 |
含义 |
描述 |
10000 |
ERROR_DEVICE_UNKNOWNERROR |
设备未知错误 |
10001 |
ERROR_DEVICE_AUDIODEVICENOTFOUND |
未找到音频设备 |
10002 |
ERROR_DEVICE_VIDEODEVICENOTFOUND |
未找到视频设备 |
10003 |
ERROR_DEVICE_AUDIODEVICENOTALLOWED |
浏览器禁用音频设备 |
10004 |
ERROR_DEVICE_VIDEODEVICENOTALLOWED |
浏览器禁用视频设备 |
10005 |
ERROR_DEVICE_AUDIODEVICENOTREADABLE |
系统禁用音频设备 |
10006 |
ERROR_DEVICE_VIDEODEVICENOTREADABLE |
系统禁用视频设备 |
10010 |
ERROR_SCREENSHARE_UNKNOWNERROR |
屏幕共享未知错误 |
10011 |
ERROR_SCREENSHARE_NOTALLOWED |
屏幕共享被禁用 |
10012 |
ERROR_SCREENSHARE_ENDED |
屏幕共享已取消 |
10013 |
ERROR_SCREENSHARE_NOPERMISSION |
屏幕共享系统禁止(mac) |
10112 |
ERROR_OPTIONS_LIVE_CANNOT_PUBLISH |
观众角色不能推流 |
10120 |
ERROR_OPTIONS_AUDIO_ONLY |
纯音频模式推流或订阅其他流 |
10130 |
ERROR_OPTIONS_ENABLECAMERA |
enableCamera的时候调用摄像头 |
10200 |
ERROR_AUTOPLAY_UNKNOWN_ERROR |
自动播放未知错误 |
10201 |
ERROR_AUTOPLAY_ERROR |
自动播放失败错误 |
10301 |
ERROR_ICE_PUBLISH_DISCONNECTED |
推流ice断开 |
10302 |
ERROR_ICE_SUBSCRIBE_DISCONNECTED |
订阅ice断开 |
10310 |
ERROR_HEARTBEAT_TIMEOUT |
90s 心跳超时 |
10311 |
ERROR_NOSESSION |
no session |
10400 |
ERROR_PUBLISH_NOSTREAM |
所有流都是禁用状态 |
10401 |
ERROR_ANSWER_FAIL |
answer失败 |
10500 |
ERROR_FREQUENTLY_OPERATION |
操作频繁 |
33622275 |
ERROR_OPTIONS_JOINCHANNEL |
入会失败,频道类型错误 |