#include <IAgoraRtcChannel.h>
Public 成员函数 | |
virtual | ~IChannelEventHandler () |
virtual void | onChannelWarning (IChannel *rtcChannel, int warn, const char *msg) |
virtual void | onChannelError (IChannel *rtcChannel, int err, const char *msg) |
virtual void | onJoinChannelSuccess (IChannel *rtcChannel, uid_t uid, int elapsed) |
virtual void | onRejoinChannelSuccess (IChannel *rtcChannel, uid_t uid, int elapsed) |
virtual void | onLeaveChannel (IChannel *rtcChannel, const RtcStats &stats) |
virtual void | onClientRoleChanged (IChannel *rtcChannel, CLIENT_ROLE_TYPE oldRole, CLIENT_ROLE_TYPE newRole) |
virtual void | onClientRoleChangeFailed (IChannel *rtcChannel, CLIENT_ROLE_CHANGE_FAILED_REASON reason, CLIENT_ROLE_TYPE currentRole) |
virtual void | onUserJoined (IChannel *rtcChannel, uid_t uid, int elapsed) |
virtual void | onUserOffline (IChannel *rtcChannel, uid_t uid, USER_OFFLINE_REASON_TYPE reason) |
virtual void | onConnectionLost (IChannel *rtcChannel) |
virtual void | onRequestToken (IChannel *rtcChannel) |
virtual void | onTokenPrivilegeWillExpire (IChannel *rtcChannel, const char *token) |
virtual void | onRtcStats (IChannel *rtcChannel, const RtcStats &stats) |
virtual void | onNetworkQuality (IChannel *rtcChannel, uid_t uid, int txQuality, int rxQuality) |
virtual void | onRemoteVideoStats (IChannel *rtcChannel, const RemoteVideoStats &stats) |
virtual void | onRemoteAudioStats (IChannel *rtcChannel, const RemoteAudioStats &stats) |
virtual void | onRemoteAudioStateChanged (IChannel *rtcChannel, uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed) |
virtual void | onAudioPublishStateChanged (IChannel *rtcChannel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState) |
virtual void | onVideoPublishStateChanged (IChannel *rtcChannel, STREAM_PUBLISH_STATE oldState, STREAM_PUBLISH_STATE newState, int elapseSinceLastState) |
virtual void | onAudioSubscribeStateChanged (IChannel *rtcChannel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState) |
virtual void | onVideoSubscribeStateChanged (IChannel *rtcChannel, uid_t uid, STREAM_SUBSCRIBE_STATE oldState, STREAM_SUBSCRIBE_STATE newState, int elapseSinceLastState) |
virtual void | onUserSuperResolutionEnabled (IChannel *rtcChannel, uid_t uid, bool enabled, SUPER_RESOLUTION_STATE_REASON reason) |
virtual void | onActiveSpeaker (IChannel *rtcChannel, uid_t uid) |
virtual void | onFirstRemoteVideoFrame (IChannel *rtcChannel, uid_t uid, int width, int height, int elapsed) |
virtual void | onVideoSizeChanged (IChannel *rtcChannel, uid_t uid, int width, int height, int rotation) |
virtual void | onRemoteVideoStateChanged (IChannel *rtcChannel, uid_t uid, REMOTE_VIDEO_STATE state, REMOTE_VIDEO_STATE_REASON reason, int elapsed) |
virtual void | onStreamMessage (IChannel *rtcChannel, uid_t uid, int streamId, const char *data, size_t length) |
virtual void | onStreamMessageError (IChannel *rtcChannel, uid_t uid, int streamId, int code, int missed, int cached) |
virtual void | onChannelMediaRelayStateChanged (IChannel *rtcChannel, CHANNEL_MEDIA_RELAY_STATE state, CHANNEL_MEDIA_RELAY_ERROR code) |
virtual void | onChannelMediaRelayEvent (IChannel *rtcChannel, CHANNEL_MEDIA_RELAY_EVENT code) |
virtual void | onRtmpStreamingStateChanged (IChannel *rtcChannel, const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR_TYPE errCode) |
virtual void | onRtmpStreamingEvent (IChannel *rtcChannel, const char *url, RTMP_STREAMING_EVENT eventCode) |
virtual void | onTranscodingUpdated (IChannel *rtcChannel) |
virtual void | onLocalPublishFallbackToAudioOnly (IChannel *rtcChannel, bool isFallbackOrRecover) |
virtual void | onRemoteSubscribeFallbackToAudioOnly (IChannel *rtcChannel, uid_t uid, bool isFallbackOrRecover) |
virtual void | onConnectionStateChanged (IChannel *rtcChannel, CONNECTION_STATE_TYPE state, CONNECTION_CHANGED_REASON_TYPE reason) |
virtual void | onProxyConnected (IChannel *rtcChannel, uid_t uid, PROXY_TYPE proxyType, const char *localProxyIp, int elapsed) |
|
inlinevirtual |
|
inlinevirtual |
报告 IChannel 的警告码。
rtcChannel | IChannel |
warn | 警告码,详见 WARN_CODE_TYPE |
msg | 警告信息 |
|
inlinevirtual |
报告 IChannel 的错误码。
rtcChannel | IChannel |
err | 错误码,详见 ERROR_CODE_TYPE |
msg | 错误信息 |
|
inlinevirtual |
加入频道回调。
该回调方法表示该客户端成功加入了指定的频道。
rtcChannel | IChannel |
uid | 用户 ID。如果 joinChannel 中指定了 uid ,则此处返回该 ID;否则使用声网服务器自动分配的 ID。 |
elapsed | 从 joinChannel 开始到发生此事件过去的时间(毫秒)。 |
|
inlinevirtual |
重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
rtcChannel | IChannel |
uid | 用户 ID。 |
elapsed | 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。 |
|
inlinevirtual |
离开频道回调。
App 调用 leaveChannel 方法时,SDK提示 App 离开频道成功。在该回调方法中,App 可以得到此次通话的总通话时长、SDK 收发数据的流量等信息。App 通过该回调获取通话时长以及 SDK 接收到或发送的数据统计信息。
|
inlinevirtual |
直播场景下用户角色切换成功回调。
直播场景下,本地用户加入频道后调用 setClientRole 成功改变用户角色时,例如主播切换为观众,或观众切换为主播,SDK 会触发该回调,报告切换前和切换后的角色。
rtcChannel | IChannel |
oldRole | 切换前的角色: CLIENT_ROLE_TYPE 。 |
newRole | 切换后的角色: CLIENT_ROLE_TYPE 。 |
|
inlinevirtual |
直播场景下切换用户角色失败回调。
直播场景下,本地用户加入频道后调用 setClientRole 切换用户角色失败时,SDK 会触发该回调,报告切换失败的原因和当前的用户角色。
rtcChannel | IChannel |
reason | 切换用户角色失败的原因。详见 CLIENT_ROLE_CHANGE_FAILED_REASON 。 |
currentRole | 当前的用户角色。详见 CLIENT_ROLE_TYPE 。 |
|
inlinevirtual |
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
该回调在如下情况下会被触发:
rtcChannel | IChannel |
uid | 新加入频道的远端用户/主播 ID。 |
elapsed | 从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。 |
|
inlinevirtual |
远端用户(通信场景)/主播(直播场景)离开当前频道回调。
提示有远端用户/主播离开了频道(或掉线)。用户离开频道有两个原因,即正常离开和超时掉线:
rtcChannel | IChannel |
uid | 离线用户或主播的用户 ID。 |
reason | 离线原因: USER_OFFLINE_REASON_TYPE 。 |
|
inlinevirtual |
网络连接丢失回调。
SDK 在调用 joinChannel 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
与 onConnectionInterrupted 的区别是:
onConnectionInterrupted
回调一定是发生在加入频道成功后,且 SDK 刚失去和服务器连接超过 4 秒时触发。onConnectionLost
回调是无论之前加入频道是否成功,只要 10 秒内和服务器无法建立连接都会触发。如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
rtcChannel | IChannel |
|
inlinevirtual |
Token 已过期回调。
在调用 joinChannel, 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。
该回调通知 App 需要生成新的 Token,并调用 renewToken 更新 Token。
rtcChannel | IChannel |
|
inlinevirtual |
Token 服务即将过期回调。
在调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 App 更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
rtcChannel | IChannel |
token | 即将服务失效的 Token。 |
|
inlinevirtual |
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到声网边缘服务器的网络状态。
该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。
txQuality
为 UNKNOWN
;用户不收流时,rxQuality
为 UNKNOWN
。rtcChannel | IChannel |
uid | 用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。当 uid 为 0 时,返回的是本地用户的网络质量。 |
txQuality | 该用户的上行网络质量,基于发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。假设上行码率是 1000 Kbps,那么支持直播场景下 640 × 480 的分辨率、15 fps 的帧率没有问题,但是支持 1280 × 720 的分辨率就会有困难。详见 QUALITY_TYPE 。 |
rxQuality | 该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 QUALITY_TYPE 。 |
|
inlinevirtual |
通话中远端视频流的统计信息回调。
该回调描述远端用户在通话中端到端的视频流统计信息, 针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播, 该回调每 2 秒会被触发多次。
rtcChannel | IChannel |
stats | 远端视频统计数据。详见: RemoteVideoStats 。 |
|
inlinevirtual |
通话中远端音频流的统计信息回调。用于取代 onAudioQuality 回调。
该回调描述远端用户在通话中端到端的音频流统计信息。该回调函数针对每个发送音频流的远端用户/主播每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。
rtcChannel | IChannel |
stats | 接收到的远端音频统计数据,详细定义见: RemoteAudioStats 。 |
|
inlinevirtual |
远端音频流状态发生改变回调。
远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
rtcChannel | IChannel |
uid | 发生音频状态改变的远端用户 ID。 |
state | 远端音频流状态。 详见 REMOTE_AUDIO_STATE 。 |
reason | 远端音频流状态改变的具体原因。详见 REMOTE_AUDIO_STATE_REASON 。 |
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。 |
|
inlinevirtual |
音频发布状态改变回调。
rtcChannel | IChannel |
oldState | 之前的发布状态,详见 STREAM_PUBLISH_STATE |
newState | 当前的发布状态,详见 STREAM_PUBLISH_STATE |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
|
inlinevirtual |
视频发布状态改变回调。
rtcChannel | IChannel |
oldState | 之前的发布状态,详见 STREAM_PUBLISH_STATE |
newState | 当前的发布状态,详见 STREAM_PUBLISH_STATE |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
|
inlinevirtual |
音频订阅状态发生改变回调。
rtcChannel | IChannel |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态,详见 STREAM_SUBSCRIBE_STATE |
newState | 当前的订阅状态,详见 STREAM_SUBSCRIBE_STATE |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
|
inlinevirtual |
视频订阅状态发生改变回调。
rtcChannel | IChannel |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态,详见 STREAM_SUBSCRIBE_STATE |
newState | 当前的订阅状态,详见 STREAM_SUBSCRIBE_STATE |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
|
inlinevirtual |
报告超分辨率功能是否成功开启。(beta 功能)
调用 enableRemoteSuperResolution 后,SDK 触发该回调报告超分辨率是否成功开启。 如果未成功开启,请通过 reason
排查问题。
rtcChannel | IChannel |
uid | 远端用户 ID。 |
enabled | 是否对远端视频成功开启超分辨率:
|
reason | 超分辨率功能未成功开启的原因,详见 SUPER_RESOLUTION_STATE_REASON |
|
inlinevirtual |
监测到远端最活跃用户回调。
成功调用 enableAudioVolumeIndication 后,SDK 会持续监测音量 最大的远端用户,并统计该用户被判断为音量最大者的次数。当前时间段内,该次数累积最多的远端用户为最活跃的用户。
当频道内用户数量大于或等于 2 且有活跃用户时,SDK 会触发该回调并报告最活跃用户的 uid
。
onActiveSpeaker
回调。uid
。rtcChannel | IChannel |
uid | 远端最活跃用户的 ID。 |
|
inlinevirtual |
已显示首帧远端视频回调。
第一帧远端视频显示在视图上时,触发此调用。你可在此回调中获知出图时间(elapsed)。
rtcChannel | IChannel |
uid | 用户 ID,指定是哪个用户的视频流。 |
width | 视频流宽(px)。 |
height | 视频流高(px)。 |
elapsed | 从本地调用 joinChannel 到发生此事件过去的时间 (毫秒)。 |
|
inlinevirtual |
本地或远端视频大小和旋转信息发生改变回调。
rtcChannel | IChannel |
uid | 图像尺寸和旋转信息发生变化的用户的用户 ID(本地用户的 uid 为 0)。 |
width | 视频流的宽度(像素)。 |
height | 视频流的高度(像素)。 |
rotation | 旋转信息 [0,360)。 |
|
inlinevirtual |
远端视频状态发生改变回调。
rtcChannel | IChannel |
uid | 发生视频状态改变的远端用户 ID。 |
state | 远端视频流状态。详见 REMOTE_VIDEO_STATE 。 |
reason | 远端视频流状态改变的具体原因。详见 REMOTE_VIDEO_STATE_REASON 。 |
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms。 |
|
inlinevirtual |
接收到对方数据流消息的回调。
该回调表示本地用户收到了远端用户调用 sendStreamMessage 方法发送的流消息。
rtcChannel | IChannel |
uid | 发送消息的用户 ID。 |
streamId | Stream ID。 |
data | 接收到的数据。 |
length | 数据长度。 |
|
inlinevirtual |
接收对方数据流消息发生错误的回调。
该回调表示本地用户未收到远端用户调用 sendStreamMessage 方法发送的流消息。
rtcChannel | IChannel |
uid | 发送消息的用户 ID。 |
streamId | Stream ID。 |
code | 错误码: ERROR_CODE_TYPE 。 |
missed | 丢失的消息数量。 |
cached | 数据流中断时,后面缓存的消息数量。 |
|
inlinevirtual |
跨频道媒体流转发状态发生改变回调。
当跨频道媒体流转发状态发生改变时,SDK 会触发该回调, 并报告当前的转发状态以及相关的错误信息。
rtcChannel | IChannel |
state | 跨频道媒体流转发状态。详见 CHANNEL_MEDIA_RELAY_STATE 。 |
code | 跨频道媒体流转发出错的错误码。详见 CHANNEL_MEDIA_RELAY_ERROR 。 |
|
inlinevirtual |
跨频道媒体流转发事件回调。
该回调报告跨频道媒体流转发过程中发生的事件。
rtcChannel | IChannel |
code | 跨频道媒体流转发事件码。详见 CHANNEL_MEDIA_RELAY_EVENT 。 |
|
inlinevirtual |
RTMP/RTMPS 推流状态发生改变回调。
RTMP/RTMPS 推流状态发生改变时,SDK 会触发该回调,并在回调中明确状态发生改变的 URL 地址及当前推流状态。 该回调方便推流用户了解当前的推流状态;推流出错时,你可以通过返回的错误码了解出错的原因,方便排查问题。
rtcChannel | IChannel |
url | 推流状态发生改变的 URL 地址。 |
state | 当前的推流状态,详见 RTMP_STREAM_PUBLISH_STATE |
errCode | 推流错误信息,详见 RTMP_STREAM_PUBLISH_ERROR_TYPE |
|
inlinevirtual |
RTMP/RTMPS 推流事件回调。
rtcChannel | IChannel |
url | RTMP/RTMPS 推流 URL。 |
eventCode | CDN 推流事件码。详见 RTMP_STREAMING_EVENT |
|
inlinevirtual |
旁路推流设置已被更新回调。
setLiveTranscoding 方法中的直播参数 LiveTranscoding
更新时,onTranscodingUpdated
回调会被触发并向主播报告更新信息。
setLiveTranscoding
方法设置转码参数 LiveTranscoding
时,不会触发此回调。rtcChannel | IChannel |
|
inlinevirtual |
本地发布流已回退为音频流回调。
如果你调用了 setLocalPublishFallbackOption 接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY ,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。
rtcChannel | IChannel |
isFallbackOrRecover |
|
|
inlinevirtual |
远端订阅流已回退为音频流回调。
如果你调用了 setRemoteSubscribeFallbackOption 接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY ,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
rtcChannel | IChannel |
uid | 远端用户 ID。 |
isFallbackOrRecover |
|
|
inlinevirtual |
网络连接状态已改变回调。
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态和引起网络状态改变的原因。
rtcChannel | IChannel |
state | 详见: CONNECTION_STATE_TYPE 。 |
reason | 详见: CONNECTION_CHANGED_REASON_TYPE 。 |
|
inlinevirtual |
代理连接状态回调。
通过该回调你可以监听 SDK 连接代理的状态。例如,setCloudProxy 或 setLocalAccessPoint 设置云代理或本地代理并成功加入频道后, SDK 会触发该回调报告用户 ID、连接的代理类型和从调用 joinChannel 到触发该回调经过的时间等。
rtcChannel | IChannel |
uid | 用户 ID。 |
proxyType | 连接上的代理类型。详见 PROXY_TYPE 。 |
localProxyIp | 本地代理的 IP 地址。当 proxyType 的值不为 3 时,该参数的值为空。 |
elapsed | 从调用 joinChannel 到 SDK 触发该回调的经过的时间(毫秒)。 |