rtcEngine.setRtcClientEvent(object : RTCClientEvent {
override fun onJoinSucceed(channel: String, uid: String, whiteBoard: String?) {
// 自己加入频道成功
// 后续可以在这里更新 UI、记录当前 uid、开始展示会中状态
}
override fun onRemoteUserJoin(channel: String, uid: String) {
// 远端用户加入频道
}
override fun onStreamTrackAdd(uid: String, channel: String, trackId: String, trackDesc: String) {
// 收到新增码流通知
// 通常在这里决定是否订阅远端视频轨道
}
override fun onStreamTrackRemove(uid: String, channel: String, trackInfo: TrackInfo) {
// 远端码流移除
// 通常在这里移除对应渲染视图并清理状态
}
override fun onDisconnected(leaveReason: LeaveReason, statusCode: Int, message: String) {
// 服务断开且不可恢复
// 一般需要提示用户并重新加入频道或重新鉴权
}
})
rtcEngine.setRtcMediaEvent(object : RTCMediaEvent {
override fun onMediaConnected() {
// 流媒体服务器连接成功
}
override fun onVolumesReport(volumes: MutableMap<UserTrackDesc, VolumeInfo>) {
// 音量信息上报
// 可用于说话人高亮、音量柱动画等
}
})
rtcEngine.setRtcImEvent(imEvent)
// 可选:本地视频帧外部回调(如需自行处理本地画面时设置)
rtcEngine.setRtcLocalVideoFrameEvent(object : RTCLocalVideoFrameEvent {
override fun onLocalVideoFrame(yuv: ByteArray?, width: Int, height: Int, stamp: Long, format: Int, facing: Int) {
// 拿到本地一帧视频(yuv 为 SDK 单独拷贝的数据)
}
override fun onLocalVideoFrameSizeChanged(width: Int, height: Int, facing: Int) {
// 本地帧尺寸或摄像头方向变化
}
})