agora::recording::IRecordingEngineEventHandler类 参考

  • C++

更新时间不可用

详细描述

该类用于为 IRecordingEngine 提供回调。

构造及析构函数说明

~IRecordingEngineEventHandler()

inlinevirtual
virtual agora::recording::IRecordingEngineEventHandler::~IRecordingEngineEventHandler()

成员函数说明

onError()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onError(int error, agora::linuxsdk::STAT_CODE_TYPE stat_code)

该回调表示 SDK 运行时出现了(网络或媒体相关的)错误。

通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。

参数
参数名描述
error
stat_code
表格内容超出当前宽度,可横向滚动查看更多列。

onWarning()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onWarning(int warn)

该回调表示 SDK 运行时出现了(网络或媒体相关的)警告。

通常情况下,SDK 上报的警告信息应用程序可以忽略,SDK 会自动恢复。

参数
参数名描述
warn
表格内容超出当前宽度,可横向滚动查看更多列。

onJoinChannelSuccess()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onJoinChannelSuccess(const char * channelId, uid_t uid)

该回调表示录制端成功加入了指定的频道。

参数
参数名描述
channelId

和调用 joinChannel 时设置的频道名一致。

uid

用户的 UID。

表格内容超出当前宽度,可横向滚动查看更多列。

onLeaveChannel()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onLeaveChannel(agora::linuxsdk::LEAVE_PATH_CODE code)

该回调表示录制端成功离开了频道。

参数
参数名描述
code

录制端离开频道的原因,详见 LEAVE_PATH_CODE。

表格内容超出当前宽度,可横向滚动查看更多列。

onUserJoined()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onUserJoined(uid_t uid, agora::linuxsdk::UserJoinInfos & infos)

该回调提示有远端用户加入当前频道,并返回新加入用户的 UID。

如果在录制端加入之前,已经有用户在频道中,SDK 也会上报这些已在频道中的用户 UID。频道内有多少用户,该回调就会调用几次。

参数
参数名描述
uid

用户的 UID。

infos

用户加入频道信息。详见 UserJoinInfos。

表格内容超出当前宽度,可横向滚动查看更多列。

onRemoteVideoStreamStateChanged()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRemoteVideoStreamStateChanged(uid_t uid, linuxsdk::RemoteStreamState state, linuxsdk::RemoteStreamStateChangedReason reason)

远端用户视频流状态改变回调。

该回调在远端用户视频流状态发生变化时触发,并报告该用户当前的视频流状态和引起变化的原因。

参数
参数名描述
uid

远端用户的 UID。

state

该用户当前的视频流状态,详见 RemoteStreamState。

reason

引起远端视频流状态变化的原因,详见 RemoteStreamStateChangedReason。

表格内容超出当前宽度,可横向滚动查看更多列。

onRemoteAudioStreamStateChanged()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRemoteAudioStreamStateChanged(uid_t uid, linuxsdk::RemoteStreamState state, linuxsdk::RemoteStreamStateChangedReason reason)

远端用户音频流状态改变回调。

该回调在远端用户音频流状态发生变化时触发,并报告该用户当前的音频流状态和引起变化的原因。

参数
参数名描述
uid

远端用户的 UID。

state

该用户当前的音频流状态,详见 RemoteStreamState。

reason

引起远端音频流状态变化的原因,详见 RemoteStreamStateChangedReason。

表格内容超出当前宽度,可横向滚动查看更多列。

onUserOffline()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onUserOffline(uid_t uid, agora::linuxsdk::USER_OFFLINE_REASON_TYPE reason)

该回调提示有其他用户离开当前频道或掉线。

SDK 判断用户离开频道或掉线的依据是:在一定时间内(15 秒)没有收到对方的任何数据包。在网络较差的情况下,可能会有误报。建议可靠的掉线检测应该由信令来做。

参数
参数名描述
uid

用户的 UID。

reason

用户离开当前频道或掉线的原因,详见 USER_OFFLINE_REASON_TYPE。

表格内容超出当前宽度,可横向滚动查看更多列。

audioFrameReceived()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::audioFrameReceived(unsigned int uid, const agora::linuxsdk::AudioFrame * frame) const

当收到原始音频数据时,会触发该回调。

当你将 RecordingConfig 中的 decodeAudio 设置为 1、2 或 3 时,可通过该回调接收原始音频数据。

参数
参数名描述
uid

用户的 UID。

frame

收到的原始音频数据,格式为 PCM 或 AAC。详见 AudioFrame。

表格内容超出当前宽度,可横向滚动查看更多列。

videoFrameReceived()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::videoFrameReceived(unsigned int uid, const agora::linuxsdk::VideoFrame * frame) const

当收到视频数据时,会触发该回调。

当你将 RecordingConfig 中的 decodeVideo 设置为 1、2 或 3 时,可通过该回调接收原始视频数据。

当你将 RecordingConfig 中的 decodeVideo 设置为 4 或 5 时,可通过该回调接收 JPG 文件格式的视频数据。

该回调可用于实现高级功能,如鉴黄。这些功能可以通过采集并分析 I 帧实现。

参数
参数名描述
uid

用户的 UID。

frame

收到的视频帧,格式为 YUV、H.264、H.265、JPG 或 JPG 文件。详见 VideoFrame。

表格内容超出当前宽度,可横向滚动查看更多列。

onActiveSpeaker()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onActiveSpeaker(uid_t uid)

监测到活跃用户回调。

RecordingConfig 中的 audioIndicationInterval 大于 0 时(建议设置时间间隔大于 200 ms),如果 SDK 监测到频道内有新的活跃用户说话时,会触发该回调,返回活跃用户的 UID。

参数
参数名描述
uid

当前时间段声音最大的用户的 UID。

表格内容超出当前宽度,可横向滚动查看更多列。

onAudioVolumeIndication()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onAudioVolumeIndication(const agora::linuxsdk::AudioVolumeInfo * speakers, unsigned int speakerNum)

该回调提示频道内谁正在说话以及说话者音量。

RecordingConfi 中的 audioIndicationInterval 大于 0 时(建议设置时间间隔大于 200 ms),该回调会返回在时间间隔内所有说话者的 UID 和音量。

参数
参数名描述
speakers

每个说话者的 UID 和音量信息的数组,详见 AudioVolumeInfo。

speakerNum

频道内说话者人数。

表格内容超出当前宽度,可横向滚动查看更多列。

onFirstRemoteVideoDecoded()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onFirstRemoteVideoDecoded(uid_t uid, int width, int height, int elapsed)

该回调提示本地已接收到首帧远端视频并完成解码。

本地收到首帧远端视频流并解码成功时,触发此回调。

参数
参数名描述
uid

用户的 UID,指定是哪个用户的视频流。

width

视频流宽(像素)。

height

视频流高(像素)。

elapsed

从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

onFirstRemoteAudioFrame()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onFirstRemoteAudioFrame(uid_t uid, int elapsed)

该回调提示本地已接收到首帧远端音频流。

参数
参数名描述
uid

发送音频帧的远端用户的 UID。

elapsed

从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。

表格内容超出当前宽度,可横向滚动查看更多列。

onReceivingStreamStatusChanged()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onReceivingStreamStatusChanged(bool receivingAudio, bool receivingVideo)

该回调提示接收音频流或视频流的状态发生改变。

参数
参数名描述
receivingAudio

录制端是否在接收音频流。

receivingVideo

录制端是否在接收视频流。

表格内容超出当前宽度,可横向滚动查看更多列。

onConnectionLost()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onConnectionLost()

网络连接丢失回调。

SDK 在调用 joinChannel 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。

onConnectionLost 与 onConnectionInterrupted 的区别是:

  • onConnectionInterrupted 回调一定是在加入频道成功后,且 SDK 失去和服务器的连接超过 4 秒时触发。
  • onConnectionLost 回调是无论之前加入频道是否成功,只要 10 秒内和服务器无法建立连接都会触发。

无论是哪种回调,除非应用程序主动调用 leaveChannel,不然 SDK 会一直自动重连。

onConnectionInterrupted()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onConnectionInterrupted()

网络连接中断回调。

SDK 在和服务器建立连接后,失去网络连接超过 4 秒,就会触发该回调。在触发事件后,SDK 会主动重连服务器,所以该事件可以用于 UI 提示。

onConnectionLost 与 onConnectionInterrupted 的区别是:

  • onConnectionInterrupted 回调一定是在加入频道成功后,且 SDK 失去和服务器的连接超过 4 秒时触发。
  • onConnectionLost 回调是无论之前加入频道是否成功,只要 10 秒内和服务器无法建立连接都会触发。

无论是哪种回调,除非应用程序主动调用 leaveChannel,不然 SDK 会一直自动重连。

onRejoinChannelSuccess()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRejoinChannelSuccess(const char * channelId, uid_t uid)

重新加入频道回调。

有时由于网络原因,录制客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。

参数
参数名描述
channelId

频道名。

uid

录制端的 UID。

表格内容超出当前宽度,可横向滚动查看更多列。

onConnectionStateChanged()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onConnectionStateChanged(agora::linuxsdk::ConnectionStateType state, agora::linuxsdk::ConnectionChangedReasonType reason)

网络连接状态已改变回调。

该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态和网络状态改变的原因。

参数
参数名描述
state

当前的网络连接状态,详见 ConnectionStateType。

reason

网络连接状态发生改变的原因,详见 ConnectionChangedReasonType。

表格内容超出当前宽度,可横向滚动查看更多列。

onRemoteVideoStats()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRemoteVideoStats(agora::linuxsdk::uid_t uid, const agora::linuxsdk::RemoteVideoStats & stats)

远端视频流统计信息回调。

该回调报告远端用户端到端的视频流统计信息,针对每个发送视频流的远端用户(通信模式)/主播(直播模式)每 2 秒触发一次。如果远端有多个用户/主播发送视频流,该回调每 2 秒会被触发多次。

参数
参数名描述
uid

用户 ID,指定是哪个用户的视频流。

stats

远端视频统计数据。详见 RemoteVideoStats。

表格内容超出当前宽度,可横向滚动查看更多列。

onRemoteAudioStats()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRemoteAudioStats(agora::linuxsdk::uid_t uid, const agora::linuxsdk::RemoteAudioStats & stats)

远端音频流统计信息回调。

该回调描述远端用户端到端的音频流统计信息,针对每个发送音频流的远端用户(通信模式)/主播(直播模式)每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。

参数
参数名描述
uid

用户 ID,指定是哪个用户的音频流。

stats

远端音频统计数据。详见 RemoteAudioStats。

表格内容超出当前宽度,可横向滚动查看更多列。

onRecordingStats()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onRecordingStats(const agora::linuxsdk::RecordingStats & stats)

录制统计信息回调。

录制 SDK 定期向录制端报告当前录制的统计信息,每两秒触发一次。

参数
参数名描述
stats

详见 RecordingStats。

表格内容超出当前宽度,可横向滚动查看更多列。

onLocalUserRegistered()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onLocalUserRegistered(uid_t uid, const char * userAccount)

该回调表示本地用户已成功注册 User Account。

录制端调用 joinChannelWithUserAccount 方法成功注册 User Account 后,SDK 会触发该回调,并报告录制端的 UID 和 User Account。

参数
参数名描述
uid

录制端的 UID。

userAccount

录制端的 User Account。

表格内容超出当前宽度,可横向滚动查看更多列。

onUserInfoUpdated()

purevirtual
virtual void agora::recording::IRecordingEngineEventHandler::onUserInfoUpdated(uid_t uid, const agora::linuxsdk::UserInfo & info)

该回调提示远端用户的信息已更新。

远端用户加入频道后,SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 onUserInfoUpdated。

参数
参数名描述
uid

远端用户的 UID。

info

标识用户信息的 UserInfo 对象,包含用户 UID 和 User Account。

表格内容超出当前宽度,可横向滚动查看更多列。