Public 成员函数

virtual ~IRtcEngineEventHandler ()
 
virtual void onWarning (int warn, const char *msg)
 
virtual void onError (int err, const char *msg)
 
virtual void onJoinChannelSuccess (const char *channel, uid_t uid, int elapsed)
 
virtual void onRejoinChannelSuccess (const char *channel, uid_t uid, int elapsed)
 
virtual void onLeaveChannel (const RtcStats &stats)
 
virtual void onClientRoleChanged (CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole)
 
virtual void onUserJoined (uid_t uid, int elapsed)
 
virtual void onUserOffline (uid_t uid, USER_OFFLINE_REASON_TYPE reason)
 
virtual void onLastmileQuality (int quality)
 
virtual void onLastmileProbeResult (const LastmileProbeResult &result)
 
virtual void onConnectionInterrupted ()
 
virtual void onConnectionLost ()
 
virtual void onConnectionBanned ()
 
virtual void onApiCallExecuted (int err, const char *api, const char *result)
 
virtual void onRequestToken ()
 
virtual void onTokenPrivilegeWillExpire (const char *token)
 
virtual void onAudioQuality (uid_t uid, int quality, unsigned short delay, unsigned short lost)
 
virtual void onRtcStats (const RtcStats &stats)
 
virtual void onNetworkQuality (uid_t uid, int txQuality, int rxQuality)
 
virtual void onLocalVideoStats (const LocalVideoStats &stats)
 
virtual void onRemoteVideoStats (const RemoteVideoStats &stats)
 
virtual void onLocalAudioStats (const LocalAudioStats &stats)
 
virtual void onRemoteAudioStats (const RemoteAudioStats &stats)
 
virtual void onLocalAudioStateChanged (LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_ERROR error)
 
virtual void onRemoteAudioStateChanged (uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
 
virtual void onAudioPublishStateChanged (const char *channel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState)
 
virtual void onVideoPublishStateChanged (const char *channel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState)
 
virtual void onAudioSubscribeStateChanged (const char *channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState)
 
virtual void onVideoSubscribeStateChanged (const char *channel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState)
 
virtual void onAudioVolumeIndication (const AudioVolumeInfo *speakers, unsigned int speakerNumber, int totalVolume)
 
virtual void onActiveSpeaker (uid_t uid)
 
virtual void onVideoStopped ()
 
virtual void onFirstLocalVideoFrame (int width, int height, int elapsed)
 
virtual void onFirstLocalVideoFramePublished (int elapsed)
 
virtual void onFirstRemoteVideoDecoded (uid_t uid, int width, int height, int elapsed)
 
virtual void onFirstRemoteVideoFrame (uid_t uid, int width, int height, int elapsed)
 
virtual void onUserMuteAudio (uid_t uid, bool muted)
 
virtual void onUserMuteVideo (uid_t uid, bool muted)
 
virtual void onUserEnableVideo (uid_t uid, bool enabled)
 
virtual void onAudioDeviceStateChanged (const char *deviceId, int deviceType, int deviceState)
 
virtual void onAudioDeviceVolumeChanged (MEDIA_DEVICE_TYPE deviceType, int volume, bool muted)
 
virtual void onCameraReady ()
 
virtual void onCameraFocusAreaChanged (int x, int y, int width, int height)
 
virtual void onFacePositionChanged (int imageWidth, int imageHeight, Rectangle *vecRectangle, int *vecDistance, int numFaces)
 
virtual void onCameraExposureAreaChanged (int x, int y, int width, int height)
 
virtual void onAudioMixingFinished ()
 
virtual void onAudioMixingStateChanged (AUDIO_MIXING_STATE_TYPE state, AUDIO_MIXING_ERROR_TYPE errorCode)
 
virtual void onRemoteAudioMixingBegin ()
 
virtual void onRemoteAudioMixingEnd ()
 
virtual void onAudioEffectFinished (int soundId)
 
virtual void onFirstRemoteAudioDecoded (uid_t uid, int elapsed)
 
virtual void onVideoDeviceStateChanged (const char *deviceId, int deviceType, int deviceState)
 
virtual void onLocalVideoStateChanged (LOCAL_VIDEO_STREAM_STATE localVideoState, LOCAL_VIDEO_STREAM_ERROR error)
 
virtual void onVideoSizeChanged (uid_t uid, int width, int height, int rotation)
 
virtual void onRemoteVideoStateChanged (uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed)
 
virtual void onUserEnableLocalVideo (uid_t uid, bool enabled)
 
virtual void onStreamMessage (uid_t uid, int streamId, const char *data, size_t length)
 
virtual void onStreamMessageError (uid_t uid, int streamId, int code, int missed, int cached)
 
virtual void onMediaEngineLoadSuccess ()
 
virtual void onMediaEngineStartCallSuccess ()
 
virtual void onChannelMediaRelayStateChanged (CHANNEL_MEDIA_RELAY_STATE state, CHANNEL_MEDIA_RELAY_ERROR code)
 
virtual void onChannelMediaRelayEvent (CHANNEL_MEDIA_RELAY_EVENT code)
 
virtual void onFirstLocalAudioFrame (int elapsed)
 
virtual void onFirstLocalAudioFramePublished (int elapsed)
 
virtual void onFirstRemoteAudioFrame (uid_t uid, int elapsed)
 
virtual void onRtmpStreamingStateChanged (const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode)
 
virtual void onRtmpStreamingEvent (const char *url, RTMP_STREAMING_EVENT eventCode)
 
virtual void onStreamPublished (const char *url, int error)
 
virtual void onStreamUnpublished (const char *url)
 
virtual void onTranscodingUpdated ()
 
virtual void onStreamInjectedStatus (const char *url, uid_t uid, int status)
 
virtual void onAudioRouteChanged (AUDIO_ROUTE_TYPE routing)
 
virtual void onLocalPublishFallbackToAudioOnly (bool isFallbackOrRecover)
 
virtual void onRemoteSubscribeFallbackToAudioOnly (uid_t uid, bool isFallbackOrRecover)
 
virtual void onRemoteAudioTransportStats (uid_t uid, unsigned short delay, unsigned short lost, unsigned short rxKBitRate)
 
virtual void onRemoteVideoTransportStats (uid_t uid, unsigned short delay, unsigned short lost, unsigned short rxKBitRate)
 
virtual void onMicrophoneEnabled (bool enabled)
 
virtual void onConnectionStateChanged (CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason)
 
virtual void onNetworkTypeChanged (NETWORK_TYPE type)
 
virtual void onLocalUserRegistered (uid_t uid, const char *userAccount)
 
virtual void onUserInfoUpdated (uid_t uid, const UserInfo &info)
 

详细描述

IRtcEngineEventHandler 接口类用于 SDK 向 App 发送回调事件通知,App 通过继承该接口类的方法获取 SDK 的事件通知。

接口类的所有方法都由缺省(空)实现,App 可以根据需要只继承关心的事件。在回调方法中,App 不应该做耗时或者调用可能会引起阻塞的 API(如发送消息),否则可能影响 SDK 的运行。

构造及析构函数说明

◆ ~IRtcEngineEventHandler()

virtual agora::rtc::IRtcEngineEventHandler::~IRtcEngineEventHandler ( )
inlinevirtual

成员函数说明

◆ onWarning()

virtual void agora::rtc::IRtcEngineEventHandler::onWarning ( int  warn,
const char *  msg 
)
inlinevirtual

发生警告回调。

该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。比如和服务器失去连接时,SDK 可能会上报 WARN_OPEN_CHANNEL_TIMEOUT 警告,同时自动尝试重连。

注解
部分 Warning Code 在上报给客户之前,会经过映射,映射后的 Warning Code 与原来的 Warning Code 意义相同,但错误类别更清晰,方便客户判断。详见错误代码及映射表。
参数
warn警告代码: WARN_CODE_TYPE
msg警告描述。

◆ onError()

virtual void agora::rtc::IRtcEngineEventHandler::onError ( int  err,
const char *  msg 
)
inlinevirtual

发生错误回调。

该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。 比如启动通话失败时,SDK 会上报 ERR_START_CALL 错误。App 可以提示用户启动通话失败,并调用 leaveChannel 退出频道。

注解
部分 Error Code 在上报给客户之前,会经过映射,映射后的 Error Code 与原来的 Error Code 意义相同,但错误类别更清晰,方便客户判断。详见错误代码及映射表。
参数
err错误代码: ERROR_CODE_TYPE
msg错误描述。

◆ onJoinChannelSuccess()

virtual void agora::rtc::IRtcEngineEventHandler::onJoinChannelSuccess ( const char *  channel,
uid_t  uid,
int  elapsed 
)
inlinevirtual

加入频道回调。

该回调方法表示该客户端成功加入了指定的频道。

channel ID 基于 joinChannel 中指定的 channel name 分配。如果调用 IRtcEngine::joinChannel 时并没有指定 user ID。服务器会自动分配一个。

参数
channel频道名。
uid用户 ID。如果 joinChannel 中指定了 uid,则此处返回该 ID;否则使用 Agora 服务器自动分配的 ID。
elapsedjoinChannel 开始到发生此事件过去的时间(毫秒)。

◆ onRejoinChannelSuccess()

virtual void agora::rtc::IRtcEngineEventHandler::onRejoinChannelSuccess ( const char *  channel,
uid_t  uid,
int  elapsed 
)
inlinevirtual

重新加入频道回调。

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

参数
channel频道名。
uid用户 ID。
elapsed从开始重连到重连成功的时间(毫秒)。

◆ onLeaveChannel()

virtual void agora::rtc::IRtcEngineEventHandler::onLeaveChannel ( const RtcStats stats)
inlinevirtual

离开频道回调。

App 调用 leaveChannel 方法时,SDK提示 App 离开频道成功。在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。App 通过该回调获取通话时长以及 SDK 接收到或发送的数据统计信息。

参数
stats通话的统计数据: RtcStats

◆ onClientRoleChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onClientRoleChanged ( CLIENT_ROLE_TYPE  oldRole,
CLIENT_ROLE_TYPE  newRole 
)
inlinevirtual

直播场景下用户角色已切换回调。

直播场景下,当用户切换角色时会触发此回调,即主播切换为观众时,或观众切换为主播时。 该回调由本地用户在加入频道后调用 setClientRole 改变用户角色触发的。

参数
oldRole切换前的角色: CLIENT_ROLE_TYPE
newRole切换后的角色: CLIENT_ROLE_TYPE

◆ onUserJoined()

virtual void agora::rtc::IRtcEngineEventHandler::onUserJoined ( uid_t  uid,
int  elapsed 
)
inlinevirtual

远端用户(通信场景)/主播(直播场景)加入当前频道回调。

  • 通信场景下,该回调提示有远端用户加入了频道,并返回新加入用户的 ID;如果加入之前,已经有其他用户在频道中了,新加入的用户也会收到这些已有用户加入频道的回调。
  • 直播场景下,该回调提示有主播加入了频道,并返回该主播的 ID。如果在加入之前,已经有主播在频道中了,新加入的用户也会收到已有主播加入频道的回调。声网建议连麦主播不超过 17 人。

该回调在如下情况下会被触发:

  • 远端用户/主播调用 joinChannel 方法加入频道
  • 远端用户加入频道后调用 setClientRole 将用户角色改变为主播
  • 远端用户/主播网络中断后重新加入频道
  • 主播通过调用 addInjectStreamUrl 方法成功输入在线媒体流
注解
直播场景下,
  • 主播间能相互收到新主播加入频道的回调,并能获得该主播的 uid。
  • 观众也能收到新主播加入频道的回调,并能获得该主播的 uid。
  • 当 Web 端加入直播频道时,只要 Web 端有推流,SDK 会默认该 Web 端为主播,并触发该回调。
参数
uid新加入频道的远端用户/主播 ID。
elapsed从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。

◆ onUserOffline()

virtual void agora::rtc::IRtcEngineEventHandler::onUserOffline ( uid_t  uid,
USER_OFFLINE_REASON_TYPE  reason 
)
inlinevirtual

远端用户(通信场景)/主播(直播场景)离开当前频道回调。

提示有远端用户/主播离开了频道(或掉线)。用户离开频道有两个原因,即正常离开和超时掉线:

  • 正常离开的时候,远端用户/主播会发送类似“再见”的消息。接收此消息后,判断用户离开频道。
  • 超时掉线的依据是,在一定时间内(直播场景稍有延时), 用户没有收到对方的任何数据包,则判定为对方掉线。在网络较差的情况下,有可能会误报。 我们建议使用 Agora 实时消息 SDK 来做可靠的掉线检测。
参数
uid离线用户或主播的用户 ID。
reason离线原因: USER_OFFLINE_REASON_TYPE

◆ onLastmileQuality()

virtual void agora::rtc::IRtcEngineEventHandler::onLastmileQuality ( int  quality)
inlinevirtual

通话前网络上下行 last mile 质量报告回调。

该回调描述本地用户在加入频道前的 last mile 网络探测的结果,其中 last mile 是指设备到 Agora 边缘服务器的网络状态。

在调用 enableLastmileTest 之后,该回调函数每 2 秒触发一次。如果远端有多个用户/主播,该回调每 2 秒会被触发多次。

参数
quality网络上下行质量,基于上下行网络的丢包率和抖动计算,探测结果主要反映上行网络的状态。详见: QUALITY_TYPE

◆ onLastmileProbeResult()

virtual void agora::rtc::IRtcEngineEventHandler::onLastmileProbeResult ( const LastmileProbeResult result)
inlinevirtual

通话前网络质量探测报告回调。

通话前网络上下行 Last mile 质量探测报告回调。在调用 startLastmileProbeTest 之后,SDK 会在约 30 秒内返回该回调。

参数
result上下行 Last mile 质量探测结果。 详见: LastmileProbeResult

◆ onConnectionInterrupted()

virtual void agora::rtc::IRtcEngineEventHandler::onConnectionInterrupted ( )
inlinevirtual

网络连接中断回调。自 v2.3.2 起废弃。被 onConnectionStateChanged(CONNECTION_STATE_RECONNECTING, CONNECTION_CHANGED_INTERRUPTED) 取代。

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

onConnectionLost 回调的区别是:

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

如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。

◆ onConnectionLost()

virtual void agora::rtc::IRtcEngineEventHandler::onConnectionLost ( )
inlinevirtual

网络连接丢失回调。

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

onConnectionInterrupted 的区别是:

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

如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。

◆ onConnectionBanned()

virtual void agora::rtc::IRtcEngineEventHandler::onConnectionBanned ( )
inlinevirtual
弃用:
连接已被服务器禁止回调。自 v2.3.2 起废弃。被 onConnectionStateChanged(CONNECTION_STATE_FAILED, CONNECTION_CHANGED_BANNED_BY_SERVER) 取代。

当你被服务端禁掉连接的权限时,会触发该回调。

◆ onApiCallExecuted()

virtual void agora::rtc::IRtcEngineEventHandler::onApiCallExecuted ( int  err,
const char *  api,
const char *  result 
)
inlinevirtual

API 方法已执行回调。

参数
err当该方法调用失败时 SDK 返回的错误码。如果方法调用失败,会返回错误码 ERROR_CODE_TYPE 。如果该方法调用成功,SDK 将返回 0。
apiSDK 执行的 API。
resultSDK 调用 API 的调用结果。

◆ onRequestToken()

virtual void agora::rtc::IRtcEngineEventHandler::onRequestToken ( )
inlinevirtual

Token 已过期回调。

在调用 joinChannel, 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。

该回调通知 App 需要生成新的 Token,然后调用 joinChannel,使用新的 Token 重新加入频道。

◆ onTokenPrivilegeWillExpire()

virtual void agora::rtc::IRtcEngineEventHandler::onTokenPrivilegeWillExpire ( const char *  token)
inlinevirtual

Token 服务即将过期回调。

在调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 App 更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。

参数
token即将服务失效的 Token。

◆ onAudioQuality()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioQuality ( uid_t  uid,
int  quality,
unsigned short  delay,
unsigned short  lost 
)
inlinevirtual
弃用:
远端声音质量回调。

该方法自 v2.3.2 起废弃。请改用 onRemoteAudioStats 方法。

该回调描述远端用户在通话中的音频质量,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。

参数
uid用户 ID,指定是谁发的音频流。
quality语音质量,详见: QUALITY_TYPE
delay音频包从发送端到接收端的延迟(毫秒)。包括声音采样前处理、网络传输、网络抖动缓冲引起的延迟。
lost音频包从发送端到接收端的丢包率 (%)。

◆ onRtcStats()

virtual void agora::rtc::IRtcEngineEventHandler::onRtcStats ( const RtcStats stats)
inlinevirtual

当前通话统计回调。

SDK 定期向 App 报告当前通话的统计信息,每两秒触发一次。

参数
statsRTC 引擎统计数据: RtcStats

◆ onNetworkQuality()

virtual void agora::rtc::IRtcEngineEventHandler::onNetworkQuality ( uid_t  uid,
int  txQuality,
int  rxQuality 
)
inlinevirtual

通话中每个用户的网络上下行 last mile 质量报告回调。

该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 Agora 边缘服务器的网络状态。

该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。

参数
uid用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。当 uid 为 0 时,返回的是本地用户的网络质量。
txQuality该用户的上行网络质量,基于发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。假设上行码率是 1000 Kbps,那么支持直播场景下 640 × 480 的分辨率、15 fps 的帧率没有问题,但是支持 1280 × 720 的分辨率就会有困难。详见 QUALITY_TYPE
rxQuality该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 QUALITY_TYPE

◆ onLocalVideoStats()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalVideoStats ( const LocalVideoStats stats)
inlinevirtual

本地视频流统计信息回调。

该回调描述本地设备发送视频流的统计信息,每 2 秒触发一次。

参数
stats本地视频流统计信息。详见: LocalVideoStats

◆ onRemoteVideoStats()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteVideoStats ( const RemoteVideoStats stats)
inlinevirtual

通话中远端视频流的统计信息回调。

该回调描述远端用户在通话中端到端的视频流统计信息, 针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播, 该回调每 2 秒会被触发多次。

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

◆ onLocalAudioStats()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalAudioStats ( const LocalAudioStats stats)
inlinevirtual

通话中本地音频流的统计信息回调。

该回调描述本地设备发送音频流的统计信息。SDK 每 2 秒触发该回调一次。

参数
stats本地音频统计数据。详见 LocalAudioStats

◆ onRemoteAudioStats()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteAudioStats ( const RemoteAudioStats stats)
inlinevirtual

通话中远端音频流的统计信息回调。用于取代 onAudioQuality 回调。

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

参数
stats接收到的远端音频统计数据,详细定义见: RemoteAudioStats

◆ onLocalAudioStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalAudioStateChanged ( LOCAL_AUDIO_STREAM_STATE  state,
LOCAL_AUDIO_STREAM_ERROR  error 
)
inlinevirtual

本地音频状态发生改变回调。

本地音频的状态发生改变时(包括本地麦克风录制状态和音频编码状态), SDK 会触发该回调报告当前的本地音频状态。在本地音频出现故障时, 该回调可以帮助你了解当前音频的状态以及出现故障的原因,方便你排查问题。

注解
当状态为 LOCAL_AUDIO_STREAM_STATE_FAILED (3) 时, 你可以在 error 参数中查看返回的错误信息。
参数
state当前的本地音频状态。详见 LOCAL_AUDIO_STREAM_STATE
error本地音频出错原因。详见 LOCAL_AUDIO_STREAM_ERROR

◆ onRemoteAudioStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteAudioStateChanged ( uid_t  uid,
REMOTE_AUDIO_STATE  state,
REMOTE_AUDIO_STATE_REASON  reason,
int  elapsed 
)
inlinevirtual

远端音频流状态发生改变回调。

远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。

注解
频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调不生效。
参数
uid发生音频状态改变的远端用户 ID。
state远端音频流状态。 详见 REMOTE_AUDIO_STATE
reason远端音频流状态改变的具体原因。详见 REMOTE_AUDIO_STATE_REASON
elapsed从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。

◆ onAudioPublishStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioPublishStateChanged ( const char *  channel,
STREAM_PUBLISH_STATE  oldState,
STREAM_PUBLISH_STATE  newState,
int  elapseSinceLastState 
)
inlinevirtual

音频发布状态改变回调。

自从
v3.1.0
参数
channel频道名。
oldState之前的发布状态,详见 STREAM_PUBLISH_STATE
newState当前的发布状态,详见 STREAM_PUBLISH_STATE
elapseSinceLastState两次状态变化时间间隔(毫秒)。

◆ onVideoPublishStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onVideoPublishStateChanged ( const char *  channel,
STREAM_PUBLISH_STATE  oldState,
STREAM_PUBLISH_STATE  newState,
int  elapseSinceLastState 
)
inlinevirtual

视频发布状态改变回调。

自从
v3.1.0
参数
channel频道名。
oldState之前的发布状态,详见 STREAM_PUBLISH_STATE
newState当前的发布状态,详见 STREAM_PUBLISH_STATE
elapseSinceLastState两次状态变化时间间隔(毫秒)。

◆ onAudioSubscribeStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioSubscribeStateChanged ( const char *  channel,
uid_t  uid,
STREAM_SUBSCRIBE_STATE  oldState,
STREAM_SUBSCRIBE_STATE  newState,
int  elapseSinceLastState 
)
inlinevirtual

音频订阅状态发生改变回调。

自从
v3.1.0
参数
channel频道名。
uid远端用户的 ID。
oldState之前的订阅状态,详见 STREAM_SUBSCRIBE_STATE
newState当前的订阅状态,详见 STREAM_SUBSCRIBE_STATE
elapseSinceLastState两次状态变化时间间隔(毫秒)。

◆ onVideoSubscribeStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onVideoSubscribeStateChanged ( const char *  channel,
uid_t  uid,
STREAM_SUBSCRIBE_STATE  oldState,
STREAM_SUBSCRIBE_STATE  newState,
int  elapseSinceLastState 
)
inlinevirtual

视频订阅状态发生改变回调。

自从
v3.1.0
参数
channel频道名。
uid远端用户的 ID。
oldState之前的订阅状态,详见 STREAM_SUBSCRIBE_STATE
newState当前的订阅状态,详见 STREAM_SUBSCRIBE_STATE
elapseSinceLastState两次状态变化时间间隔(毫秒)。

◆ onAudioVolumeIndication()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioVolumeIndication ( const AudioVolumeInfo speakers,
unsigned int  speakerNumber,
int  totalVolume 
)
inlinevirtual

提示频道内谁正在说话、说话者音量及本地用户是否在说话的回调。

该回调报告频道内瞬时音量最高的几个用户(最多三个用户)的用户 ID、他们的音量及本地用户是否在说话。

该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启;开启后,无论频道内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发 onAudioVolumeIndication 回调。每次触发,用户会收到两个独立的 onAudioVolumeIndication 回调,其中一个包含本地用户的音量信息,另一个包含远端所有用户的音量信息,详见下方参数描述。

注解
  • 若需使用该回调 speakers 数组中的 vad 参数(即本地人声检测功能),请在 enableAudioVolumeIndication 方法中设置 report_vad 为 true。
  • 如果有用户将自己静音(调用了 muteLocalAudioStream),会对该回调的行为产生影响。
    • 本地用户静音后 SDK 即不再报告本地用户的音量提示回调。
    • 远端说话者静音后 20 秒,远端的音量提示回调中将不再包含该用户;如果远端所有用户都将自己静音,20 秒后 SDK 不再报告远端用户的音量提示回调。
参数
speakersAudioVolumeInfo 数组。
  • 在本地用户的回调中,此数组中包含以下成员:
    • uid = 0;
    • volume 等于 totalVolume,报告本地用户混音后的音量;
    • vad,报告本地用户人声状态。
  • 在远端用户的回调中,此数组中包含以下成员:

    • uid 为每位说话者各自的用户 ID;
    • volume 为说话者各自混音后的音量;
    • vad = 0,对远端用户无效。

    如果报告的 speakers 数组为空,则表示此时远端没有人说话。

speakerNumber说话者的人数,取值范围为 [0,3]。
  • 在本地用户的回调中,无论本地用户是否说话,speakerNumber 始终为 1。
  • 在远端用户的回调中,若远端用户大于 3,则此回调会报告瞬时音量最高的三位用户的音量信息,此时 speakerNumber 值为 3。
totalVolume(混音后的)总音量,取值范围为 [0,255]。
  • 在本地用户的回调中,totalVolume 为本地用户混音后的音量。
  • 在远端用户的回调中,totalVolume 为所有说话者混音后的总音量。

◆ onActiveSpeaker()

virtual void agora::rtc::IRtcEngineEventHandler::onActiveSpeaker ( uid_t  uid)
inlinevirtual

监测到最活跃用户回调。

成功调用 enableAudioVolumeIndication 后,SDK 会持续监测音量 最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。

当频道内用户数量大于或等于 2 且有活跃用户时,SDK 会触发该回调并报告最活跃用户的 uid

  • 如果最活跃用户一直是同一位用户,则 SDK 不会再次触发 onActiveSpeaker 回调。
  • 如果最活跃用户有变化,则 SDK 会再次触发该回调并报告新的最活跃用户的 uid
参数
uid远端最活跃用户的 ID。

◆ onVideoStopped()

virtual void agora::rtc::IRtcEngineEventHandler::onVideoStopped ( )
inlinevirtual
弃用:
视频功能已停止回调。

提示视频功能已停止。 App 如需在停止视频后对 view 做其他处理(比如显示其他画面),可以在这个回调中进行。

从 v2.4.1 起废弃。请改用 onLocalVideoStateChanged 回调中的 LOCAL_VIDEO_STREAM_STATE_STOPPED(0)。

◆ onFirstLocalVideoFrame()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstLocalVideoFrame ( int  width,
int  height,
int  elapsed 
)
inlinevirtual

已显示本地视频首帧回调。

本地视频首帧显示在本地视图上时,SDK 会触发此回调。

参数
width本地渲染视频的宽 (px) 。
height本地渲染视频的高 (px)。
elapsed从调用 joinChannel 到发生此事件过去的时间(毫秒)。如果在 joinChannel 前调用了 startPreview,则是从 startPreview 到发生此事件过去的时间。

◆ onFirstLocalVideoFramePublished()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstLocalVideoFramePublished ( int  elapsed)
inlinevirtual

已发布本地视频首帧回调。

自从
v3.1.0

SDK 会在以下三种时机触发该回调:

参数
elapsed从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。

◆ onFirstRemoteVideoDecoded()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstRemoteVideoDecoded ( uid_t  uid,
int  width,
int  height,
int  elapsed 
)
inlinevirtual

已接收到远端视频并完成解码回调。

弃用:
从 v2.9.0。

该回调已被废弃,请改用 onRemoteVideoStateChanged 回调的:

引擎收到第一帧远端视频流并解码成功时,触发此调用。 App 可在此回调中设置该用户的 view。有两种情况:

  • 远端用户首次上线后发送视频。
  • 远端用户视频离线再上线后发送视频。出现这种中断的可能原因包括:
    • 远端用户离开频道。
    • 远端用户掉线。
    • 远端用户调用 muteLocalVideoStream 方法停止发送本地视频流。
    • 远端用户调用 disableVideo 方法关闭视频模块。
参数
uid用户 ID,指定是哪个用户的视频流。
width视频流宽(px)。
height视频流高(px)。
elapsed从本地调用 joinChannel 开始到该回调触发的延迟(毫秒)。

◆ onFirstRemoteVideoFrame()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstRemoteVideoFrame ( uid_t  uid,
int  width,
int  height,
int  elapsed 
)
inlinevirtual

已显示首帧远端视频回调。

第一帧远端视频显示在视图上时,触发此调用。 App 可在此调用中获知出图时间(elapsed)。

参数
uid用户 ID,指定是哪个用户的视频流。
width视频流宽(px)。
height视频流高(px)。
elapsed从本地调用 joinChannel 到发生此事件过去的时间(毫秒)。

◆ onUserMuteAudio()

virtual void agora::rtc::IRtcEngineEventHandler::onUserMuteAudio ( uid_t  uid,
bool  muted 
)
inlinevirtual

远端用户静音回调。

弃用:
自 v3.0.0 该回调已废弃。请改用 onRemoteAudioStateChanged

提示有远端用户已将其音频流静音(或取消静音)。

该回调是由远端用户调用 muteLocalAudioStream 方法关闭或开启音频发送触发的。

注解
频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调不生效。
参数
uid用户 ID。
muted该用户是否静音:
  • true: 该用户已将音频静音;
  • false: 该用户取消了音频静音。

◆ onUserMuteVideo()

virtual void agora::rtc::IRtcEngineEventHandler::onUserMuteVideo ( uid_t  uid,
bool  muted 
)
inlinevirtual

远端用户暂停/恢复发送视频流回调。

弃用:
该回调已废弃。你也可以使用 onRemoteVideoStateChanged 回调的:

该回调是由远端用户调用 muteLocalVideoStream 方法关闭或开启视频发送触发的。

注解
频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调不生效。
参数
uid远端用户 ID。
muted该用户是否暂停发送其视频流
  • true: 该用户已暂停发送其视频流;
  • false: 该用户已恢复发送其视频流。

◆ onUserEnableVideo()

virtual void agora::rtc::IRtcEngineEventHandler::onUserEnableVideo ( uid_t  uid,
bool  enabled 
)
inlinevirtual

远端用户开关本地视频采集回调。

弃用:
从 v2.9.0。该回调已被废弃,请改用 onRemoteVideoStateChanged 回调的:

提示有远端用户开关了本地视频采集。关闭视频功能是指该用户只能进行语音通话,不能显示、 发送自己的视频,也不能接收、显示别人的视频。 该回调是由远端用户调用 enableVideodisableVideo 方法开启或关闭视频模块触发的。

参数
uid用户 ID,提示是哪个用户的视频流。
enabled
  • true: 该用户已启用了视频功能。启用后,该用户可以进行视频通话或直播。
  • false: 该用户已关闭了视频功能。关闭后,该用户只能进行语音通话或直播,不能显示、 发送自己的视频,也不能接收、显示别人的视频。

◆ onAudioDeviceStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioDeviceStateChanged ( const char *  deviceId,
int  deviceType,
int  deviceState 
)
inlinevirtual

音频设备变化回调。

提示系统音频设备状态发生改变,比如耳机被拔出。

参数
deviceId设备 ID。
deviceType设备类型定义: MEDIA_DEVICE_TYPE
deviceState设备状态定义: MEDIA_DEVICE_STATE_TYPE

◆ onAudioDeviceVolumeChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioDeviceVolumeChanged ( MEDIA_DEVICE_TYPE  deviceType,
int  volume,
bool  muted 
)
inlinevirtual

回放、录音设备、或 App 的音量发生改变。

参数
deviceType设备类型定义: MEDIA_DEVICE_TYPE
volume音量:范围 [0,255]。
muted
  • true: 音频设备已被静音;
  • false: 音频设备未被静音。

◆ onCameraReady()

virtual void agora::rtc::IRtcEngineEventHandler::onCameraReady ( )
inlinevirtual
弃用:
摄像头就绪回调。

提示已成功打开摄像头,可以开始捕获视频。如果摄像头打开失败,可在 onError 中处理相应错误。

从 v2.4.1 起废弃。请改用 onLocalVideoStateChanged 回调中的 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1)。

◆ onCameraFocusAreaChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onCameraFocusAreaChanged ( int  x,
int  y,
int  width,
int  height 
)
inlinevirtual

相机对焦区域已改变回调。

该回调表示相机的对焦区域发生了改变。 该回调是由本地用户调用 setCameraFocusPositionPreview 方法改变对焦位置触发的。

注解
该回调只适用于 Android 和 iOS 平台。
参数
x发生改变的对焦区域的 x 坐标。
y发生改变的对焦区域的 y 坐标。
width发生改变的对焦区域的宽度。
height发生改变的对焦区域的高度。

◆ onFacePositionChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onFacePositionChanged ( int  imageWidth,
int  imageHeight,
Rectangle vecRectangle,
int *  vecDistance,
int  numFaces 
)
inlinevirtual

报告本地人脸检测结果。仅适用于 Android 和 iOS 平台。

自从
v3.0.1

调用 enableFaceDetection(true) 开启本地人脸检测后,你可以通过该回调实时获取以下人脸检测的信息:

  • 摄像头采集的画面大小
  • 人脸在画面中的位置
  • 人脸距设备屏幕的距离

其中,人脸距设备屏幕的距离由 SDK 通过摄像头采集的画面大小和人脸在画面中的位置拟合计算得出。

注解
  • 当检测到摄像头前没有人脸时,该回调触发频率会降低,以节省设备耗能。
  • 当人脸距离设备屏幕过近时,SDK 不会触发该回调。
  • Android 平台上,人脸距设备屏幕的距离(distance)值有一定误差,请不要用它进行精确计算。
参数
imageWidth摄像头采集画面的宽度 (px)。
imageHeight摄像头采集画面的高度 (px)。
vecRectangle检测到的人脸信息:
  • x:人脸在画面中的 x 坐标 (px)。以摄像头采集画面的左上角为原点,x 坐标为人脸左上角相对于原点的横向位移。
  • y:人脸在画面中的 y 坐标 (px)。以摄像头采集画面的左上角为原点,y 坐标为人脸左上角相对原点的纵向位移。
  • width:人脸在画面中的宽度 (px)。
  • height:人脸在画面中的高度 (px)。
vecDistance人脸距设备屏幕的距离 (cm)。
numFaces检测的人脸数量。如果为 0,则表示没有检测到人脸。

◆ onCameraExposureAreaChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onCameraExposureAreaChanged ( int  x,
int  y,
int  width,
int  height 
)
inlinevirtual

摄像头曝光区域已改变回调。 该回调是由本地用户调用 setCameraExposurePosition 方法改变曝光位置触发的。

注解
该回调只适用于 Android 和 iOS 平台。
参数
x发生改变的曝光区域的 x 坐标。
y发生改变的曝光区域的 y 坐标。
width发生改变的曝光区域的宽度。
height发生改变的曝光区域的高度。

◆ onAudioMixingFinished()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioMixingFinished ( )
inlinevirtual

本地音乐文件播放已结束回调。

当调用 startAudioMixing 播放本地音乐文件结束后,会触发该回调。如果调用 startAudioMixing 失败,会在 onError 回调里,返回错误码 WARN_AUDIO_MIXING_OPEN_ERROR

◆ onAudioMixingStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioMixingStateChanged ( AUDIO_MIXING_STATE_TYPE  state,
AUDIO_MIXING_ERROR_TYPE  errorCode 
)
inlinevirtual

本地用户的音乐文件播放状态已改变回调。

该回调在音乐文件播放状态发生改变时触发,并报告当前的播放状态和错误码。

如果本地音乐文件不存在、文件格式不支持或无法访问在线音乐文件 URL,SDK 会返回警告码 WARN_AUDIO_MIXING_OPEN_ERROR (701)。

参数
state音乐文件播放状态,详见 AUDIO_MIXING_STATE_TYPE
errorCode错误码,详见 AUDIO_MIXING_ERROR_TYPE

◆ onRemoteAudioMixingBegin()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteAudioMixingBegin ( )
inlinevirtual

远端音乐文件播放已开始回调。

当远端有用户调用 startAudioMixing 播放本地音乐文件,会触发该回调。

◆ onRemoteAudioMixingEnd()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteAudioMixingEnd ( )
inlinevirtual

远端音乐文件播放已结束回调。

当远端有用户播放本地音乐文件结束,会触发该回调。

◆ onAudioEffectFinished()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioEffectFinished ( int  soundId)
inlinevirtual

本地音效文件播放已结束回调。

当播放音效结束后,会触发该回调。

参数
soundId指定音效的 ID。每个音效均有唯一的 ID。

◆ onFirstRemoteAudioDecoded()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstRemoteAudioDecoded ( uid_t  uid,
int  elapsed 
)
inlinevirtual

已解码远端音频首帧的回调。

弃用:
从 v3.0.0。该回调已废弃。请改用 onRemoteAudioStateChanged

SDK 完成远端音频首帧解码,并发送给音频模块用以播放时,会触发此回调。有两种情况:

  • 远端用户首次上线后发送音频
  • 远端用户音频离线再上线发送音频。音频离线指本地在 15 秒内没有收到音频包,可能有如下原因:
    • 远端用户离开频道
    • 远端用户掉线
    • 远端用户调用 muteLocalAudioStream 方法停止发送音频流
    • 远端用户调用 disableAudio 方法关闭音频
参数
uid远端用户 ID
elapsed从本地用户调用 joinChannel 直至该回调触发的延迟,单位为毫秒。

◆ onVideoDeviceStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onVideoDeviceStateChanged ( const char *  deviceId,
int  deviceType,
int  deviceState 
)
inlinevirtual

视频设备变化回调。

该回调提示系统视频设备状态发生改变,比如被拔出或移除。如果设备已使用外接摄像头采集,外接摄像头被拔开后,视频会中断。

参数
deviceId设备 ID。
deviceType设备类型: MEDIA_DEVICE_TYPE
deviceState设备状态: MEDIA_DEVICE_STATE_TYPE

◆ onLocalVideoStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalVideoStateChanged ( LOCAL_VIDEO_STREAM_STATE  localVideoState,
LOCAL_VIDEO_STREAM_ERROR  error 
)
inlinevirtual

本地视频状态发生改变回调

本地视频的状态发生改变时,SDK 会触发该回调返回当前的本地视频状态。

在本地视频出现故障时,你可以通过该回调了解当前视频的状态以及出现故障的原因,方便排查问题。

注解
对某些机型而言,当本地视频采集设备正在使用中时,SDK 不会在本地视频状态发生改变时触发该回调,你需要自行做超时判断。
参数
localVideoState本地视频状态,详见: LOCAL_VIDEO_STREAM_STATE 。当本地视频状态为 LOCAL_VIDEO_STREAM_STATE_FAILED (3) 时,你可以在 error 参数中查看返回的错误原因。
error本地视频出错原因,详见: LOCAL_VIDEO_STREAM_ERROR

◆ onVideoSizeChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onVideoSizeChanged ( uid_t  uid,
int  width,
int  height,
int  rotation 
)
inlinevirtual

本地或远端视频大小和旋转信息发生改变回调。

参数
uid图像尺寸和旋转信息发生变化的用户的用户 ID(本地用户的 uid 为 0)。
width视频流的宽度(像素)。
height视频流的高度(像素)。
rotation旋转信息 [0,360)。

◆ onRemoteVideoStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteVideoStateChanged ( uid_t  uid,
REMOTE_VIDEO_STATE  state,
REMOTE_VIDEO_STATE_REASON  reason,
int  elapsed 
)
inlinevirtual

远端视频状态发生改变回调。

注解
频道内的用户(通信场景)或主播(直播场景)人数超过 17 人时,该回调不生效。
参数
uid发生视频状态改变的远端用户 ID。
state远端视频流状态。详见 REMOTE_VIDEO_STATE
reason远端视频流状态改变的具体原因。详见 REMOTE_VIDEO_STATE_REASON
elapsed从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。

◆ onUserEnableLocalVideo()

virtual void agora::rtc::IRtcEngineEventHandler::onUserEnableLocalVideo ( uid_t  uid,
bool  enabled 
)
inlinevirtual

其他用户启用/关闭本地视频。

弃用:
从 v2.9.0。该回调已被废弃,请改用 onRemoteVideoStateChanged 回调的:

提示有其他用户启用/关闭了本地视频功能。关闭视频功能是指该用户只能进行语音通话, 不能显示、发送自己的视频,也不能接收、显示别人的视频。

该回调是由远端用户调用 enableLocalVideo 方法开启或关闭视频采集触发的。

参数
uid用户 ID,提示是哪个用户的视频流。
enabled
  • true: 该用户已启用视频功能。启用后,其他用户可以接收到该用户的视频流。
  • false: 该用户已关闭视频功能。关闭后,该用户仍然可以接收其他用户的视频流, 但其他用户接收不到该用户的视频流。

◆ onStreamMessage()

virtual void agora::rtc::IRtcEngineEventHandler::onStreamMessage ( uid_t  uid,
int  streamId,
const char *  data,
size_t  length 
)
inlinevirtual

接收到对方数据流消息的回调。

该回调表示本地用户收到了远端用户调用 sendStreamMessage 方法发送的流消息。

参数
uid发送消息的用户 ID。
streamIdStream ID。
data接收到的数据。
length数据长度。

◆ onStreamMessageError()

virtual void agora::rtc::IRtcEngineEventHandler::onStreamMessageError ( uid_t  uid,
int  streamId,
int  code,
int  missed,
int  cached 
)
inlinevirtual

接收对方数据流消息发生错误的回调。

该回调表示本地用户未收到远端用户调用 sendStreamMessage 方法发送的流消息。

参数
uid发送消息的用户 ID。
streamIdStream ID。
code错误码: ERROR_CODE_TYPE
missed丢失的消息数量。
cached数据流中断时,后面缓存的消息数量。

◆ onMediaEngineLoadSuccess()

virtual void agora::rtc::IRtcEngineEventHandler::onMediaEngineLoadSuccess ( )
inlinevirtual

媒体引擎成功加载的回调。

◆ onMediaEngineStartCallSuccess()

virtual void agora::rtc::IRtcEngineEventHandler::onMediaEngineStartCallSuccess ( )
inlinevirtual

媒体引擎成功启动的回调。

◆ onChannelMediaRelayStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onChannelMediaRelayStateChanged ( CHANNEL_MEDIA_RELAY_STATE  state,
CHANNEL_MEDIA_RELAY_ERROR  code 
)
inlinevirtual

跨频道媒体流转发状态发生改变回调。

当跨频道媒体流转发状态发生改变时,SDK 会触发该回调, 并报告当前的转发状态以及相关的错误信息。

参数
state跨频道媒体流转发状态。详见 CHANNEL_MEDIA_RELAY_STATE
code跨频道媒体流转发出错的错误码。详见 CHANNEL_MEDIA_RELAY_ERROR

◆ onChannelMediaRelayEvent()

virtual void agora::rtc::IRtcEngineEventHandler::onChannelMediaRelayEvent ( CHANNEL_MEDIA_RELAY_EVENT  code)
inlinevirtual

跨频道媒体流转发事件回调。

该回调报告跨频道媒体流转发过程中发生的事件。

参数
code跨频道媒体流转发事件码。详见 CHANNEL_MEDIA_RELAY_EVENT

◆ onFirstLocalAudioFrame()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstLocalAudioFrame ( int  elapsed)
inlinevirtual

已发送本地音频首帧回调。

弃用:
该回调自 v3.1.0 废弃,请改用 onFirstLocalAudioFramePublished 回调。
参数
elapsed从调用 joinChannel 方法直至该回调被触发的时间。

◆ onFirstLocalAudioFramePublished()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstLocalAudioFramePublished ( int  elapsed)
inlinevirtual

已发布本地音频首帧回调。

自从
v3.1.0

SDK 会在以下三种时机触发该回调:

参数
elapsed从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。

◆ onFirstRemoteAudioFrame()

virtual void agora::rtc::IRtcEngineEventHandler::onFirstRemoteAudioFrame ( uid_t  uid,
int  elapsed 
)
inlinevirtual

已接收远端音频首帧回调。

弃用:
从 v3.0.0。

该回调已废弃。请改用 onRemoteAudioStateChanged

参数
uid发送音频帧的远端用户的用户 ID。
elapsed从调用 joinChannel 方法直至该回调被触发的时间。

◆ onRtmpStreamingStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onRtmpStreamingStateChanged ( const char *  url,
RTMP_STREAM_PUBLISH_STATE  state,
RTMP_STREAM_PUBLISH_ERROR  errCode 
)
inlinevirtual

RTMP 推流状态发生改变回调。

该回调返回本地用户调用 addPublishStreamUrlremovePublishStreamUrl 方法的结果。 RTMP 推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态。 该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。

参数
url推流状态发生改变的 URL 地址。
state当前的推流状态,详见 RTMP_STREAM_PUBLISH_STATE 。当推流状态为 RTMP_STREAM_PUBLISH_STATE_FAILURE (4) 时,你可以在 errorCode 参数中查看返回的错误信息。
errCode推流错误信息,详见 RTMP_STREAM_PUBLISH_ERROR

◆ onRtmpStreamingEvent()

virtual void agora::rtc::IRtcEngineEventHandler::onRtmpStreamingEvent ( const char *  url,
RTMP_STREAMING_EVENT  eventCode 
)
inlinevirtual

RTMP 推流事件回调。

自从
v3.1.0
参数
urlRTMP 推流 URL。
eventCodeRTMP 推流事件码。详见 RTMP_STREAMING_EVENT

◆ onStreamPublished()

virtual void agora::rtc::IRtcEngineEventHandler::onStreamPublished ( const char *  url,
int  error 
)
inlinevirtual

旁路推流已开启回调。

弃用:
v3.0.0

此方法已废弃,请改用 onRtmpStreamingStateChanged

该回调用于通知主播推流状态。

参数
url主播推流的 URL 地址 。
errorERROR_CODE_TYPE

◆ onStreamUnpublished()

virtual void agora::rtc::IRtcEngineEventHandler::onStreamUnpublished ( const char *  url)
inlinevirtual

旁路推流已停止回调。

弃用:
v3.0.0

此方法已废弃,请改用 onRtmpStreamingStateChanged

回调用于通知主播停止推流成功。

参数
url被删除的 RTMP 推流地址。

◆ onTranscodingUpdated()

virtual void agora::rtc::IRtcEngineEventHandler::onTranscodingUpdated ( )
inlinevirtual

旁路推流设置已被更新回调。

setLiveTranscoding 方法中的直播参数 LiveTranscoding 更新时,onTranscodingUpdated 回调会被触发并向主播报告更新信息。

注解
首次调用 setLiveTranscoding 方法设置转码参数 LiveTranscoding 时,不会触发此回调。

◆ onStreamInjectedStatus()

virtual void agora::rtc::IRtcEngineEventHandler::onStreamInjectedStatus ( const char *  url,
uid_t  uid,
int  status 
)
inlinevirtual

输入在线媒体流状态回调。

参数
url在线媒体流的地址。
uid用户 ID。
status输入的在线媒体流状态: INJECT_STREAM_STATUS

◆ onAudioRouteChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onAudioRouteChanged ( AUDIO_ROUTE_TYPE  routing)
inlinevirtual

语音路由已发生变化回调。

当语音路由发生变化时,SDK 会触发此回调。

参数
routing当前的语音路由。详见: AUDIO_ROUTE_TYPE

◆ onLocalPublishFallbackToAudioOnly()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalPublishFallbackToAudioOnly ( bool  isFallbackOrRecover)
inlinevirtual

本地发布流已回退为音频流回调。

如果你调用了 setLocalPublishFallbackOption 接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY ,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。

注解
如果本地发流已回退为音频流,远端的 App 上会收到 onUserMuteVideo 的回调事件。
参数
isFallbackOrRecover
  • true: 由于网络环境不理想,本地发布的媒体流已回退为音频流;
  • false: 由于网络环境改善,发布的音频流已恢复为音视频流。

◆ onRemoteSubscribeFallbackToAudioOnly()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteSubscribeFallbackToAudioOnly ( uid_t  uid,
bool  isFallbackOrRecover 
)
inlinevirtual

远端订阅流已回退为音频流回调。

如果你调用了 setRemoteSubscribeFallbackOption 接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY ,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。

注解
远端订阅流因弱网环境不能同时满足音视频而回退为小流时,你可以使用 RemoteVideoStats 来监控远端视频大小流的切换。
参数
uid远端用户的用户 ID。
isFallbackOrRecover
  • true: 由于网络环境不理想,远端订阅流已回退为音频流;
  • false: 由于网络环境改善,订阅的音频流已恢复为音视频流。

◆ onRemoteAudioTransportStats()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteAudioTransportStats ( uid_t  uid,
unsigned short  delay,
unsigned short  lost,
unsigned short  rxKBitRate 
)
inlinevirtual
弃用:
通话中远端音频流传输的统计信息回调。

该回调已被废弃,请改用 onRemoteAudioStats

该回调描述远端用户通话中端到端的网络统计信息,通过音频包计算,用客观的数据,如丢包、 网络延迟等,展示当前网络状态。

通话中,当用户收到远端用户/主播发送的音频数据包后 ,会每 2 秒触发一次该回调。

onRemoteAudioStats 回调相比,该回调以数据展示当前网络状态,因此更客观。

参数
uid用户 ID,指定是哪个用户/主播的音频包。
delay音频包从发送端到接收端的延时(毫秒)。
lost音频包从发送端到接收端的丢包率 (%)。
rxKBitRate远端音频包的接收码率(Kbps)。

◆ onRemoteVideoTransportStats()

virtual void agora::rtc::IRtcEngineEventHandler::onRemoteVideoTransportStats ( uid_t  uid,
unsigned short  delay,
unsigned short  lost,
unsigned short  rxKBitRate 
)
inlinevirtual
弃用:
通话中远端视频流传输的统计信息回调。

该回调已被废弃,请改用 onRemoteVideoStats

该回调描述远端用户通话中端到端的网络统计信息,通过视频包计算,用客观的数据,如丢包、 网络延迟等,展示当前网络状态。

通话中,当用户收到远端用户/主播发送的视频数据包后,会每 2 秒触发一次该回调。

onRemoteVideoStats 回调相比,该回调以数据展示当前网络状态,因此更客观。

参数
uid用户 ID,指定是哪个用户/主播的视频包。
delay视频包从发送端到接收端的延时(毫秒)。
lost视频包从发送端到接收端的丢包率 (%)。
rxKBitRate远端视频包的接收码率(Kbps)。

◆ onMicrophoneEnabled()

virtual void agora::rtc::IRtcEngineEventHandler::onMicrophoneEnabled ( bool  enabled)
inlinevirtual

麦克风状态已改变回调。

弃用:
从 v2.9.0。此方法已被废弃,请改用 onLocalAudioStateChanged 回调的:

该回调由本地用户调用 enableLocalAudio 方法开启或关闭本地音频采集触发的.

参数
enabled
  • true: 麦克风已启用;
  • false: 麦克风已禁用。

◆ onConnectionStateChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onConnectionStateChanged ( CONNECTION_STATE_TYPE  state,
CONNECTION_CHANGED_REASON_TYPE  reason 
)
inlinevirtual

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

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

参数
state详见: CONNECTION_STATE_TYPE
reason详见: CONNECTION_CHANGED_REASON_TYPE

◆ onNetworkTypeChanged()

virtual void agora::rtc::IRtcEngineEventHandler::onNetworkTypeChanged ( NETWORK_TYPE  type)
inlinevirtual

本地网络类型发生改变回调。

本地网络连接类型发生改变时,SDK 会触发该回调,并在回调中明确当前的网络连接类型。

你可以通过该回调获取正在使用的网络类型;当连接中断时,该回调能辨别引起中断的原因是网络切换还是网络条件不好。

参数
type详见: NETWORK_TYPE

◆ onLocalUserRegistered()

virtual void agora::rtc::IRtcEngineEventHandler::onLocalUserRegistered ( uid_t  uid,
const char *  userAccount 
)
inlinevirtual

本地用户成功注册 User Account 回调。

本地用户成功调用 registerLocalUserAccount 方法注册用户 User Account 或 调用 joinChannelWithUserAccount 加入频道后, SDK 会触发该回调,并告知本地用户的 UID 和 User Account。

参数
uid本地用户的 UID
userAccount本地用户的 User Account

◆ onUserInfoUpdated()

virtual void agora::rtc::IRtcEngineEventHandler::onUserInfoUpdated ( uid_t  uid,
const UserInfo info 
)
inlinevirtual

远端用户信息已更新回调。

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

参数
uid远端用户的 UID
info标识用户信息的 UserInfo 对象,包含用户 UID 和 User Account