BRTCListener 用于给 SDK 调用者返回 SDK 接口调用的执行结果、消息、内部工作状态等回调通知,方便 SDK 调用者结合具体的业务场景进行相应处理。
以下函数按照名称首字母升序排列
onError错误事件,表示 SDK 抛出的不可恢复的错误,比如进入房间失败或设备开启失败等。
void onError(int errCode, String errMsg, Bundle extraInfo)
参数
onEnterRoom已加入房间的回调
void onEnterRoom(long result)
详情
onExitRoom离开房间的事件回调
void onExitRoom(int reason)
onRemoteUserEnterRoom有用户加入当前房间
void onRemoteUserEnterRoom(String userId)
onRemoteUserLeaveRoom有用户离开当前房间
void onRemoteUserLeaveRoom(String userId, int reason)
onUserVideoAvailable远端用户是否存在可播放的主路画面(一般用于摄像头)
void onUserVideoAvailable(String userId, boolean available)
收到 onUserVideoAvailable(userid, true) 通知时,表示该路画面已经有可用的视频数据帧到达,此时,您需要调用 startRemoteView 接口加载该用户的远程画面。
收到 onUserVideoAvailable(userid, false) 通知时,表示该路远程画面已被关闭,可能由于您主动 mute 了该用户的视频,或者该用户关闭了自己的视频
自动订阅模式下,收到此通知表示远端用户的视频流已经到达并会被自动拉取并解码 手动订阅模式下,收到此通知表示远端用户的视频流已经可用,但还需要主动触发订阅才会拉取
onUserAudioAvailable远端用户是否存在可播放的音频数据
void onUserAudioAvailable(String userId, boolean available)
自动订阅模式下,收到此通知表示远端用户的音频流已经到达并会被自动拉取并解码播放 手动订阅模式下,收到此通知表示远端用户的音频流已经可用,但还需要主动触发订阅才能解码播放
onUserSubStreamAvailable端用户的辅流(通常是屏幕共享)的可用或不可用状态发生状态变化时通知
void onUserSubStreamAvailable(String userId, boolean available)
“辅路画面”一般被用于承载屏幕分享的画面。当您收到 onUserSubStreamAvailable(userId, true) 通知时,表示该路画面已经有可用的视频数据帧到达。您可以调用 startRemoteView 传入 BRTCVideoStreamTypeSub 类型来请求预览。
onFirstVideoFrame开始渲染本地或远程用户的首帧画面
void onFirstVideoFrame(String userId, BRTCVideoStreamType type, int width, int height)
onLocalVideoFallback本地流视频回退或者恢复
void onLocalVideoFallback(boolean isFallback)
当检测到用户上行网络条件变差,无法满足原有视频流带宽需求时,SDK会自动关闭视频流,保留音频流。当视频流自动关闭和恢复时,您会通过此回调收到通知。您可以通过接口 setVideoFallbackEnable 来设置是否启用视频流自动回退机制。
onFirstAudioFrame已接收到某个远端用户的音频首帧的回调
void onFirstAudioFrame(String userId)
onSendFirstLocalVideoFrame首帧本地视频数据已经被送出
void onSendFirstLocalVideoFrame(BRTCVideoStreamType type)
onSendFirstLocalAudioFrame首帧本地音频数据已经被送出
void onSendFirstLocalAudioFrame()
onSwitchRole切换角色的结果回调
void onSwitchRole(int errCode, String errMsg)
onStatistics音视频相关的度量指标统计回调
void onStatistics(BRTCStatistics statics)
onNetworkQuality推、拉流质量回调,每 2 秒回调一次。此回调从 3.8.0 版本开始提供。
void onNetworkQuality(@NonNull ArrayList<BRTCDef.BRTCNetworkQualityInfo> networkQualityInfos)
onUserVoiceVolume音量大小的反馈回调
void onUserVoiceVolume(ArrayList<BRTCDef.BRTCVolumeInfo> userVolumes, int totalVolume)
onConnectionLostSDK 跟服务器的连接断开
void onConnectionLost()
您收到这个回调后,通常情况下不需要进行额外的处理。因为 SDK 内部会自动发起重连并尝试进行恢复。
onTryToReconnectSDK 尝试重新连接到服务器
void onTryToReconnect()
onConnectionRecoverySDK 跟服务器的连接恢复
void onConnectionRecovery()
onRecvCustomCmdMsg收到自定义消息回调
void onRecvCustomCmdMsg(String userId, int cmdID, int seq, byte[] message)
onRecvSEIMsg收到 SEI 消息的回调
void onRecvSEIMsg(String userId, byte[] data)
onScreenCaptureStarted当屏幕分享开始时,SDK 会通过此回调通知
void onScreenCaptureStarted()
onScreenCapturePaused当屏幕分享暂停时,SDK 会通过此回调通知
void onScreenCapturePaused()
onScreenCaptureResumed当屏幕分享恢复时,SDK 会通过此回调通知
void onScreenCaptureResumed()
onScreenCaptureStoped当屏幕分享停止时,SDK 会通过此回调通知
void onScreenCaptureStoped(int reason)
onLog日志打印回调
void onLog(String log, int level, String module)
onSnapShotVideo视频截图的回调
void onSnapShotVideo(String userId, Bitmap bitmap)
onGLContextCreatedSDK 内部的 OpenGL 环境的创建通知
void onGLContextCreated();
参数 无
onGLContextDestroySDK 内部的 OpenGL 环境的销毁通知
void onGLContextDestroy();
onProcessVideoFrame本地视频帧数据回调
int onProcessVideoFrame(@NonNull final BRTCVideoFrame srcFrame, @NonNull BRTCVideoFrame dstFrame);
当您调用 setLocalVideoProcessListener 接口之后,SDK 会通过此回调方法将编码前的视频帧数据回调给您。您可以读取源视频帧数据进行处理(如截图、交付第三方美颜 SDK等),然后再填充到目标视频帧数据中即可。
onCapturedRawAudioFrame本地采集并经过音频模块前处理后的音频数据回调
void onCapturedRawAudioFrame(BRTCDef.BRTCAudioFrame audioFrame)
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。
采样率 x 帧时长 x 声道数 x 采样点位宽
请千万不要在此回调函数中做任何耗时操作! 由于 SDK 每隔 10ms 就要处理一帧音频数据,如果您的处理时间超过 10ms,就会导致声音异常。 此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。
请千万不要在此回调函数中做任何耗时操作!
由于 SDK 每隔 10ms 就要处理一帧音频数据,如果您的处理时间超过 10ms,就会导致声音异常。
此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。
SDK 2.2 版本开始提供此回调
onLocalProcessedAudioFrame本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调
void onLocalProcessedAudioFrame(BRTCDef.BRTCAudioFrame audioFrame)
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。其他音频格式的说明同 onCapturedRawAudioFrame
onEnterBliveRoom请求加入互动直播房间的结果回调
void onEnterBLiveRoom(long result, BRTCDef.MixStreamTask[] mixStreamTaskList)
BRTCAppScene
BRTCAppScene_LIVE
onEnterBliveRoom
onEnterRoom
BRTCAppScene_VIDEOCALL
onExitBliveRoom离开互动直播房间的结果回调
void onExitBliveRoom(int reason)
onBliveConnectionLost互动直播模式下,与互动直播服务器连接断开的通知
void onBliveConnectionLost();
onBliveTryToReconnect互动直播模式下,尝试和服务器发起重连的通知
void onBliveTryToReconnect();
onBliveConnectionRecovery互动直播模式下,和服务器连接已经恢复的通知
void onBliveConnectionRecovery();
onBliveSwitchRole互动直播模式下的主播、观众角色切换结果通知
void onBliveSwitchRole(BRTCDef.BRTCRoleType roleType);
onMixStreamAdded互动直播模式下,房间内有新的混流产生事件通知
void onMixStreamAdded(String streamId, BRTCDef.MixSteamAddressBean streamProp);
onMixStreamRemoved互动直播模式下,房间内有混流移除的事件通知
void onMixStreamRemoved(String streamId);
onMixStreamUpdate互动直播模式下,房间内混流信息更新的事件通知
void onMixStreamUpdate(String streamId, BRTCDef.MixSteamAddressBean streamProp);
onMixedNotification互动直播模式下,进房成功后,服务器下发当前混流信息
void onMixedNotification(String taskId, String customData);
onBliveConflictLogin互动直播模式下,有其他用户使用了相同的UID进房,已在房用户收到的登录冲突通知
void onBliveConflictLogin();
onStartTranscode互动直播模式下,主播发起混流请求后的结果通知
void onStartTranscode(String taskId);
onStopTranscode互动直播模式下,主播停止混流请求后的结果通知
void onStopTranscode(String taskId);
onRecvAIMsg监听和处理对话式 AI 引擎相关消息
void onRecvAIMsg(@NonNull String userId, byte[] data);
AI 引擎回调消息回调的数据格式为以下 JSON 格式:
{ "cmd": Number, // 消息类型 "messageId": String, // 消息ID "peerUserId": String, // 消息接收者ID(可选字段) "payload": Json // 消息数据,不同的消息类型, payload 内容不同,具体见每种消息类型的说明 }
其中,cmd 包括以下消息类型:
cmd
messageId 是一串 uuid,是此条消息的唯一标识。
messageId
peerUserId 是消息接收者的用户 ID。此字段不是必需字段。
peerUserId
payload 是消息的具体数据内容。不同的 cmd 对应的数据格式不同。具体如下:
payload
{ "code": 0, // 错误码 "message": "", // 详细的错误信息 "errorType": "", // 错误类型。包括: // asr: 提问者(说话人)实时字幕 // llm: 回答者(智能体)实时字幕 // tts: 回答者(智能体)语音合成 // signal: 信令有关的错误 }
{ "roundId": "", // 一轮对话的唯一标识 "words": [{ // text: 单子/词内容;startMs:词开始时间戳;endMs:词结束时间戳 "text": "这是", "startMs": 1620000000000, "endMs": 1620000000100 }, { "text": "一句话", "startMs": 1620000000100, "endMs": 1620000000200 }], "end": false, // true 代表这是一句完整的话 "startMs": 1620000000000, // 这句话的开始时间戳 "endMs": 1620000000200, // 这句话的结束时间戳 "text": "这是一句话", // 本次识别的字幕文本内容 }
{ "roundId": "", // 一轮对话的唯一标识 "timestamp": 0, // 表示状态发生变化时的时间戳 "state": 0 // 状态代码 // 0:空闲中:vad检测无人讲话 // 1:聆听中:客户端讲话中 & asr 输入中 // 2:思考中:大模型输出中 // 3:讲话中:tts输出中 }
{ "roundId": "", // 一轮对话的唯一标识 "final": false, // 如果为 true,代表本次对话内容输出完毕 "text": "这是一句话", // 回答者(智能体)本次回答的完整内容 }
{ "roundId": "", // 唯一标识一轮对话的 ID "end": false, // 如果为 true,代表一句完整的句子输出完毕 "text": "这是一句话", // 翻译文本内容 "sourceLang":"cn", // 翻译的源语言 "targetLang":"en", // 翻译的目标语言 }
Android
BRTCListener 用于给 SDK 调用者返回 SDK 接口调用的执行结果、消息、内部工作状态等回调通知,方便 SDK 调用者结合具体的业务场景进行相应处理。
BRTCListener
以下函数按照名称首字母升序排列
BRTCLogListener
BRTCSnapShotListener
BRTCVideoFrameListener
BRTCAudioFrameListener
详细信息
onError
错误事件,表示 SDK 抛出的不可恢复的错误,比如进入房间失败或设备开启失败等。
参数
onEnterRoom
已加入房间的回调
参数
详情
onExitRoom
离开房间的事件回调
参数
详情
onRemoteUserEnterRoom
有用户加入当前房间
参数
详情
onRemoteUserLeaveRoom
有用户离开当前房间
参数
onUserVideoAvailable
远端用户是否存在可播放的主路画面(一般用于摄像头)
参数
详情
收到 onUserVideoAvailable(userid, true) 通知时,表示该路画面已经有可用的视频数据帧到达,此时,您需要调用 startRemoteView 接口加载该用户的远程画面。
收到 onUserVideoAvailable(userid, false) 通知时,表示该路远程画面已被关闭,可能由于您主动 mute 了该用户的视频,或者该用户关闭了自己的视频
onUserAudioAvailable
远端用户是否存在可播放的音频数据
参数
onUserSubStreamAvailable
端用户的辅流(通常是屏幕共享)的可用或不可用状态发生状态变化时通知
参数
详情
“辅路画面”一般被用于承载屏幕分享的画面。当您收到 onUserSubStreamAvailable(userId, true) 通知时,表示该路画面已经有可用的视频数据帧到达。您可以调用 startRemoteView 传入 BRTCVideoStreamTypeSub 类型来请求预览。
onFirstVideoFrame
开始渲染本地或远程用户的首帧画面
参数
详情
onLocalVideoFallback
本地流视频回退或者恢复
参数
详情
当检测到用户上行网络条件变差,无法满足原有视频流带宽需求时,SDK会自动关闭视频流,保留音频流。当视频流自动关闭和恢复时,您会通过此回调收到通知。您可以通过接口 setVideoFallbackEnable 来设置是否启用视频流自动回退机制。
onFirstAudioFrame
已接收到某个远端用户的音频首帧的回调
参数
onSendFirstLocalVideoFrame
首帧本地视频数据已经被送出
参数
详情
onSendFirstLocalAudioFrame
首帧本地音频数据已经被送出
详情
onSwitchRole
切换角色的结果回调
参数
onStatistics
音视频相关的度量指标统计回调
参数
详情
onNetworkQuality
推、拉流质量回调,每 2 秒回调一次。此回调从 3.8.0 版本开始提供。
参数
onUserVoiceVolume
音量大小的反馈回调
参数
详情
onConnectionLost
SDK 跟服务器的连接断开
onTryToReconnect
SDK 尝试重新连接到服务器
onConnectionRecovery
SDK 跟服务器的连接恢复
onRecvCustomCmdMsg
收到自定义消息回调
参数
详情
onRecvSEIMsg
收到 SEI 消息的回调
参数
详情
onScreenCaptureStarted
当屏幕分享开始时,SDK 会通过此回调通知
onScreenCapturePaused
当屏幕分享暂停时,SDK 会通过此回调通知
onScreenCaptureResumed
当屏幕分享恢复时,SDK 会通过此回调通知
onScreenCaptureStoped
当屏幕分享停止时,SDK 会通过此回调通知
参数
onLog
日志打印回调
参数
onSnapShotVideo
视频截图的回调
参数
onGLContextCreated
SDK 内部的 OpenGL 环境的创建通知
参数 无
onGLContextDestroy
SDK 内部的 OpenGL 环境的销毁通知
参数 无
onProcessVideoFrame
本地视频帧数据回调
参数
详情
当您调用 setLocalVideoProcessListener 接口之后,SDK 会通过此回调方法将编码前的视频帧数据回调给您。您可以读取源视频帧数据进行处理(如截图、交付第三方美颜 SDK等),然后再填充到目标视频帧数据中即可。
onCapturedRawAudioFrame
本地采集并经过音频模块前处理后的音频数据回调
参数
详情
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。
采样率 x 帧时长 x 声道数 x 采样点位宽
,例如以 48KHz 采样率、单声道、16bit 采样点位宽为例,音频帧大小为: 48000 x 0.01(秒) x 1 x 16(比特) = 7680比特 = 960字节onLocalProcessedAudioFrame
本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调
参数
详情
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。其他音频格式的说明同 onCapturedRawAudioFrame
onEnterBliveRoom
请求加入互动直播房间的结果回调
参数
详情
BRTCAppScene
设置为BRTCAppScene_LIVE
,在 enterRoom() 接口执行进房操作后,会收到来自 SDK 的 onEnterBLiveRoom(result) 回调onEnterBliveRoom
与onEnterRoom
的区别:BRTCAppScene
设置为BRTCAppScene_LIVE
,则两种回调都会收到。BRTCAppScene
设置为BRTCAppScene_VIDEOCALL
,则只会收到 onEnterRoom 回调。onExitBliveRoom
离开互动直播房间的结果回调
参数
0:主动调用 exitRoom 退房
1:被服务器踢出当前房间
2:当前房间整个被解散
详情
BRTCAppScene
设置为BRTCAppScene_LIVE
,在调用 exitRoom() 接口执行退出房间后,SDK 会通过 onExitBLiveRoom() 回调通知到您onBliveConnectionLost
互动直播模式下,与互动直播服务器连接断开的通知
onBliveTryToReconnect
互动直播模式下,尝试和服务器发起重连的通知
onBliveConnectionRecovery
互动直播模式下,和服务器连接已经恢复的通知
onBliveSwitchRole
互动直播模式下的主播、观众角色切换结果通知
参数
onMixStreamAdded
互动直播模式下,房间内有新的混流产生事件通知
参数
onMixStreamRemoved
互动直播模式下,房间内有混流移除的事件通知
参数
onMixStreamUpdate
互动直播模式下,房间内混流信息更新的事件通知
参数
onMixedNotification
互动直播模式下,进房成功后,服务器下发当前混流信息
参数
onBliveConflictLogin
互动直播模式下,有其他用户使用了相同的UID进房,已在房用户收到的登录冲突通知
onStartTranscode
互动直播模式下,主播发起混流请求后的结果通知
参数
onStopTranscode
互动直播模式下,主播停止混流请求后的结果通知
参数
onRecvAIMsg
监听和处理对话式 AI 引擎相关消息
参数
AI 引擎回调消息回调的数据格式为以下 JSON 格式:
其中,
cmd
包括以下消息类型:messageId
是一串 uuid,是此条消息的唯一标识。peerUserId
是消息接收者的用户 ID。此字段不是必需字段。payload
是消息的具体数据内容。不同的 cmd 对应的数据格式不同。具体如下: