设置 TrtcCloud 回调
Example
// 创建/使用/销毁 TrtcCloud 对象的示例代码:
import TrtcCloud from '@/TrtcCloud/lib/index';
this.trtcCloud = new TrtcCloud();
// 添加事件监听的方法,事件关键字详见下方”通用事件回调“
this.trtcCloud.on('onEnterRoom', (result) => {
if (result > 0) {
console.log(`enter room success, spend ${result}ms`);
} else {
console.log(`enter room failed, error code = ${result}`);
}
});
Events
onError
错误回调,表示 SDK 不可恢复的错误,一定要监听并分情况给用户适当的界面提示
Parameters:
Name | Type | Description |
---|---|---|
code |
Number |
错误码,详见 |
message |
String |
错误信息 |
extraInfo |
Object |
扩展信息字段,个别错误码可能会带额外的信息帮助定位问题 |
onWarning
警告回调,用于告知您一些非严重性问题,例如出现卡顿或者可恢复的解码失败
Parameters:
Name | Type | Description |
---|---|---|
code |
Number |
警告码,详见 |
message |
String |
警告信息 |
extraInfo |
Object |
扩展信息字段,个别警告码可能会带额外的信息帮助定位问题 |
onEnterRoom
进房后的回调
调用 enterRoom()
接口执行进房操作后,会收到 onEnterRoom(result)
回调
如果加入成功,result 会是一个正数(result > 0),代表加入房间的时间消耗,单位是毫秒(ms)。
如果加入失败,result 会是一个负数(result < 0),代表进房失败的错误码。
Parameters:
Name | Type | Description |
---|---|---|
result |
Number |
进房耗时 |
onExitRoom
离开房间的事件回调
调用 exitRoom()
接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。待资源释放完毕,会通过 onExitRoom()
回调通知到您
Note:
- 如果您要再次调用
enterRoom()
或者切换到其他的音视频 SDK,请等待onExitRoom()
回调到来之后再执行相关操作。 否则可能会遇到音频设备被占用等各种异常问题
Parameters:
Name | Type | Description |
---|---|---|
reason |
Number |
离开房间原因,0:主动调用 exitRoom 退房;1:被服务器踢出当前房间;2:当前房间整个被解散 |
onConnectOtherRoom
跨房通话事件回调
调用 TRTCCloud 中的 connectOtherRoom() 接口会将两个不同房间中的主播拉通视频通话,也就是所谓的“主播PK”功能。
调用者会收到 onConnectOtherRoom() 事件回调来获知跨房通话是否成功, 如果成功,两个房间中的所有用户都会收到来自另一个房间中的 PK 主播的 onUserVideoAvailable() 回调。
Parameters:
Name | Type | Description |
---|---|---|
params |
Object |
调用 connectOtherRoom() 接口返回值数据。
|
onDisconnectOtherRoom
结束跨房通话的结果回调
调用 TRTCCloud 中的 disconnectOtherRoom() 接口会将两个不同房间中的主播拉通视频通话,也就是所谓的“主播PK”功能。
调用者会收到 onDisconnectOtherRoom() 事件回调来获知结束跨房通话是否成功。
Parameters:
Name | Type | Description |
---|---|---|
params |
Object |
调用 disconnectOtherRoom() 失败时返回的错误数据。
|
onSwitchRole
切换角色的事件回调
调用 TRTCCloud 中的 switchRole() 接口会切换主播和观众的角色,该操作会伴随一个线路切换的过程, 待 SDK 切换完成后,会抛出 onSwitchRole() 事件回调
Parameters:
Name | Type | Description |
---|---|---|
code |
Number |
错误码,详见 |
message |
String |
错误信息 |
onFirstVideoFrame
开始渲染本地或远程用户的首帧画面
如果 userId 为 null,代表开始渲染本地采集的摄像头画面,需要您先调用 startLocalPreview
触发。 如果 userId 不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView
触发
只有当您调用 startLocalPreview()、startRemoteView() 或 startRemoteSubStreamView()
之后,才会触发该回调
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
本地或远程用户 ID,如果 userId === null 代表本地,userId !== null 代表远程 |
streamType |
Number |
视频流类型:摄像头或屏幕分享 |
width |
Number |
画面宽度 |
height |
Number |
画面高度 |
onFirstAudioFrame
开始播放远程用户的首帧音频(本地声音暂不通知)
如果 userId 为 null,代表开始渲染本地采集的摄像头画面,需要您先调用 startLocalPreview
触发。 如果 userId 不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView
触发
只有当您调用 startLocalPreview()、startRemoteView() 或 startRemoteSubStreamView()
之后,才会触发该回调
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
远程用户 ID |
onSnapshotComplete
截图完成时回调
Parameters:
Name | Type | Description |
---|---|---|
base64Data |
String |
截图对应的 base64 数据 |
message |
String |
错误信息 |
onRemoteUserEnterRoom
有用户加入当前房间
出于性能方面的考虑,在两种不同的应用场景下,该通知的行为会有差别:
通话场景(TRTCAppScene.TRTCAppSceneVideoCall 和 TRTCAppScene.TRTCAppSceneAudioCall):该场景下用户没有角色的区别,任何用户进入房间都会触发该通知。
直播场景(TRTCAppScene.TRTCAppSceneLIVE 和 TRTCAppScene.TRTCAppSceneVoiceChatRoom ):该场景不限制观众的数量,如果任何用户进出都抛出回调会引起很大的性能损耗,所以该场景下只有主播进入房间时才会触发该通知,观众进入房间不会触发该通知
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户标识 ID |
onRemoteUserLeaveRoom
有用户离开当前房间
与 onRemoteUserEnterRoom 相对应,在两种不同的应用场景下,该通知的行为会有差别:
通话场景(TRTCAppScene.TRTCAppSceneVideoCall 和 TRTCAppScene.TRTCAppSceneAudioCall):该场景下用户没有角色的区别,任何用户进入房间都会触发该通知。
直播场景(TRTCAppScene.TRTCAppSceneLIVE 和 TRTCAppScene.TRTCAppSceneVoiceChatRoom ):该场景不限制观众的数量,如果任何用户进出都抛出回调会引起很大的性能损耗,所以该场景下只有主播进入房间时才会触发该通知,观众进入房间不会触发该通知
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户标识 ID |
reason |
Number |
离开原因,0 表示用户主动退出房间,1 表示用户超时退出,2 表示被踢出房间 |
onSendFirstLocalAudioFrame
首帧本地音频数据已经被送出
在 enterRoom()
并 startLocalAudio()
成功后开始麦克风采集,并将采集到的声音进行编码。 当 SDK 成功向云端送出第一帧音频数据后,会抛出这个回调事件
onSendFirstLocalVideoFrame
首帧本地视频数据已经被送出
SDK 会在 enterRoom()
并 startLocalPreview()
成功后开始摄像头采集,并将采集到的画面进行编码。 当 SDK 成功向云端送出第一帧视频数据后,会抛出这个回调事件
Parameters:
Name | Type | Description |
---|---|---|
streamType |
Number |
视频流类型,大画面、小画面或辅流画面(屏幕分享) |
onUserAudioAvailable
远端用户是否存在可播放的音频数据
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户标识 ID |
available |
Boolean |
声音是否开启 |
onUserVideoAvailable
远端用户是否存在可播放的主路画面(一般用于摄像头)
当您收到 onUserVideoAvailable(userId, true)
通知时,表示该路画面已经有可用的视频数据帧到达。 此时,您需要调用 startRemoteView(userId)
接口加载该用户的远程画面。 然后,您会收到名为 onFirstVideoFrame(userid) 的首帧画面渲染回调。
当您收到 onUserVideoAvailable(userId, false)
通知时,表示该路远程画面已经被关闭,可能由于该用户调用了 muteLocalVideo()
或 stopLocalPreview()
。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户标识 ID |
available |
Boolean |
画面是否开启 |
onUserVoiceVolume
用于提示音量大小的回调,包括每个 userId 的音量和远端总音量
SDK 可以评估每一路音频的音量大小,并每隔一段时间抛出该事件回调,您可以根据音量大小在 UI 上做出相应的提示,比如“波形图”或“音量槽”。 要完成这个功能, 您需要先调用 enableAudioVolumeEvaluation 开启这个能力并设定事件抛出的时间间隔。 需要补充说明的是,无论当前房间中是否有人说话,SDK 都会按照您设定的时间间隔定时抛出此事件回调,只不过当没有人说话时,userVolumes 为空,totalVolume 为 0。
Note:
- userVolumes 为一个数组,对于数组中的每一个元素,当 userId 为空时表示本地麦克风采集的音量大小,当 userId 不为空时代表远端用户的音量大小
Parameters:
Name | Type | Description |
---|---|---|
userVolumes |
Array |
是一个数组,用于承载所有正在说话的用户的音量大小,取值范围 0 - 100 |
totalVolume |
Number |
所有远端用户的总音量大小, 取值范围 0 - 100 |
onScreenCaptureStarted
屏幕分享开启的事件回调
当您通过 startScreenCapture 等相关接口启动屏幕分享时,SDK 便会抛出此事件回调
onScreenCaptureStopped
屏幕分享停止的事件回调
当您通过 stopScreenCapture 停止屏幕分享时,SDK 便会抛出此事件回调
Parameters:
Name | Type | Description |
---|---|---|
reason |
Number |
停止原因,0:用户主动停止;1:屏幕窗口关闭导致停止;2:表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等) |
onScreenCapturePaused
屏幕分享停止的事件回调
当您通过 pauseScreenCapture 停止屏幕分享时,SDK 便会抛出此事件回调
Parameters:
Name | Type | Description |
---|---|---|
reason |
Number |
停止原因,0:用户主动停止;1:屏幕窗口关闭导致停止;2:表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等) |
onScreenCaptureResumed
屏幕分享恢复的事件回调
当您通过 resumeScreenCapture 恢复屏幕分享时,SDK 便会抛出此事件回调
onUserSubStreamAvailable
某远端用户发布/取消了辅路视频画面
“辅路画面”一般被用于承载屏幕分享的画面。当您收到 onUserSubStreamAvailable(userId, true) 通知时,表示该路画面已经有可播放的视频帧到达。 此时,您需要调用 startRemoteView 接口订阅该用户的远程画面,订阅成功后,您会继续收到该用户的首帧画面渲染回调 onFirstVideoFrame(userId)
Note:
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户 ID |
available |
Boolean |
是否可用,true 表示辅流可用 |
onUserVideoSizeChanged
用户视频大小发生改变回调。
当您收到 onUserVideoSizeChanged(userId, streamtype, newWidth, newHeight) 通知时,表示该路画面大小发生了调整,调整的原因可能是该用户调用了 setVideoEncoderParam 或者 setSubStreamEncoderParam 重新设置了画面尺寸。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
用户 ID |
streamType |
Number |
视频流类型,仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub |
newWidth |
Number |
视频流的宽度(像素) |
newHeight |
Number |
视频流的高度(像素) |
onStart
背景音乐开始播放
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
播放的 id |
errCode |
Number |
播放的状态码 |
onPlayProgress
背景音乐的播放进度
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
播放的 id |
curPtsMS |
Number |
当前播放的位置 |
durationMS |
Number |
当前音频总时长 |
onComplete
背景音乐已经播放完毕
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
播放的 id |
errCode |
Number |
播放结束的状态码 |