
# 事件回调（IHRTCConnection）
本章节介绍了全平台C++ SDK的回调接口IHRTCEngineEventHandler的详情。
表1回调 
| 接口                                                                                                   | 描述                   |
|:---|:---|
| [onError]                          | 错误回调。                |
| [onWarning]                          | 警告回调。                |
| [onConnectionChangedNotify]          | 连接状态改变回调。            |
| [onAuthorizationExpired]                                            | 鉴权签名过期回调。            |
| [onJoinRoomSuccess]                 | 成功加入房间回调。            |
| [onJoinRoomFailure]                 | 加入房间失败回调。            |
| [onRejoinRoomSuccess]                | 重新加入房间回调。            |
| [onLeaveRoom]                      | 离开房间回调。              |
| [onUserRoleChangedNotify]                 | 用户角色切换成功回调。          |
| [onRemoteUserOnline]                       | 远端用户加入当前房间回调。        |
| [onRemoteUserOffline]                      | 远端用户离开当前房间回调。        |
| [onRemoteUserNameChangedNotify]           | 远端用户昵称变化回调。          |
| [onUserNameChangedNotify]                   | 本地用户昵称变化回调。          |
| [onRemoteAudioStateChangedNotify]                                   | 远端音频流状态变化回调。         |
| [onRemoteVideoStateChangedNotify]                               | 远端视频流状态变化回调。         |
| [onAudioStatsNotify]                | 音频订阅状态回调。            |
| [onUserAuxiliaryStreamAvailable]  | 远端开启/停止辅流回调。         |
| [onFirstRemoteVideoDecoded]          | 引擎收到第一帧远端视频流并解码成功回调。 |
| [onFirstRemoteAuxiliaryStreamDecoded] | 引擎收到第一帧远端辅流并解码成功回调。  |
| [onRenderSuccessNotify]               | 媒体渲染成功上报。            |
| [onAudioStatsNotify]                | 音频流详情，2s触发一次回调。      |
| [onVideoStatsNotify]               | 视频流详情，2s触发一次回调。      |
| [onAuxiliaryStreamStatsNotify]      | 辅流详情，2s触发一次回调。       |
| [onNetworkQualityNotify]             | 网络质量上报。              |
| [onDestroyConnection]             | 销毁连接。                |
| [onMediaConnectStateChangedNotify]  | 媒体服务器连接状态变化回调。       |
| [onStartAllRemoteViewResult]                                     | 批量选看结果回调。            |
| [onStatsNotify]                                                  | 当前会话统计回调。            |
| [onVideoResolutionChangedNotify]                                  | 视频分辨率大小改变对调。         |
| [onRemoteAudioStatsNotify]                                        | 远端音频流状态，2秒触发一次回调。    |
| [onRemoteVideoStatsNotify]                                        | 远端视频流状态，2秒触发一次回调。    |
| [onStartPublishStream]                                          | 开始旁路（RTMP）推流回调       |
| [onUpdateTransCoding]                                          | 更新旁路（RTMP）推流回调       |
| [onStopPublishStream]                                            | 停止旁路（RTMP）推流回调       |
| [onStreamPublishStateChange]                                     | RTMP推流状态回调           |
| [onMultiRoomMediaRelayStateChanged]                              | 跨房状态改变回调             |
| [onRemoteMicrophoneStateChanged]                                 | 麦克风设备状态变更通知          |
| [onRoomStreamStatusNotify]                                          | 房间流状态回调              |
   
 #### onError
```
virtual void onError(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
 #### onWarning
```
virtual void onWarning(IHRTCConnection* conn, int warn, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数**】
- conn：连接对象。
- warn：警告码。
- msg：警告描述。
 
 #### onConnectionChangedNotify
```
virtual void onConnectionChangedNotify(IHRTCConnection* conn, HRTCConnStateType state, HRTCConnChangeReason reason, const char* description)
```
【**功能说明**】
连接状态改变回调。
【**回调参数**】
- conn：连接对象。
- state：连接状态类型，具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section726832651815)。
- reason：连接状态改变原因，具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section12711426101819)。
- description：连接状态改变描述。
 
 #### onAuthorizationExpired
```
virtual void onAuthorizationExpired(IHRTCConnection* conn);
```
【**功能说明**】
鉴权签名过期回调，需要app调用renewAuthorization更新签名。
【**回调参数**】
conn：连接对象。
 #### onJoinRoomSuccess
```
virtual void onJoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：新加入房间的用户ID。
 
 #### onJoinRoomFailure
```
virtual void onJoinRoomFailure(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
 #### onRejoinRoomSuccess
```
virtual void onRejoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
重新加入房间回调。例如网络异常后重连成功加入房间触发。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
 
 #### onLeaveRoom
```
virtual void onLeaveRoom(IHRTCConnection* conn, HRTCLeaveReason reason, const HRTCStatsInfo &statsInfo)
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- reason：离开的房间原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section414213447916)。
- statsInfo：卡顿统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section75431844173718)。
 
#### onUserRoleChangedNotify
```
virtual void onUserRoleChangedNotify(IHRTCConnection* conn, HRTCRoleType oldRole, HRTCRoleType newRole)
```
【**功能说明**】
用户角色切换成功，触发此回调。
【**回调参数**】
- conn：连接对象。

- oldRole：切换前的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
- newRole：切换成功后的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
 
 #### onRemoteUserOnline
```
virtual void onRemoteUserOnline(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端joiner用户加入当前房间，触发此回调。该回调提示有远端joiner用户加入了房间，并返回新加入用户的ID。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- userName：远端用户昵称。
 
 #### onRemoteUserOffline
```
virtual void onRemoteUserOffline(IHRTCConnection* conn, const char* userId, int reason)
```
【**功能说明**】
远端joiner用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数**】
- conn：连接对象。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
 #### onRemoteUserNameChangedNotify
```
virtual void onRemoteUserNameChangedNotify(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- userName：变更后的昵称。
 
 #### onUserNameChangedNotify
```
virtual void onUserNameChangedNotify(IHRTCConnection* conn, const char* oldUserName, const char* newUserName)
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
 #### onRemoteAudioStateChangedNoitfy
```
virtual void onRemoteAudioStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason)
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1231316191106)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section131711120131020)。
 
#### onRemoteVideoStateChangedNotify
```
virtual void onRemoteVideoStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason)
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section105601959163512)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section65623596353)。
 
#### onUserVolumeStatsNotify
```
virtual void onUserVolumeStatsNotify(IHRTCConnection* conn, const HRTCVolumeInfo* userVolumes, unsigned int userVolumesCount, unsigned int totalVolume)
```
【**功能说明**】
用户音量状态回调。通过[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0100.html#rtc_05_0100__zh-cn_topic_0000001160409613_section16217114063820)开启并设置回调周期，定时上报。
【**回调参数**】
- conn：连接对象。
- userVolumes：HRTCVolumeInfo，userId，volume。
- userVolumesCount：音量上报用户数组的大小。
- totalVolume：总音量。
 
 #### onUserAuxiliaryStreamAvailable
```
virtual void onUserAuxiliaryStreamAvailable(IHRTCConnection* conn, const char* userId, bool available)
```
【**功能说明**】
远端开启，停止辅流后，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- available：true表示远端推辅流，false表示远端停止辅流。
 
 #### onFirstRemoteVideoDecoded
```
virtual void onFirstRemoteVideoDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户视频流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
 #### onFirstRemoteAuxiliaryStreamDecoded
```
virtual void onFirstRemoteAuxiliaryStreamDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户辅流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
 #### onRenderSuccessNotify
```
virtual void onRenderSuccessNotify(IHRTCConnection* conn, const char* userId, unsigned int isAux)
```
【**功能说明**】
媒体渲染成功回调，当前该数据主要用作无码流提示场景中从无码流状态恢复为有码流状态的依据。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- isAux：是否是辅流。
 
 #### onAudioStatsNotify
```
virtual void onAudioStatsNotify(IHRTCConnection* conn, HRTCLocalAudioStats *localStats, unsigned int localStatsCount, HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地音频发流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1483619515499)。
- localStatsCount：localStats数组长度。
- remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section6738131145018)。
- remoteStatsCount：remoteStats数组长度。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地音频时，localStatsCount为0，localStats为空指针。
- 当无远端音频时，remoteStatsCount为0，remoteStats为空指针。
 
 #### onVideoStatsNotify
```
virtual void onVideoStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数** 】
- conn：连接对象。
- localStats：本地视频发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：localStats数组长度。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地视频时，localStatsCount为0，localStats为空指针。
- 当无远端视频时，remoteStatsCount为0，remoteStats为空指针。
 
 #### onAuxiliaryStreamStatsNotify
```
virtual void onAuxiliaryStreamStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地辅流发流详情，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：本地辅流发流数量。
- remoteStats：远端辅流收流详情，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：远端辅流收流数量。
 
 #### onNetworkQualityNotify
```
virtual void onNetworkQualityNotify(IHRTCConnection* conn, HRTCQualityInfo* localQuality, unsigned int localQualityCount, HRTCQualityInfo* remoteQuality, unsigned int remoteQualityCount)
```
【**功能说明**】
房间内客户端基于流级别的网络质量实时上报，默认开启，每2s上报一次，有数据流时才会回调，音频流、视频流分开回调。
【**回调参数**】
- conn：连接对象。
- localQuality：本地上行网络质量，该参数暂时不使用。
- localQualityCount：正在上报的网络质量数量，该参数暂时不使用。
- remoteQualityCount：正在上报的流的数量，集合的大小。
 
 #### onDestroyConnection
```
virtual void onDestroyConnection(IHRTCConnection* conn)
```
【**功能说明**】
调用release释放连接后，触发该回调，这是IHRTCConnection对象最后一个回调，需要在该回调触发后再去清理IHRTCConnectionEventHandler资源。
【**回调参数**】
conn：连接对象。
 #### onMediaConnectStateChangedNotify
```
virtual void onMediaConnectStateChangedNotify(IHRTCConnection* conn, HRTCMediaConnStateTypes state, HRTCMediaConnChangeReason reason, const char* description)
```
【**功能说明**】
媒体服务器连接状态变更通知。
【**回调参数**】
- conn：连接对象。
- state：与媒体服务器连接状态，具体请参见[HRTCMediaConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1784814239711)。
- reason：连接状态改变原因，具体请参见[HRTCMediaConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section13292263715)。
- description：媒体连接变化原因描述。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
加入房间过后，收到媒体服务的数据包时，返回Connected消息，超过6s没有收到包，则返回Failed消息。
 #### onStartAllRemoteViewResult
```
void onStartAllRemoteViewResult(IHRTCConnection* conn, int errCode, const char* errMsg, unsigned int counts, const HRTCSetupRemoteViewResult* results)
```
【**功能说明**】
批量选看结果回调。
【**回调参数**】
- conn：连接对象。
- errCode：错误码。
- errMsg：错误信息。
- counts：results数组大小。
- results：批量选看结果，具体请参见[HRTCSetupRemoteViewResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section895105225712)。
 
 #### onStatsNotify
```
virtual void onStatsNotify(HRTCOnStats *rtcStats)
```
【**功能说明**】
当前会话统计回调。
【**回调参数**】
rtcStats：当前会话统计，具体请参见[HRTCOnStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section14832161915511)。
 #### onVideoResolutionChangedNotify
```
void onVideoResolutionChangedNotify(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端视频分辨率大小改变，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频分辨率改变后的宽。
- height：视频分辨率改变后的高。
 
 #### onRemoteAudioStatsNotify
```
void onRemoteAudioStatsNotify(IHRTCConnection* conn, const HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端音频流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section6738131145018)。
- remoteStatsCount：remoteStats数组长度。
 
 #### onRemoteVideoStatsNotify
```
void onRemoteVideoStatsNotify(IHRTCConnection* conn, const HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端视频流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
#### onError
```
virtual void onError(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
#### onConnectionChangedNotify
```
virtual void onConnectionChangedNotify(IHRTCConnection* conn, HRTCConnStateType state, HRTCConnChangeReason reason, const char* description)
```
【**功能说明**】
连接状态改变回调。
【**回调参数**】
- conn：连接对象。
- state：连接状态类型，具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section726832651815)。
- reason：连接状态改变原因，具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section12711426101819)。
- description：连接状态改变描述。
 
 #### onAuthorizationExpired
```
virtual void onAuthorizationExpired(IHRTCConnection* conn);
```
【**功能说明**】
鉴权签名过期回调，需要app调用[renewAuthorization](https://support.huaweicloud.com/csdk-rtc/rtc_05_0111.html#rtc_05_0111__zh-cn_topic_0000001119942934_section1149915116525)更新签名。
【**回调参数**】
conn：连接对象。
#### onJoinRoomSuccess
```
virtual void onJoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：新加入房间的用户ID。
 
#### onJoinRoomFailure
```
virtual void onJoinRoomFailure(IHRTCConnection* conn, int error, const char* msg)
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数**】
- conn：连接对象。
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
#### onRejoinRoomSuccess
```
virtual void onRejoinRoomSuccess(IHRTCConnection* conn, const char* userId)
```
【**功能说明**】
重新加入房间回调。例如，网络异常后重连成功加入房间触发。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
 
#### onLeaveRoom
```
virtual void onLeaveRoom(IHRTCConnection* conn, HRTCLeaveReason reason, const HRTCStatsInfo &statsInfo)
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数**】
- conn：连接对象。
- reason：离开的房间原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section414213447916)。
- statsInfo：卡顿统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section75431844173718)。
 
 #### onUserRoleChangedNotify
```
virtual void onUserRoleChangedNotify(IHRTCConnection* conn, HRTCRoleType oldRole, HRTCRoleType newRole)
```
【**功能说明**】
用户角色切换成功，触发此回调。
【**回调参数**】
- conn：连接对象。

- oldRole：切换前的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
- newRole：切换成功后的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
 
 #### onRemoteUserOnline
```
virtual void onRemoteUserOnline(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端joiner用户加入当前房间，触发此回调。该回调提示有远端joiner用户加入了房间，并返回新加入用户的ID。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- userName：远端用户昵称。
 
#### onRemoteUserOffline
```
virtual void onRemoteUserOffline(IHRTCConnection* conn, const char* userId, int reason)
```
【**功能说明**】
远端joiner用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数**】
- conn：连接对象。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
#### onRemoteUserNameChangedNotify
```
virtual void onRemoteUserNameChangedNotify(IHRTCConnection* conn, const char* userId, const char* userName)
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- userName：变更后的昵称。
 
#### onUserNameChangedNotify
```
virtual void onUserNameChangedNotify(IHRTCConnection* conn, const char* oldUserName, const char* newUserName)
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- conn：连接对象。
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
 #### onRemoteAudioStateChangedNotify
```
virtual void onRemoteAudioStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason)
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1231316191106)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section131711120131020)。
 
 #### onRemoteVideoStateChangedNotify
```
virtual void onRemoteVideoStateChangedNotify(IHRTCConnection* conn, const char* userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason)
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section105601959163512)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section65623596353)。
 
#### onUserVolumeStatsNotify
```
virtual void onUserVolumeStatsNotify(IHRTCConnection* conn, const HRTCVolumeInfo* userVolumes, unsigned int userVolumesCount, unsigned int totalVolume)
```
【**功能说明**】
用户音量状态回调。通过[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0100.html#rtc_05_0100__zh-cn_topic_0000001160409613_section16217114063820)开启并设置回调周期，定时上报。
【**回调参数**】
- conn：连接对象。
- userVolumes：HRTCVolumeInfo，userId，volume。
- userVolumesCount：音量上报用户数组的大小。
- totalVolume：总音量。
 
#### onUserAuxiliaryStreamAvailable
```
virtual void onUserAuxiliaryStreamAvailable(IHRTCConnection* conn, const char* userId, bool available)
```
【**功能说明**】
远端开启，停止辅流后，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：远端用户ID。
- available：true表示远端开启推辅流，false表示远端停止辅流。
 
#### onFirstRemoteVideoDecoded
```
virtual void onFirstRemoteVideoDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户视频流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
#### onFirstRemoteAuxiliaryStreamDecoded
```
virtual void onFirstRemoteAuxiliaryStreamDecoded(IHRTCConnection* conn, const char* userId, int width, int height)
```
【**功能说明**】
远端用户辅流第一帧解码成功，触发此回调。
【**回调参数**】
- conn：连接对象。
- userId：用户ID。
- width：视频宽。
- height：视频高。
 
 #### onAudioStatsNotify
```
virtual void onAudioStatsNotify(IHRTCConnection* conn, HRTCLocalAudioStats *localStats, unsigned int localStatsCount, HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地音频发流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1483619515499)。
- localStatsCount：localStats数组长度。
- remoteStats：远端音频收流详情，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section6738131145018)。
- remoteStatsCount：remoteStats数组长度。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地音频时，localStatsCount为0，localStats为空指针。
- 当无远端音频时，remoteStatsCount为0，remoteStats为空指针。
 
#### onVideoStatsNotify
```
virtual void onVideoStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数** 】
- conn：连接对象。
- localStats：本地视频发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：localStats数组长度。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地视频时，localStatsCount为0，localStats为空指针。
- 当无远端视频时，remoteStatsCount为0，remoteStats为空指针。
 
 #### onAuxiliaryStreamStatsNotify
```
virtual void onAuxiliaryStreamStatsNotify(IHRTCConnection* conn, HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- conn：连接对象。
- localStats：本地辅流发流详情，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：本地辅流发流数量。
- remoteStats：远端辅流收流详情，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：远端辅流收流数量。
 
#### onNetworkQualityNotify
```
virtual void onNetworkQualityNotify(IHRTCConnection* conn, HRTCQualityInfo* localQuality, unsigned int localQualityCount, HRTCQualityInfo* remoteQuality, unsigned int remoteQualityCount)
```
【**功能说明**】
房间内客户端基于流级别的网络质量实时上报，默认开启，每2s上报一次，有数据流时才会回调，音频流、视频流分开回调。
【**回调参数**】
- conn：连接对象。
- localQuality：本地上行网络质量，该参数暂时不使用。
- localQualityCount：正在上报的网络质量数量，该参数暂时不使用。
- remoteQualityCount：正在上报的流的数量，集合的大小。
 
 #### onRoomStreamStatusNotify
```
virtual void onRoomStreamStatusNotify(IHRTCConnection* conn, int audienceState)
```
【**功能说明**】
房间流状态通知，业务调用云侧暂停/恢复接口后，端侧收到该通知。
【**回调参数**】
- conn：连接对象。
- audienceState: 0表示暂停 ，1表示恢复
 
#### onDestroyConnection
```
virtual void onDestroyConnection(IHRTCConnection* conn)
```
【**功能说明**】
调用release释放连接后，触发该回调，这是IHRTCConnection对象最后一个回调，需要在该回调触发后再去清理IHRTCConnectionEventHandler资源。
【**回调参数**】
conn：连接对象。
#### onError
```
virtual void onError(int error, const char* msg)
```
【**功能说明**】
发生错误，触发此回调。返回[客户端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)或者[服务端错误码](https://support.huaweicloud.com/csdk-rtc/rtc_05_0126.html)。
【**回调参数**】
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
#### onJoinRoomSuccess
```
virtual void onJoinRoomSuccess(const char* roomId, const char* userId)
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数**】
- roomId：新加入的房间ID。
- userId：新加入房间的用户ID。
 
#### onJoinRoomFailure
```
virtual void onJoinRoomFailure(int error, const char* msg)
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数**】
- error：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- msg：错误描述。
 
#### onLeaveRoom
```
virtual void onLeaveRoom(HRTCLeaveReason reason, const HRTCStatsInfo &statsInfo)
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数**】
- reason：离开的房间原因，具体请参见[HRTCLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section414213447916)。
- statsInfo：卡顿统计信息，具体请参见[HRTCStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section75431844173718)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
APP调用[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0099.html#rtc_05_0099__zh-cn_topic_0000001113849700_section72039355375)接口时，会返回[HRTC_LEAVE_REASON_USER_LEAVE_ROOM](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section414213447916)，可以通过以下任一方式回退到登录界面。
- APP在调用[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0099.html#rtc_05_0099__zh-cn_topic_0000001113849700_section72039355375)接口时退到登录界面，或者在收到onLeaveRoom回调，且回调消息不等于[HRTC_LEAVE_REASON_USER_LEAVE_ROOM](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section414213447916)时（防止重复操作）退到登录界面。
- APP只在收到onLeaveRoom消息时退到登录界面。
 
 #### onRemoteUserOnline
```
virtual void onRemoteUserOnline(const char* roomId, const char* userId, const char* userName)
```
【**功能说明**】
远端joiner用户加入当前房间，触发此回调。该回调提示有远端joiner用户加入了房间，并返回新加入用户的ID。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- userName：远端用户昵称。
 
 #### onRemoteUserOffline
```
virtual void onRemoteUserOffline(const char* roomId, const char* userId, int reason)
```
【**功能说明**】
远端joiner用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数** 】
- roomId：当前房间的房间ID。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
 #### onRemoteUserNameChangedNotify
```
virtual void onRemoteUserNameChangedNotify(const char* roomId, const char* userId, const char* userName)
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- userName：变更后的昵称。
 
 #### onUserNameChangedNotify
```
virtual void onUserNameChangedNotify(const char* oldUserName, const char* newUserName)
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
#### onFirstRemoteAuxiliaryStreamDecoded
```
virtual void onFirstRemoteAuxiliaryStreamDecoded(const char* roomId, const char* userId, int width, int height)
```
【**功能说明**】
接收到第一帧远端辅流并解码成功，触发此回调。
【**回调参数**】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽。
- height：视频流高。
 
#### onFirstRemoteVideoDecoded
```
virtual void onFirstRemoteVideoDecoded(const char* roomId, const char* userId, int width, int height)
```
【**功能说明**】
接收到第一帧远端视频流并解码成功，触发此回调。
【**回调参数**】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽。
- height：视频流高。
 
#### onConnectionChangedNotify
```
virtual void onConnectionChangedNotify(HRTCConnStateTypes connType, HRTCConnChangeReason reason, const char* description)
```
【**功能说明**】
网络连接状态发生变化，触发此回调。
【**回调参数**】
- connType：网络连接状态。具体请参见[HRTCConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section726832651815)。
- reason：网络连接状态发生变化原因。具体请参见[HRTCConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section12711426101819)。
- description：错误原因描述。
 
 #### onDeviceStateChangedNotify
```
virtual void onDeviceStateChangedNotify(const char* deviceId, HRTCDeviceType deviceType, HRTCDeviceState deviceState)
```
【**功能说明**】
设备状态发生变化，触发此回调。
【**回调参数**】
- deviceId：系统设备标识，如系统音频播放设备标识可通过[getPlaybackDevices](https://support.huaweicloud.com/csdk-rtc/rtc_05_0116.html#rtc_05_0116__zh-cn_topic_0277015531_section1159715261797)获取。
- deviceType：系统设备类型，具体请参见[HRTCDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1828214264182)。
- deviceState：系统设备状态，具体请参见[HRTCDeviceState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1728432617187)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
通话前插拔设备会上报变化。
 #### onDeviceVolumeChangedNotify
```
virtual void onDeviceVolumeChangedNotify(HRTCDeviceType deviceType, unsigned int volume, unsigned int muted)
```
【**功能说明**】
音频设备音量发生变化，触发此回调。
【**回调参数**】
- deviceType：系统设备类型，具体请参见[HRTCDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1828214264182)。
- volume：音量
- muted：true表示设备静音，false表示设备未静音。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
通话前调整音频设备音量和静音会上报变化。
#### onLogUploadResult
```
virtual void onLogUploadResult(int result)
```
【**功能说明**】
日志上传结果回调。
【**回调参数**】
result：日志上传结果。
#### onLogUploadProgress
```
virtual void onLogUploadProgress(int progress)
```
【**功能说明**】
日志上传进度回调。
【**回调参数**】
progress：日志上传进度。取值范围为\[0,100\]。
 #### onUserRoleChangedNotify
```
virtual void onUserRoleChangedNotify(const char* roomId, HRTCRoleType oldRole, HRTCRoleType newRole)
```
【**功能说明**】
用户角色切换成功，触发此回调。
【**回调参数**】
- roomId：发生角色切换的房间号。
- oldRole：切换前的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
- newRole：切换成功后的角色。具体请参见[HRTCRoleType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section426214263183)。
 
#### onScreenShareStarted
```
virtual void onScreenShareStarted()
```
【**功能说明**】
屏幕流共享开启，触发此回调。
#### onScreenShareStopped
```
virtual void onScreenShareStopped(int reason)
```
【**功能说明**】
屏幕流共享关闭，触发此回调。
【**回调参数**】
reason：屏幕共享关闭原因。
 #### onUserAuxiliaryStreamAvailable
```
virtual void onUserAuxiliaryStreamAvailable(const char* roomId, const char* userId, bool available)
```
【**功能说明**】
远端开启，停止辅流后，触发此回调。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- available：true表示远端开启辅流，false表示远端停止辅流。
 
 #### onVideoStatsNotify
```
virtual void onVideoStatsNotify(HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
视频流详情，2s触发一次回调。
【**回调参数** 】
- localStats：本地视频发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：localStats数组长度。
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地视频时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端视频时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAudioStatsNotify
```
virtual void onAudioStatsNotify(HRTCLocalAudioStats *localStats, unsigned int localStatsCount, HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地音频发流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1483619515499)。
- localStatsCount：localStats数组长度。
- remoteStats：远端音频收流统计，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section6738131145018)。
- remoteStatsCount：remoteStats数组长度。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地音频时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端音频时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAuxiliaryStreamStatsNotify
```
virtual void onAuxiliaryStreamStatsNotify(HRTCLocalVideoStats *localStats, unsigned int localStatsCount, HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地辅流发流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：localStats数组长度。
- remoteStats：远端辅流收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 当无本地辅流时，localStatsCount为0，localStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
- 当无远端辅流时，remoteStatsCount为0，remoteStats为空指针，需要先判断不为空再使用，否则可能引发空指针错误。
 
#### onAuthorizationExpired
```
virtual void onAuthorizationExpired();
```
【**功能说明**】
鉴权签名过期回调，需要app调用更新签名。
#### onRemoteAudioStateChangedNotify
```
virtual void onRemoteAudioStateChangedNotify(const char* userId, HRTCRemoteAudioStreamState state, HRTCRemoteAudioStreamStateReason reason)
```
【**功能说明**】
远端音频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端音频流状态，具体请参见[HRTCRemoteAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1231316191106)。
- reason：远端音频流状态变化原因，具体请参见[HRTCRemoteAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section131711120131020)。
 
#### onRemoteVideoStateChangedNotify
```
virtual void onRemoteVideoStateChangedNotify(const char* userId, HRTCRemoteVideoStreamState state, HRTCRemoteVideoStreamStateReason reason)
```
【**功能说明**】
远端视频流状态变化回调。
【**回调参数**】
- userId：远端用户ID。
- state：远端视频流状态，具体请参见[HRTCRemoteVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section105601959163512)。
- reason：远端视频流状态变化原因，具体请参见[HRTCRemoteVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section65623596353)。
 
#### onRenderAuxiliaryExternalVideoFrame
```
virtual void onRenderAuxiliaryExternalVideoFrame(const char* roomId, HRTCMediaDirection direction, const char* userId, HRTCVideoFrame& videoFrame)
```
【**功能说明**】
辅流自渲染回调。需要调用setAuxiliaryExternalVideoFrameOutput接口开启辅流自渲染，从而触发该回调。
【**回调参数**】
- roomId：房间ID。
- direction：数据源，本地数据，远端数据，具体请参见[HRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section41882561268)。
- userId：用户ID。
- videoFrame：辅流详情，具体请参见[HRTCVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section252640124317)。
 
#### onRejoinRoomSuccess
```
virtual void onRejoinRoomSuccess(const char* roomId, const char* userId)
```
【**功能说明**】
重新加入房间回调。例如网络异常后重连成功加入房间触发。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
 
#### onNetworkTestQualitysection1015722617613
```
virtual void onNetworkTestQuality(HRTCNetworkQualityLevel level)
```
【**功能说明**】
加房间前网络探测回调。
【**回调参数**】
level：网络质量，具体请参见[HRTCNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section195341126192013)。
#### onNetworkTestResult
```
virtual void onNetworkTestResult(HRTCNetworkTestResult& networkTestResult)
```
【**功能说明**】
加房间前网络探测结果回调。
【**回调参数**】
networkTestResult：主要包括测试成功与否、上行和下行的网络带宽、丢包、延时和抖动，具体请参见[HRTCNetworkTestResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section8291202014203)。
 #### onUserVolumeStatsNotify
```
virtual void onUserVolumeStatsNotify(const HRTCVolumeInfo* userVolumes, unsigned int userVolumesCount, unsigned int totalVolume)
```
【**功能说明**】
用户音量状态回调。通过[enableUserVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0100.html#rtc_05_0100__zh-cn_topic_0000001160409613_section16217114063820)开启并设置回调周期，定时上报。
【**回调参数**】
- userVolumes：用户信息，具体请参见[HRTCVolumeInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section729719918275)。
- userVolumesCount：上报的用户人数，包含本地用户。
- totalVolume：总音量。
 
#### onTopActiveSpeaker
```
virtual void onTopActiveSpeaker(const char* userId, bool noStream)
```
【**功能说明**】
声控画面的用户ID变化时，触发此回调。该回调主要用于0号会场场景。
【**回调参数**】
userId：返回当前声控画面的用户ID。
noStream：该用户是否有视频流。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
0号会场模式下，SDK会持续监测（根据一定时间内用户音量大小）当前最活跃的用户，如果最活跃用户发生变化，则触发此回调并上报当前最活跃的用户userId。
 #### onLocalAudioStateChangedNotify
```
virtual void onLocalAudioStateChangedNotify(HRTCLocalAudioStreamState state, HRTCLocalAudioStreamStateReason reason)
```
【**功能说明**】
本地音频状态改变，触发此回调。
【**回调参数**】
- state：本地音频状态，具体请参见[HRTCLocalAudioStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1907681286)。
- reason：本地音频状态改变的原因，具体请参见[HRTCLocalAudioStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1737961311817)。
 
 #### onLocalVideoStateChangedNotify
```
virtual void onLocalVideoStateChangedNotify(HRTCLocalVideoStreamState state, HRTCLocalVideoStreamStateReason reason)
```
【**功能说明**】
本地视频状态改变，触发此回调。
【**回调参数**】
- state：本地视频状态，具体请参见[HRTCLocalVideoStreamState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1631414204610)。
- reason：本地视频状态改变原因，具体请参见[HRTCLocalVideoStreamStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section530116162462)。
 
 #### onMediaConnectStateChangedNotify
```
virtual void onMediaConnectStateChangedNotify(HRTCMediaConnStateTypes state, HRTCMediaConnChangeReason reason, const char* description)
```
【**功能说明**】
媒体服务器连接状态变更通知。
【**回调参数**】
- state：与媒体服务器连接状态，具体请参见[HRTCMediaConnStateTypes](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1784814239711)。
- reason：连接状态变化的原因，具体请参见[HRTCMediaConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section13292263715)。
- description：连接状态变化原因描述。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
加入房间过后，收到媒体服务的数据包时，返回Connected消息，超过6s没有收到包，则返回Failed消息。
#### onStartAllRemoteViewResult
```
virtual void onStartAllRemoteViewResult(int errCode, const char* errMsg, unsigned int counts, const HRTCSetupRemoteViewResult* results)
```
【**功能说明**】
批量选看结果回调。
【**回调参数**】
- errCode：错误码。
- errMsg：错误信息。
- counts：results数组大小。
- results：批量选看结果，具体请参见[HRTCSetupRemoteViewResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section895105225712)。
 
 #### onStatsNotify
```
virtual void onStatsNotify(HRTCOnStats *rtcStats)
```
【**功能说明**】
当前会话统计回调。
【**回调参数**】
rtcStats：当前会话统计，具体请参见[HRTCOnStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section14832161915511)。
 #### onLocalVideoStatsNotify
```
virtual void onLocalVideoStatsNotify(const HRTCLocalVideoStats *localStats, unsigned int localStatsCount)
```
【**功能说明**】
本地视频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地视频收流统计，具体请参见[HRTCLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section133091918111612)。
- localStatsCount：localStats数组长度。
 
 #### onRemoteVideoStatsNotify
```
virtual void onRemoteVideoStatsNotify(const HRTCRemoteVideoStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端视频流详情，2s触发一次回调。
【**回调参数**】
- remoteStats：远端视频收流统计，具体请参见[HRTCRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1519645813161)。
- remoteStatsCount：remoteStats数组长度。
 
 #### onLocalAudioStatsNotify
```
virtual void onLocalAudioStatsNotify(const HRTCLocalAudioStats *localStats, unsigned int localStatsCount)
```
【**功能说明**】
本地音频流详情，2s触发一次回调。
【**回调参数**】
- localStats：本地音频收流统计，具体请参见[HRTCLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section1483619515499)。
- localStatsCount：localStats数组长度。
 #### onRemoteAudioStatsNotify
```
virtual void onRemoteAudioStatsNotify(const HRTCRemoteAudioStats *remoteStats, unsigned int remoteStatsCount)
```
【**功能说明**】
远端音频流详情，2s触发一次回调。
【**回调参数**】
- remoteStats：远端音频收流统计，具体请参见[HRTCRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__zh-cn_topic_0277015533_section6738131145018)。
- remoteStatsCount：remoteStats数组长度。
 #### onVideoResolutionChangedNotify
```
virtual void onVideoResolutionChangedNotify(const char* userId, int width, int height)
```
【**功能说明**】
远端视频分辨率大小改变，触发此回调。
【**回调参数**】
- userId：用户ID。
- width：视频分辨率改变后的宽。
- height：视频分辨率改变后的高。
#### onAudioClipFinished
```
virtual void onAudioClipFinished(int soundId)
```
【**功能说明**】
音效文件播放结束，触发此回调。
【**回调参数**】
soundId：音效ID，取值\>=0。
#### onAudioFileFinished
```
virtual void onAudioFileFinished()
```
【**功能说明**】
音频文件播放结束，触发此回调。
【**回调参数**】
无
#### onAudioMixStateChangedNotify
```
virtual void onAudioMixStateChangedNotify(HRTCAudioFileState state, HRTCAudioFileReason reason, unsigned long long value)
```
【**功能说明**】
混音音频文件播放状态改变，触发此回调。
【**回调参数**】
- state：音频播放状态，具体请参见[HRTCAudioFileState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section49629118111)。
- reason：音频播放状态改变原因，具体请参见[HRTCAudioFileReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section18807173319112)。
- value：state为HWRtcAudioFileOpenCompleted表示音频文件的时长，单位为ms；state为HWRtcAudioFilePositionUpdate表示当前播放的位置，单位为ms。其他情况下，value值无意义。
#### onSeiSendMsgSuccess
```
void onSeiSendMsgSuccess(const char* message);
```
【**功能说明**】
音频SEI信息发送成功回调。
**回调参数**
message：发送SEI信息的内容。
#### onSeiRecvMsg
```
void onSeiRecvMsg(const char* userId, const char* message);
```
【**功能说明**】
接收音频SEI信息回调。
**回调参数**
- userId：用户ID。
- message：接收SEI信息的内容。
 
 #### onStartPublishStream
```
void onStartPublishStream(int code, const char* taskId);
```
【**功能说明**】
开始旁路（RTMP）推流回调。
**回调参数**
- code：错误码，成功为0，失败参考错误码[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- taskId：任务Id。
 
 #### onUpdateTransCoding
```
void onUpdateTransCoding(int code, const char* taskId);
```
【**功能说明**】
更新旁路（RTMP）推流消息。
**回调参数**
- code：错误码，成功为0，失败参考错误码[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- taskId：任务Id。
 
 #### onStopPublishStream
```
void onStopPublishStream(int code, const char* taskId);
```
【**功能说明**】
停止旁路（RTMP）推流消息。
**回调参数**
- code：错误码，成功为0，失败参考错误码[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- taskId：任务Id。
 
 #### onStreamPublishStateChange
```
void onStreamPublishStateChange(int code, const char* taskId, const HRTCUrlStatusList * urlStatu);
```
【**功能说明**】
RTMP推流状态回调。
**回调参数**
- code：错误码，成功为0，失败参考错误码[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
- taskId：任务Id。
- urlStatu：推流的url状态，具体请参见[HRTCUrlStatusList](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section159071888515)。
 
 #### onMultiRoomMediaRelayStateChanged
```
void onMultiRoomMediaRelayStateChanged(const char *roomId, HRTCMultiRoomMediaRelayState state, HRTCMultiRoomMediaRelayStateCode code);
```
【**功能说明**】
跨房状态回调。
**【回调参数**】
- roomId：跨房房间号。
- state：状态类型，具体请参见[HRTCMultiRoomMediaRelayState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section817464593514)。
- code：状态的具体原因，具体请参见[HRTCMultiRoomMediaRelayStateCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section12745550193512)。
 
 #### onRemoteMicrophoneStateChanged
```
void onRemoteMicrophoneStateChanged(const char* userId, HRTCRemoteMicState state);
```
【**功能说明**】
远端麦克风设备状态变更通知。
**【回调参数**】
- userId：远端用户userId。
- state：麦克风设备状态，具体请参见[HRTCRemoteMicState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section5682143519474)。
 
