aliyun-webrtc-sdk
TypeScript icon, indicating that this package has built-in type declarations

1.17.3 • Public • Published

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 入会失败,频道类型错误

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.17.3
    60
    • latest

Version History

Package Sidebar

Install

npm i aliyun-webrtc-sdk

Weekly Downloads

139

Version

1.17.3

License

MIT

Unpacked Size

710 kB

Total Files

7

Last publish

Collaborators

  • junqi.fjq
  • villeewang
  • leopano
  • xinye22
  • shawn_huang