agora::recording::IRecordingEngineEventHandler类 参考
该类用于为 IRecordingEngine 提供回调。
构造及析构函数说明
~IRecordingEngineEventHandler()
|
成员函数说明
onError()
|
该回调表示 SDK 运行时出现了(网络或媒体相关的)错误。
通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
参数
参数名 | 描述 |
---|---|
error | 错误代码。 |
stat_code | 状态代码。 |
onWarning()
onJoinChannelSuccess()
|
该回调表示录制端成功加入了指定的频道。
参数
参数名 | 描述 |
---|---|
channelId | 和调用 joinChannel 时设置的频道名一致。 |
uid | 用户的 UID。 |
onLeaveChannel()
|
该回调表示录制端成功离开了频道。
参数
参数名 | 描述 |
---|---|
code | 录制端离开频道的原因,详见 LEAVE_PATH_CODE。 |
onUserJoined()
|
该回调提示有远端用户加入当前频道,并返回新加入用户的 UID。
如果在录制端加入之前,已经有用户在频道中,SDK 也会上报这些已在频道中的用户 UID。频道内有多少用户,该回调就会调用几次。
参数
参数名 | 描述 |
---|---|
uid | 用户的 UID。 |
infos | 用户加入频道信息。详见 UserJoinInfos。 |
onRemoteVideoStreamStateChanged()
|
远端用户视频流状态改变回调。
该回调在远端用户视频流状态发生变化时触发,并报告该用户当前的视频流状态和引起变化的原因。
参数
参数名 | 描述 |
---|---|
uid | 远端用户的 UID。 |
state | 该用户当前的视频流状态,详见 RemoteStreamState。 |
reason | 引起远端视频流状态变化的原因,详见 RemoteStreamStateChangedReason。 |
onRemoteAudioStreamStateChanged()
|
远端用户音频流状态改变回调。
该回调在远端用户音频流状态发生变化时触发,并报告该用户当前的音频流状态和引起变化的原因。
参数
参数名 | 描述 |
---|---|
uid | 远端用户的 UID。 |
state | 该用户当前的音频流状态,详见 RemoteStreamState。 |
reason | 引起远端音频流状态变化的原因,详见 RemoteStreamStateChangedReason。 |
onUserOffline()
|
该回调提示有其他用户离开当前频道或掉线。
SDK 判断用户离开频道或掉线的依据是:在一定时间内(15 秒)没有收到对方的任何数据包。在网络较差的情况下,可能会有误报。建议可靠的掉线检测应该由信令来做。
参数
参数名 | 描述 |
---|---|
uid | 用户的 UID。 |
reason | 用户离开当前频道或掉线的原因,详见 USER_OFFLINE_REASON_TYPE。 |
audioFrameReceived()
|
当收到原始音频数据时,会触发该回调。
当你将 RecordingConfig 中的 decodeAudio 设置为 1
、2
或 3
时,可通过该回调接收原始音频数据。
参数
参数名 | 描述 |
---|---|
uid | 用户的 UID。 |
frame | 收到的原始音频数据,格式为 PCM 或 AAC。详见 AudioFrame。 |
videoFrameReceived()
|
当收到视频数据时,会触发该回调。
当你将 RecordingConfig 中的 decodeVideo 设置为 1
、2
或 3
时,可通过该回调接收原始视频数据。
当你将 RecordingConfig 中的 decodeVideo 设置为 4
或 5
时,可通过该回调接收 JPG 文件格式的视频数据。
该回调可用于实现高级功能,如鉴黄。这些功能可以通过采集并分析 I 帧实现。
参数
参数名 | 描述 |
---|---|
uid | 用户的 UID。 |
frame | 收到的视频帧,格式为 YUV、H.264、H.265、JPG 或 JPG 文件。详见 VideoFrame。 |
onActiveSpeaker()
|
监测到活跃用户回调。
RecordingConfig
中的 audioIndicationInterval 大于 0 时(建议设置时间间隔大于 200 ms),如果 SDK 监测到频道内有新的活跃用户说话时,会触发该回调,返回活跃用户的 UID。
参数
参数名 | 描述 |
---|---|
uid | 当前时间段声音最大的用户的 UID。 |
onAudioVolumeIndication()
|
该回调提示频道内谁正在说话以及说话者音量。
RecordingConfi
中的 audioIndicationInterval 大于 0 时(建议设置时间间隔大于 200 ms),该回调会返回在时间间隔内所有说话者的 UID 和音量。
参数
参数名 | 描述 |
---|---|
speakers | 每个说话者的 UID 和音量信息的数组,详见 AudioVolumeInfo。 |
speakerNum | 频道内说话者人数。 |
onFirstRemoteVideoDecoded()
|
该回调提示本地已接收到首帧远端视频并完成解码。
本地收到首帧远端视频流并解码成功时,触发此回调。
参数
参数名 | 描述 |
---|---|
uid | 用户的 UID,指定是哪个用户的视频流。 |
width | 视频流宽(像素)。 |
height | 视频流高(像素)。 |
elapsed | 从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。 |
onFirstRemoteAudioFrame()
|
该回调提示本地已接收到首帧远端音频流。
参数
参数名 | 描述 |
---|---|
uid | 发送音频帧的远端用户的 UID。 |
elapsed | 从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。 |
onReceivingStreamStatusChanged()
|
该回调提示接收音频流或视频流的状态发生改变。
参数
参数名 | 描述 |
---|---|
receivingAudio | 录制端是否在接收音频流。 |
receivingVideo | 录制端是否在接收视频流。 |
onConnectionLost()
|
网络连接丢失回调。
SDK 在调用 joinChannel 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
onConnectionLost 与 onConnectionInterrupted 的区别是:
- onConnectionInterrupted 回调一定是在加入频道成功后,且 SDK 失去和服务器的连接超过 4 秒时触发。
- onConnectionLost 回调是无论之前加入频道是否成功,只要 10 秒内和服务器无法建立连接都会触发。
无论是哪种回调,除非应用程序主动调用 leaveChannel,不然 SDK 会一直自动重连。
onConnectionInterrupted()
|
网络连接中断回调。
SDK 在和服务器建立连接后,失去网络连接超过 4 秒,就会触发该回调。在触发事件后,SDK 会主动重连服务器,所以该事件可以用于 UI 提示。
onConnectionLost 与 onConnectionInterrupted 的区别是:
- onConnectionInterrupted 回调一定是在加入频道成功后,且 SDK 失去和服务器的连接超过 4 秒时触发。
- onConnectionLost 回调是无论之前加入频道是否成功,只要 10 秒内和服务器无法建立连接都会触发。
无论是哪种回调,除非应用程序主动调用 leaveChannel,不然 SDK 会一直自动重连。
onRejoinChannelSuccess()
|
重新加入频道回调。
有时由于网络原因,录制客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
参数
参数名 | 描述 |
---|---|
channelId | 频道名。 |
uid | 录制端的 UID。 |
onConnectionStateChanged()
|
网络连接状态已改变回调。
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态和网络状态改变的原因。
参数
参数名 | 描述 |
---|---|
state | 当前的网络连接状态,详见 ConnectionStateType。 |
reason | 网络连接状态发生改变的原因,详见 ConnectionChangedReasonType。 |
onRemoteVideoStats()
|
远端视频流统计信息回调。
该回调报告远端用户端到端的视频流统计信息,针对每个发送视频流的远端用户(通信模式)/主播(直播模式)每 2 秒触发一次。如果远端有多个用户/主播发送视频流,该回调每 2 秒会被触发多次。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID,指定是哪个用户的视频流。 |
stats | 远端视频统计数据。详见 RemoteVideoStats。 |
onRemoteAudioStats()
|
远端音频流统计信息回调。
该回调描述远端用户端到端的音频流统计信息,针对每个发送音频流的远端用户(通信模式)/主播(直播模式)每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。
参数
参数名 | 描述 |
---|---|
uid | 用户 ID,指定是哪个用户的音频流。 |
stats | 远端音频统计数据。详见 RemoteAudioStats。 |
onRecordingStats()
|
录制统计信息回调。
录制 SDK 定期向录制端报告当前录制的统计信息,每两秒触发一次。
参数
参数名 | 描述 |
---|---|
stats | 详见 RecordingStats。 |
onLocalUserRegistered()
|
该回调表示本地用户已成功注册 User Account。
录制端调用 joinChannelWithUserAccount 方法成功注册 User Account 后,SDK 会触发该回调,并报告录制端的 UID 和 User Account。
参数
参数名 | 描述 |
---|---|
uid | 录制端的 UID。 |
userAccount | 录制端的 User Account。 |
onUserInfoUpdated()
|
该回调提示远端用户的信息已更新。
远端用户加入频道后,SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 onUserInfoUpdated
。
参数
参数名 | 描述 |
---|---|
uid | 远端用户的 UID。 |
info | 标识用户信息的 UserInfo 对象,包含用户 UID 和 User Account。 |