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)
onUserAudioAvailable
onUserVideoAvailable
onUserVideoAvailable远端用户的主视频可用状态发生变化
void onUserVideoAvailable(String userId, boolean available)
收到 onUserVideoAvailable(userid, true) 通知时,表示该路画面已经有可用的视频数据帧到达,此时,您需要调用 startRemoteView 接口加载该用户的远程画面。
收到 onUserVideoAvailable(userid, false) 通知时,表示该路远程画面已被关闭,通常是用户关闭了自己的摄像头。如果您不进行任何操作,之前显示的视频画面将卡停或者变黑
自动订阅模式下,收到 onUserVideoAvailable(userid, true) 通知时,表示远端用户的视频流已经到达并会被自动拉取并解码
手动订阅模式下,收到 onUserVideoAvailable(userid, true) 通知时,表示远端用户的视频流已经可用,但 SDK 不会自动拉取其数据,如果需要显示,您需要主动触发订阅(如调用 muteRemoteVideo(userid, false))才会拉取其数据
muteRemoteVideo(userid, false)
onUserAudioAvailable远端用户音频可用状态发生变化
void onUserAudioAvailable(String userId, boolean available)
muteRemoteAudio(userid, false)
onUserSubStreamAvailable远端用户的辅流可用状态发生变化
void onUserSubStreamAvailable(String userId, boolean available)
startRemoteView
BRTCVideoStreamTypeSub
startScreenCapture
BRTCVideoStreamTypeBig
onFirstVideoFrame开始渲染本地或远程用户的首帧画面
void onFirstVideoFrame(String userId, BRTCVideoStreamType type, int width, int height)
onLocalVideoFallback本地流视频回退或者恢复
void onLocalVideoFallback(boolean isFallback)
onFirstAudioFrame已接收到某个远端用户的音频首帧
void onFirstAudioFrame(String userId)
您收到此回调时,表示该远端用户的第一帧音频数据已到达。如果当前是自动订阅模式,随后将会被自动播放出来。
onSendFirstLocalVideoFrame首帧本地视频数据已经被送出
void onSendFirstLocalVideoFrame(BRTCVideoStreamType type)
SDK 会在您调用触发视频推流相关接口成功后开始摄像头采集,并将采集到的画面进行编码、发送。当 SDK 成功向服务器送出第一帧视频数据后,会抛出这个回调事件。
onSendFirstLocalAudioFrame首帧本地音频数据已经被送出
void onSendFirstLocalAudioFrame()
SDK 会在您调用触发音频推流相关接口成功后开始麦克风采集,并将采集到的声音进行编码、发送。当 SDK 成功向服务器送出第一帧音频数据后,会抛出这个回调事件。
onSwitchRole切换角色的结果回调
void onSwitchRole(int errCode, String errMsg)
onStatistics音视频相关的度量指标统计回调
void onStatistics(BRTCStatistics statics)
onNetworkQuality推、拉流质量回调此回调从 3.8.0 版本开始提供。
void onNetworkQuality(@NonNull ArrayList<BRTCDef.BRTCNetworkQualityInfo> networkQualityInfos)
此回调平均每 2 秒触发一次
onUserVoiceVolume音量大小的反馈
void onUserVoiceVolume(ArrayList<BRTCDef.BRTCVolumeInfo> userVolumes, int totalVolume)
enableAudioVolumeEvaluation
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)
当房间中的某个用户使用 sendSEIMsg 发送数据时,房间中的其它用户可以通过此接口接收数据
sendSEIMsg
onScreenCaptureStarted屏幕分享已开始
void onScreenCaptureStarted()
onScreenCapturePaused屏幕分享变为暂停状态
void onScreenCapturePaused()
onScreenCaptureResumed屏幕分享暂停变为恢复状态
void onScreenCaptureResumed()
onScreenCaptureStoped屏幕分享已停止
void onScreenCaptureStoped(int reason)
onLogSDK 运行日志
void onLog(String log, int level, String module)
BRTCSDK
onSnapShotVideo视频截图
void onSnapShotVideo(String userId, Bitmap bitmap)
onGLContextCreated本地摄像头开始采集并可以准备使用 OpenGL 渲染时的通知
void onGLContextCreated();
参数 无
onGLContextDestroy本地摄像头采集停止并 OpenGL 渲染环境销毁时的通知
void onGLContextDestroy();
onProcessVideoFrame本地视频帧数据回调
int onProcessVideoFrame(@NonNull final BRTCVideoFrame srcFrame, @NonNull BRTCVideoFrame dstFrame);
onCapturedRawAudioFrame经过前处理后的本地采集音频数据
void onCapturedRawAudioFrame(BRTCDef.BRTCAudioFrame audioFrame)
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。
采样率 x 帧时长 x 声道数 x 采样点位宽
⚠️ 请千万不要在此回调函数中做任何耗时操作! 由于 SDK 每隔 10ms 就要处理一帧音频数据,如果您的处理时间超过 10ms,就会导致声音异常。
onLocalProcessedAudioFrame经过音频前处理、音效处理以及混 BGM 后的音频数据
SDK 2.2 版本开始提供此回调
void onLocalProcessedAudioFrame(BRTCDef.BRTCAudioFrame audioFrame)
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。其他音频格式的说明同 onCapturedRawAudioFrame
onPlayAudioFrame播放的远端用户音频数据在混音前的回调📝 此方法从 3.12.10 开始提供
void onPlayAudioFrame(@Nullable BRTCDef.BRTCAudioFrame audioFrame, @NonNull String userId);
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
加入房间结果
参数
result < 0 时为进房错误码
详情
onExitRoom
离开房间结果
参数
详情
onRemoteUserEnterRoom
有用户加入当前房间
参数
onRemoteUserLeaveRoom
有用户离开当前房间
参数
详情
onUserAudioAvailable、onUserVideoAvailable事件回调,当参数中的布尔值发生变化时,才表示该用户的音视频状态发生了变化。onUserVideoAvailable
远端用户的主视频可用状态发生变化
参数
详情
收到 onUserVideoAvailable(userid, true) 通知时,表示该路画面已经有可用的视频数据帧到达,此时,您需要调用 startRemoteView 接口加载该用户的远程画面。
收到 onUserVideoAvailable(userid, false) 通知时,表示该路远程画面已被关闭,通常是用户关闭了自己的摄像头。如果您不进行任何操作,之前显示的视频画面将卡停或者变黑
自动订阅模式下,收到 onUserVideoAvailable(userid, true) 通知时,表示远端用户的视频流已经到达并会被自动拉取并解码
手动订阅模式下,收到 onUserVideoAvailable(userid, true) 通知时,表示远端用户的视频流已经可用,但 SDK 不会自动拉取其数据,如果需要显示,您需要主动触发订阅(如调用
muteRemoteVideo(userid, false))才会拉取其数据onUserAudioAvailable
远端用户音频可用状态发生变化
参数
muteRemoteAudio(userid, false)才能解码播放onUserSubStreamAvailable
远端用户的辅流可用状态发生变化
参数
详情
startRemoteView传入BRTCVideoStreamTypeSub类型来请求预览。startScreenCapture方法设置了BRTCVideoStreamTypeSub类型,才会收到 onUserSubStreamAvailable 回调。如果设置的是BRTCVideoStreamTypeBig类型,只会触发 onUserVideoAvailable 回调。onFirstVideoFrame
开始渲染本地或远程用户的首帧画面
参数
详情
onLocalVideoFallback
本地流视频回退或者恢复
参数
false: 本地流视频恢复推送
详情
onFirstAudioFrame
已接收到某个远端用户的音频首帧
参数
详情
您收到此回调时,表示该远端用户的第一帧音频数据已到达。如果当前是自动订阅模式,随后将会被自动播放出来。
onSendFirstLocalVideoFrame
首帧本地视频数据已经被送出
参数
详情
SDK 会在您调用触发视频推流相关接口成功后开始摄像头采集,并将采集到的画面进行编码、发送。当 SDK 成功向服务器送出第一帧视频数据后,会抛出这个回调事件。
onSendFirstLocalAudioFrame
首帧本地音频数据已经被送出
详情
SDK 会在您调用触发音频推流相关接口成功后开始麦克风采集,并将采集到的声音进行编码、发送。当 SDK 成功向服务器送出第一帧音频数据后,会抛出这个回调事件。
onSwitchRole
切换角色的结果回调
参数
onStatistics
音视频相关的度量指标统计回调
参数
详情
onNetworkQuality
推、拉流质量回调
此回调从 3.8.0 版本开始提供。
参数
详情
此回调平均每 2 秒触发一次
onUserVoiceVolume
音量大小的反馈
参数
详情
enableAudioVolumeEvaluation接口来开关这个回调或者设置它的触发间隔。需要注意的是,调用enableAudioVolumeEvaluation开启音量回调后,无论频道内是否有人说话,都会按设置的时间间隔触发这个回调事件。如果没有人说话,则 userVolumes 为空,totalVolume 为 0。onConnectionLost
SDK 跟服务器的连接断开
详情
您收到这个回调后,通常情况下不需要进行额外的处理。因为 SDK 内部会自动发起重连并尝试进行恢复。
onTryToReconnect
SDK 尝试重新连接到服务器
onConnectionRecovery
SDK 跟服务器的连接恢复
onRecvCustomCmdMsg
收到自定义消息
参数
详情
onRecvSEIMsg
收到 SEI 消息
参数
详情
当房间中的某个用户使用
sendSEIMsg发送数据时,房间中的其它用户可以通过此接口接收数据onScreenCaptureStarted
屏幕分享已开始
onScreenCapturePaused
屏幕分享变为暂停状态
onScreenCaptureResumed
屏幕分享暂停变为恢复状态
onScreenCaptureStoped
屏幕分享已停止
参数
0: 调用了 stopScreenCapture主动停止
1000: 屏幕分享被用户主动停止
1001: 屏幕分享被系统强制停止
1002: 屏幕共享未成功,意外终止
onLog
SDK 运行日志
参数
BRTCSDKonSnapShotVideo
视频截图
参数
onGLContextCreated
本地摄像头开始采集并可以准备使用 OpenGL 渲染时的通知
参数 无
onGLContextDestroy
本地摄像头采集停止并 OpenGL 渲染环境销毁时的通知
参数 无
onProcessVideoFrame
本地视频帧数据回调
参数
详情
onCapturedRawAudioFrame
经过前处理后的本地采集音频数据
参数
详情
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。
采样率 x 帧时长 x 声道数 x 采样点位宽,例如以 48KHz 采样率、单声道、16bit 采样点位宽为例,音频帧大小为: 48000 x 0.01(秒) x 1 x 16(比特) = 7680比特 = 960字节⚠️ 请千万不要在此回调函数中做任何耗时操作! 由于 SDK 每隔 10ms 就要处理一帧音频数据,如果您的处理时间超过 10ms,就会导致声音异常。
onLocalProcessedAudioFrame
经过音频前处理、音效处理以及混 BGM 后的音频数据
参数
详情
当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。其他音频格式的说明同 onCapturedRawAudioFrame
onPlayAudioFrame
播放的远端用户音频数据在混音前的回调
📝 此方法从 3.12.10 开始提供
参数
详情
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 对应的数据格式不同。具体如下: