通过阅读本文,您可以了解Web SDK回调及监听的接口详情。
注意 自2020年2月起,阿里云RTC将逐步停止对旧版本SDK的支持与维护,请使用1.9.1及以上版本SDK。更多信息,请参见SDK下载。
目录
API | 描述 | 支持的最低版本 |
---|---|---|
onPublisher | 发布流回调。 | 1.2 |
onUnPublisher | 取消发布流回调。 | 1.2 |
onMediaStream | 订阅流成功回调(1.10及以上版本不需要该接口回调)。 | 1.2 |
onJoin | 加入频道回调。 | 1.2 |
onLeave | 离开频道回调。 | 1.2 |
onError | 错误异常回调。 | 1.2 |
onBye | 被服务器踢出或者频道关闭时回调。 | 1.11 |
onUpdateRole | 角色切换回调。 | 1.12 |
onNotify | 用户状态变化回调。 | 1.12.1 |
onAudioLevel | 音频能量值回调。 | 1.13.0 |
onMedia | 推流和订阅的音视频数据回调。 | 1.14.0 |
onMediaStreamUpdate | 订阅流返回回调。 | 1.15.4 |
onNetworkQuality | 网络质量回调。 | 1.16.0 |
onAudioMixingPlayed | 伴奏开始播放回调。 | 1.16.0 |
onAudioMixingFinished | 伴奏播放结束回调。 | 1.16.0 |
onPublishChange | 本地发布流回调(自动推流)。 | 1.17.0 |
onSubscribeChange | 自动订阅回调。 | 1.17.0 |
onShareSystemAudioStart | 共享声音通知回调。 | 1.17.0 |
接口详情
- onPublisher:发布流回调。当频道里的其他人发布本地流时,触发本回调。
aliWebrtc.on('onPublisher',(publisher) =>{ //远程发布者用户Id console.log(publisher.userId); //远程发布名字 console.log(publisher.displayName); //远程流内容,streamConfigs是数组 console.log(publisher.streamConfigs); });
- onUnPublisher:取消发布流回调。当频道里的其他人取消发布本地流时,触发本回调。
aliWebrtc.on('onUnPublisher',(publisher) =>{ //远程发布者用户Id console.log(publisher.userId); //远程发布名字 console.log(publisher.displayName); });
- onMediaStream:订阅流成功回调。当订阅远程流成功时触发,会返回远程流的Stream对象,通过H5 Video或Audio播放。
说明 1.10及以上版本不支持该回调。
aliWebrtc.on('onMediaStream',(subscriber, stream) =>{ var video = document.getElementByTag('video'); aliWebrtc.setDisplayRemoteVideo( subscriber, // onMediaStream中返回的参数 video, // html中用于显示stream对象的video元素 stream // onMediaStream中返回的参数 ) });
- onJoin:加入频道回调。当有其他用户加入频道时,触发onJoin回调。
aliWebrtc.on('onJoin',(data) =>{ console.log(data.userId); console.log(data.displayName + " 加入频道"); });
- onLeave:离开频道回调。当其他用户离开频道时,触发onLeave回调。
aliWebrtc.on('onLeave',(data) =>{ console.log(data.userId); console.log(data.displayName + " 离开频道"); });
- onError:错误异常回调。当有错误发生时,触发onError回调。
aliWebrtc.on('onError',(error) =>{ var msg = error && error.message ? error.message : error; if (msg && msg.indexOf('no session') > 0) { error = "请重新登录:" + msg; } console.log('错误:' + msg); });
- onBye:被服务器踢出或者频道关闭时回调。
aliWebrtc.on('onBye',(message) =>{ //1:被服务器踢出 //2:频道关闭 //3:同一个ID在其他端登录,被服务器踢出 console.log(message.code); });
- onUpdateRole:角色切换回调。
aliWebrtc.on("onUpdateRole",(data)=>{ console.log(data); })
说明 在互动模式下,当调用setClientRole接口返回true,并且收到onUpdateRole回调获取到正确新值时才表示切换成功。 - onNotify:用户状态变化回调。
aliWebrtc.on("onNotify",(data)=>{ console.log(data); })
说明- 本地或远端用户的推流状态变化时(调用muteLocalMic、muteLocalCamera)会收到onNotify回调。
- 该回调返回的data与调用getUserList接口返回的结果相同。
- onAudioLevel:音频能量值回调。
说明 需要设置enableAudioVolumeIndicator后回调,每秒返回一次(返回每秒音频能量最大值)。
aliWebrtc.on("onAudioLevel", (data) => { console.log(data) })
返回结果说明:- 当您推了音频流,返回数组中userId为字符串0的一项,是自己的音频信息。
- 当您订阅了其他用户的音频流,该数组中会包含订阅用户的音频信息。
- 具体数组各项的信息如下所示:
返回值 类型 描述 userId String 订阅用户userId,用户自己的userId为0。 displayName String 用户名。 level Number 音频能量值,取值范围0~100。 buffer Array 每秒内音频PCM的数据。
- onMedia:推流和订阅的音视频数据回调。
aliWebrtc.on("onMedia", (data) => { console.log(data) })
说明- 该回调每秒返回一次信息。
- 推流数据只有bytesSentPerSecond,订阅数据仅有bytesReceivedPerSecond。
返回值 类型 描述 userId String 订阅用户userId,用户自己的userId为0。 rtt Number 网络延迟,单位:毫秒。表示SDK到阿里云服务器的一次网络往返时间,该值越小越好。 一般低于50 ms的延迟相对理想,而高于100 ms的延迟会引起较大的通话延时。 audio Object 音频流 level Number 声音能量值,取值范围:0~1。
camera Object 相机流 width Number 宽度。 height Number 高度。 fps Number 帧率。 screen Object 屏幕流 width Number 宽度。 height Number 高度。 fps Number 帧率。 bytesSentPerSecond Number 每秒发送的字节数(仅推流使用)。 bytesReceivedPerSecond Number 每秒接收到的字节数(仅订阅使用)。 - onMediaStreamUpdate:订阅流返回回调。
aliWebrtc.on("onMediaStreamUpdate", (data) => { console.log(data) })
返回值 类型 描述 userId String 订阅用户的ID。 mediaStream MediaStream 远端流。 说明 通过mediaStream的getTrack()方法获取track,进行自定义播放。track.id用来区分track类型,如下表所示。track.id 描述 sophon_video_camera_large 摄像头大流。 sophon_video_camera_small 摄像头小流。 sophon_video_screen_share 屏幕共享流。 sophon_audio 音频流。 - onNetworkQuality:网络质量回调。
aliWebrtc.on("onNetworkQuality", (data) => { console.log(data) })
返回值 类型 描述 uplinkNetworkQuality Number 上行网络质量,网络质量详情如下所示。 downlinkNetworkQuality Number 下行网络质量,网络质量详情如下所示。 网络质量 值 描述 NETWORK_QUALITY_UNKNOWN 0 网络质量未知,即没有推流或这没有订阅。 NETWORK_QUALITY_EXCELLENT 1 网络极好。 NETWORK_QUALITY_GOOD 2 网络好,用户主观感受和极好差不多,但是码率可能略低于极好。 NETWORK_QUALITY_POOR 3 用户主观感受有瑕疵但不影响沟通。 NETWORK_QUALITY_BAD 4 勉强能沟通但不顺畅。 NETWORK_QUALITY_VERYBAD 5 网络质量非常差,基本不能沟通。 NETWORK_QUALITY_DISCONNECT 6 网络断开。 - onAudioMixingPlayed:伴奏开始播放回调。
aliWebrtc.on("onAudioMixingPlayed", () => { console.log("伴奏开始或恢复播放") })
- onAudioMixingFinished:伴奏播放结束回调。
aliWebrtc.on("onAudioMixingFinished", () => { console.log("伴奏播放结束") })
- onPublishChange:本地发布流回调(自动推流)。
aliWebrtc.on('onPublishChange', (streamList) => { // 自动推送的流内容,streamList 是数组,具体返回值如下 console.log(streamList); });
说明 开启自动推流以后,每次发布的流内容发生改变都会触发。 - onSubscribeChange:自动订阅回调。
aliWebrtc.on('onPublishChange', (publisher) => { // 自动订阅的用户Id console.log(publisher.userId); // 自动订阅的用户名 console.log(publisher.displayName); // 自动订阅的远程流内容,streamConfigs是数组 console.log(publisher.streamConfigs); });
- onShareSystemAudioStart:共享声音通知回调。
aliWebrtc.on('onShareSystemAudioStart', () => { console.log('您已分享系统中的音频'); });
说明 只有本地会收到此通知,远端不会收到此通知。