Public 成员函数 | |
---|---|
void | onChannelWarning (RtcChannel rtcChannel, int warn) |
void | onChannelError (RtcChannel rtcChannel, int err) |
void | onJoinChannelSuccess (RtcChannel rtcChannel, int uid, int elapsed) |
void | onRejoinChannelSuccess (RtcChannel rtcChannel, int uid, int elapsed) |
void | onLeaveChannel (RtcChannel rtcChannel, RtcStats stats) |
void | onClientRoleChanged (RtcChannel rtcChannel, int oldRole, int newRole) |
void | onUserJoined (RtcChannel rtcChannel, int uid, int elapsed) |
void | onUserOffline (RtcChannel rtcChannel, int uid, int reason) |
void | onConnectionStateChanged (RtcChannel rtcChannel, int state, int reason) |
void | onConnectionLost (RtcChannel rtcChannel) |
void | onTokenPrivilegeWillExpire (RtcChannel rtcChannel, String token) |
void | onRequestToken (RtcChannel rtcChannel) |
void | onRtcStats (RtcChannel rtcChannel, RtcStats stats) |
void | onNetworkQuality (RtcChannel rtcChannel, int uid, int txQuality, int rxQuality) |
void | onRemoteVideoStats (RtcChannel rtcChannel, RemoteVideoStats stats) |
void | onRemoteAudioStats (RtcChannel rtcChannel, RemoteAudioStats stats) |
void | onRemoteAudioStateChanged (RtcChannel rtcChannel, int uid, int state, int reason, int elapsed) |
void | onAudioPublishStateChanged (RtcChannel rtcChannel, int oldState, int newState, int elapseSinceLastState) |
void | onVideoPublishStateChanged (RtcChannel rtcChannel, int oldState, int newState, int elapseSinceLastState) |
void | onAudioSubscribeStateChanged (RtcChannel rtcChannel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onVideoSubscribeStateChanged (RtcChannel rtcChannel, int uid, int oldState, int newState, int elapseSinceLastState) |
void | onActiveSpeaker (RtcChannel rtcChannel, int uid) |
void | onVideoSizeChanged (RtcChannel rtcChannel, int uid, int width, int height, int rotation) |
void | onRemoteVideoStateChanged (RtcChannel rtcChannel, int uid, int state, int reason, int elapsed) |
详细描述
成员函数说明
onChannelWarning()
void onChannelWarning (RtcChannel rtcChannel,int warn)
报告 RtcChannel 对象发生的警告码。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
warn | 警告代码,详细定义见 Warning Code |
onChannelError()
报告 RtcChannel 对象发生的警告码。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
err | 警告代码,详细定义见 Error Code |
onJoinChannelSuccess()
void onJoinChannelSuccess (RtcChannel rtcChannel,String uid,int elapsed)
加入频道回调。
如果在调用 joinChannel 加入频道时没有指定 uid,服务器会指定一个。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 用户 ID |
elapsed | 从 joinChannel 开始到发生此事件过去的时间(毫秒) |
onRejoinChannelSuccess()
void onRejoinChannelSuccess (RtcChannel rtcChannel,String uid,int elapsed)
重新加入频道回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 用户 ID |
elapsed | 从本地用户开始重连到触发该回调的时间(毫秒)。 |
onLeaveChannel()
void onLeaveChannel()
离开频道回调。
当用户通过调用 leaveChannel 方法成功离开频道时,SDK 会触发该回调。
App 可以通过该回调获取相关频道信息,如通话时长等数据。
-
参数
rtcChannel当前的 RtcChannel 对象。stats通话相关数据:RtcStats。
onClientRoleChanged()
void onClientRoleChanged(RtcChannel rtcChannel)
直播场景下用户角色已切换回调。如从观众切换为主播,反之亦然。
该回调由本地用户在加入频道后通过 setClientRole 改变用户角色触发的。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
oldRole | 切换前的角色 CLIENT_ROLE_BROADCASTER(1):主播。 CLIENT_ROLE_AUDIENCE(2):观众。 |
newRole | 切换后的角色 CLIENT_ROLE_BROADCASTER(1):主播 CLIENT_ROLE_AUDIENCE(2):观众 |
onUserJoined()
void onUserJoined(RtcChannel rtcChannel,String uid,int elapsed )
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
- 通信场景下,该回调提示有远端用户加入了频道,并返回新加入用户的 ID; 如果加入之前,已经有其他用户在频道中了,新加入的用户也会收到这些已有用户加入频道的回调。
- 直播场景下,该回调提示有主播加入了频道,并返回该主播的用户 ID。 如果在加入之前,已经有主播在频道中了,新加入的用户也会收到已有主播加入频道的回调. 建议连麦主播不超过 17 人。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 新加入频道的远端用户/主播 ID |
elapsed | 从本地用户调用 joinChannel 或 setClientRole(BROADCASTER) 到触发该回调的时间。 |
注解
直播场景下:
- 主播间能相互收到新主播加入频道的回调,并能获得该主播的用户 ID
- 观众也能收到新主播加入频道的回调,并能获得该主播的用户 ID
- 当 Web 端加入直播频道时,只要 Web 端有推流,SDK 会默认该 Web 端为主播,并触发该回调
onUserOffline()
void onUserOffline(RtcChannel rtcChannel,String uid,int reason )
远端用户(通信场景)/主播(直播场景)离开当前频道回调。
用户离开频道有两个原因,即正常离开和超时掉线:
- 正常离开时:远端用户/主播会收到类似“再见”的消息,接收此消息后,判断用户离开频道。
- 超时掉线:在一定时间内(约 20 秒),用户没有收到对方的任何数据包,则判定为对方掉线。 在网络较差的情况下,有可能会误报。AR 建议使用 AR 实时消息 SDK 系统来做可靠的掉线检测。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 离开频道或掉线的用户或主播 ID。 |
reason | 离线原因: USER_OFFLINE_QUIT(0):用户主动离开 USER_OFFLINE_DROPPED(1):因过长时间收不到对方数据包,超时掉线。注意:由于 SDK 使用的是不可靠通道,也有可能对方主动离开本方没收到对方离开消息而误判为超时掉线USER_OFFLINE_BECOME_AUDIENCE(2):直播场景下,用户身份从主播切换为观众 |
onConnectionStateChanged()
void onConnectionStateChanged(RtcChannel rtcChannel,int state,int reason )
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
state | 当前的网络连接状态: CONNECTION_STATE_DISCONNECTED(1):网络连接断开CONNECTION_STATE_CONNECTING(2):建立网络连接中 CONNECTION_STATE_CONNECTED(3):网络已连接 CONNECTION_STATE_RECONNECTING(4):重新建立网络连接中CONNECTION_STATE_FAILED(5):网络连接失败 |
reason | 引起当前网络连接状态发生改变的原因: CONNECTION_CHANGED_CONNECTING(0):建立网络连接中CONNECTION_CHANGED_JOIN_SUCCESS(1):成功加入频道CONNECTION_CHANGED_INTERRUPTED(2):网络连接中断CONNECTION_CHANGED_BANNED_BY_SERVER(3):网络连接被服务器禁止CONNECTION_CHANGED_JOIN_FAILED(4):加入频道失败CONNECTION_CHANGED_LEAVE_CHANNEL(5):离开频道CONNECTION_CHANGED_INVALID_APP_ID(6):不是有效的 APP ID。请更换有效的 APP ID 重新加入频道 CONNECTION_CHANGED_INVALID_CHANNEL_NAME(7):不是有效的频道名。请更换有效的频道名重新加入频道 CONNECTION_CHANGED_INVALID_TOKEN(8):生成的 Token 无效。一般有以下原因:在控制台上启用了 App Certificate,但加入频道未使用 Token。当启用了 App Certificate,必须使用 Token在调用 joinChannel 加入频道时指定的 uid 与生成 Token 时传入的 uid 不一致CONNECTION_CHANGED_TOKEN_EXPIRED(9):当前使用的 Token 过期,不再有效,需要重新在你的服务端申请生成 Token CONNECTION_CHANGED_REJECTED_BY_SERVER(10):此用户被服务器禁止CONNECTION_CHANGED_SETTING_PROXY_SERVER(11):由于设置了代理服务器,SDK 尝试重连CONNECTION_CHANGED_RENEW_TOKEN(12):更新 Token 引起网络连接状态改变CONNECTION_CHANGED_CLIENT_IP_ADDRESS_CHANGED(13):客户端 IP 地址变更,可能是由于网络类型,或网络运营商的 IP 或端口发生改变引起CONNECTION_CHANGED_KEEP_ALIVE_TIMEOUT(14):SDK 和服务器连接保活超时,进入自动重连状态 |
onConnectionLost()
void onConnectionLost(RtcChannel rtcChannel)
网络连接中断,且 SDK 无法在 10 秒内连接服务器回调。
SDK 在调用 joinChannel() 后,无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
#
onTokenPrivilegeWillExpire()void onTokenPrivilegeWillExpire(RtcChannel rtcChannel,String token)
Token 服务即将过期回调。
在调用 joinChannel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒 App 更新 Token。
当收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
token | 服务即将失效的 token。 |
onRequestToken()
void onRequestToken(RtcChannel rtcChannel)
Token 已过期回调。
如果在加入频道时指定了 token,由于 token 具有一定的时效,在通话过程中如果 token 已经失效,SDK 会触发该回调。
收到该回调时,你需要重新在服务端生成新的 Token,然后调用 renewToken 方法将新生成的 token 传给 SDK。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
onRtcStats()
void onRtcStats(RtcChannel rtcChannel,RtcStats stats)
当前通话统计回调。
该回调在通话过程中每两秒触发一次。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
stats | RtcChannel对象数据:RtcStats |
onNetworkQuality()
void onNetworkQuality (RtcChannel rtcChannel,String uid, int txQuality,int rxQuality )
通话中每个用户的网络上下行 last mile 质量报告回调。
该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 边缘服务器的网络状态。 该回调每 2 秒触发一次。如果远端有多个用户/主播,该回调每 2 秒会被触发多次。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。当 uid 为" 0" 时,返回的是本地用户的网络质量。 |
txQuality | 该用户的上行网络质量,基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。 假设上行码率是 1000 Kbps,那么支持 640 × 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。 QUALITY_UNKNOWN(0):质量未知。 QUALITY_EXCELLENT(1):质量极好。 QUALITY_GOOD(2):用户主观感觉和极好差不多,但码率可能略低于极好。 QUALITY_POOR(3):用户主观感受有瑕疵但不影响沟通。 QUALITY_BAD(4):勉强能沟通但不顺畅。 QUALITY_VBAD(5):网络质量非常差,基本不能沟通。 QUALITY_DOWN(6):网络连接断开,完全无法沟通。 QUALITY_DETECTING(8):SDK 正在探测网络质量。 |
rxQuality | 该用户的下行网络质量,基于下行网络的丢包率、平均往返延时和网络抖动计算。 QUALITY_UNKNOWN(0):质量未知。 QUALITY_EXCELLENT(1):质量极好。 QUALITY_GOOD(2):用户主观感觉和极好差不多,但码率可能略低于极好。 QUALITY_POOR(3):用户主观感受有瑕疵但不影响沟通。 QUALITY_BAD(4):勉强能沟通但不顺畅。 QUALITY_VBAD(5):网络质量非常差,基本不能沟通。 QUALITY_DOWN(6):网络连接断开,完全无法沟通。 QUALITY_DETECTING(8):SDK 正在探测网络质量。 |
onRemoteVideoStats()
void onRemoteVideoStats(RtcChannel rtcChannel,RemoteVideoStats stats)
通话中远端视频流的统计信息回调。
该回调描述远端用户在通话中端到端的视频流状态,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
stats | 远端视频统计数据,详细定义见 Remote Video Stats |
onRemoteAudioStats()
void onRemoteAudioStats(RtcChannel rtcChannel,RemoteAudioStats stats)
通话中远端音频流的统计信息回调。
该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
stats | 接收到的远端音频统计数据,详细定义见 Remote Audio Stats |
onRemoteAudioStateChanged()
void onRemoteAudioStateChanged(RtcChannel rtcChannel,String uid,int state,int reason,int elapsed)
远端音频状态发生改变回调。
远端用户(通信场景)或主播(直播场景)音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
注解
当频道内的用户(通信场景)或主播(直播场景)的人数超过 17 时,该回调可能不准确。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 发生音频状态改变的远端用户 ID |
state | 远端音频流状态:REMOTE_AUDIO_STATE_STOPPED(0):远端音频流默认初始状态。 在 REMOTE_AUDIO_REASON_LOCAL_MUTED(3)、REMOTE_AUDIO_REASON_REMOTE_MUTED(5) 或 REMOTE_AUDIO_REASON_REMOTE_OFFLINE(7) 的情况下,会报告该状态。REMOTE_AUDIO_STATE_STARTING(1):本地用户已接收远端音频首包REMOTE_AUDIO_STATE_DECODING(2):远端音频流正在解码,正常播放。在 REMOTE_AUDIO_REASON_NETWORK_RECOVERY(2)、 REMOTE_AUDIO_REASON_LOCAL_UNMUTED(4) 或 REMOTE_AUDIO_REASON_REMOTE_UNMUTED(6) 的情况下,会报告该状态REMOTE_AUDIO_STATE_FROZEN(3):远端音频流卡顿。在 REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1) 的情况下,会报告该状态REMOTE_AUDIO_STATE_FAILED(4):远端音频流播放失败。在 REMOTE_AUDIO_REASON_INTERNAL(0) 的情况下,会报告该状态 |
reason | 远端音频流状态改变的具体原因:REMOTE_AUDIO_REASON_INTERNAL(0):内部原因REMOTE_AUDIO_REASON_NETWORK_CONGESTION(1):网络阻塞REMOTE_AUDIO_REASON_NETWORK_RECOVERY(2):网络恢复正常REMOTE_AUDIO_REASON_LOCAL_MUTED(3):本地用户停止接收远端音频流或本地用户禁用音频模块REMOTE_AUDIO_REASON_LOCAL_UNMUTED(4):本地用户恢复接收远端音频流或本地用户启用音频模块REMOTE_AUDIO_REASON_REMOTE_MUTED(5):远端用户停止发送音频流或远端用户禁用音频模块REMOTE_AUDIO_REASON_REMOTE_UNMUTED(6):远端用户恢复发送音频流或远端用户启用音频模块REMOTE_AUDIO_REASON_REMOTE_OFFLINE(7):远端用户离开频道 |
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms |
onAudioPublishStateChanged()
void onAudioPublishStateChanged (RtcChannel rtcChannel,int oldState,int newState,int elapseSinceLastState)
音频发布状态改变回调。
发布状态包括:
- PUB_STATE_IDLE(0)
- PUB_STATE_NO_PUBLISHED(1)
- PUB_STATE_PUBLISHING(2)
- PUB_STATE_PUBLISHED(3)
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
onVideoPublishStateChanged()
void onVideoPublishStateChanged (RtcChannel rtcChannel,int oldState,int newState,int elapseSinceLastState)
视频发布状态改变回调。
发布状态包括:
- PUB_STATE_IDLE(0)
- PUB_STATE_NO_PUBLISHED(1)
- PUB_STATE_PUBLISHING(2)
- PUB_STATE_PUBLISHED(3)
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
onAudioSubscribeStateChanged()
void onAudioSubscribeStateChanged (RtcChannel rtcChannel,String uid,int oldState,int newState,int elapseSinceLastState)
音频订阅状态发生改变回调。
订阅状态包括:
- SUB_STATE_IDLE(0)
- SUB_STATE_NO_SUBSCRIBED(1)
- SUB_STATE_SUBSCRIBING(2)
- SUB_STATE_SUBSCRIBED(3)
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 远端用户的 ID。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
onVideoSubscribeStateChanged()
void onVideoSubscribeStateChanged (RtcChannel rtcChannel,String uid,int oldState,int newState,int elapseSinceLastState)
视频订阅状态发生改变回调。
订阅状态包括:
- SUB_STATE_IDLE(0)
- SUB_STATE_NO_SUBSCRIBED(1)
- SUB_STATE_SUBSCRIBING(2)
- SUB_STATE_SUBSCRIBED(3)
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 远端用户的 ID。 |
oldState | 之前的发布状态。 |
newState | 当前的发布状态。 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
onActiveSpeaker()
void onActiveSpeaker(RtcChannel rtcChannel,String uid)
监测到活跃用户回调。
该回调获取当前时间段内累积音量最大者。如果该用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 当前时间段声音最大的用户的 uid。如果返回的 uid 为 "0",则默认为本地用户。 |
注解
你需要开启 enableAudioVolumeIndication 方法才能收到该回调uid 返回的是当前时间段内声音最大的用户 ID,而不是瞬时声音最大的用户 ID
onVideoSizeChanged()
void onVideoSizeChanged(RtcChannel rtcChannel,String uid,int width,int height,int rotation)
本地或远端视频大小或旋转信息发生改变回调。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 图像尺寸和旋转信息发生变化的用户 ID。如果返回的 uid 为"0",则表示本地用户 |
width | 视频流的宽度(像素) |
height | 视频流的高度(像素) |
rotation | 旋转信息 [0,360] |
onRemoteVideoStateChanged()
void onRemoteVideoStateChanged(RtcChannel rtcChannel,String uid,int state,int reason,int elapsed)
远端用户视频状态发生已变化回调。
注解
当频道内的用户(通信场景)或主播(直播场景)的人数超过 17 时,该回调可能不准确。
参数 | 描述 |
---|---|
rtcChannel | 当前的 RtcChannel 对象 |
uid | 发生视频状态改变的远端用户 ID |
state | 远端视频流状态:REMOTE_VIDEO_STATE_STOPPED(0):远端视频默认初始状态。在 REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED(3)、REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5) 或 REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE(7) 的情况下,会报告该状态。REMOTE_VIDEO_STATE_STARTING(1):本地用户已接收远端视频首包REMOTE_VIDEO_STATE_DECODING(2):远端视频流正在解码,正常播放。在 REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY(2)、REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED(4)、REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6) 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY(9) 的情况下,会报告该状态REMOTE_VIDEO_STATE_FROZEN(3):远端视频流卡顿。在 REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION(1) 或 REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK(8) 的情况下,会报告该状态REMOTE_VIDEO_STATE_FAILED(4):远端视频流播放失败。在 REMOTE_VIDEO_STATE_REASON_INTERNAL(0) 的情况下,会报告该状态。 |
reason | 远端视频流状态改变的具体原因:REMOTE_VIDEO_STATE_REASON_INTERNAL(0):内部原因REMOTE_VIDEO_STATE_REASON_NETWORK_CONGESTION(1):网络阻塞REMOTE_VIDEO_STATE_REASON_NETWORK_RECOVERY(2):网络恢复正常REMOTE_VIDEO_STATE_REASON_LOCAL_MUTED(3):本地用户停止接收远端视频流或本地用户禁用视频模块REMOTE_VIDEO_STATE_REASON_LOCAL_UNMUTED(4):本地用户恢复接收远端视频流或本地用户启动视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5):远端用户停止发送视频流或远端用户禁用视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6):远端用户恢复发送视频流或远端用户启用视频模块REMOTE_VIDEO_STATE_REASON_REMOTE_OFFLINE(7):远端用户离开频道REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK(8):远端视频流已回退为音频流REMOTE_VIDEO_STATE_REASON_AUDIO_FALLBACK_RECOVERY(9):回退的远端音频流恢复为视频流 |
elapsed | 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为 ms |