TRTCCallback

TRTCCallback

设置 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() 接口返回值数据。

  • userId:跨房通话时对端 userId
  • errCode: 错误状态码,返回0表示跨房通话成功。
  • errMsg: 状态信息,跨房通话成功返回 OK。

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:

  • 拉取 Web 端(用 WebRTC 实现屏幕分享)的屏幕分享,收不到 onUserSubStreamAvailable 事件。因为 WebRTC 推的屏幕分享也是主流
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

播放结束的状态码