aliyun-webrtc-sdk
v1.17.5-dev1
Published
ali webrtc h5 sdk
Downloads
129
Keywords
Readme
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();
- 检测浏览器是否支持webrtc
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);
});
三、接口回调列表
1)接口列表(详细接口信息请参考官网AliRtcEngine接口文档)
基础接口
| 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 |
2)回调列表(详细回调信息请参考官网回调与监听文档)
| 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 | 入会失败,频道类型错误 |