NERtc Linux SDK  V5.4.10
nertc::IRtcChannelEventHandler类 参考

#include <nertc_channel_event_handler.h>

Public 成员函数

virtual void onError (int error_code, const char *msg)
 
virtual void onWarning (int warn_code, const char *msg)
 
virtual void onApiCallExecuted (const char *api_name, NERtcErrorCode error, const char *message)
 
virtual void onJoinChannel (channel_id_t cid, uid_t uid, NERtcErrorCode result, uint64_t elapsed)
 
virtual void onReconnectingStart (channel_id_t cid, uid_t uid)
 
virtual void onConnectionStateChange (NERtcConnectionStateType state, NERtcReasonConnectionChangedType reason)
 
virtual void onRejoinChannel (channel_id_t cid, uid_t uid, NERtcErrorCode result, uint64_t elapsed)
 
virtual void onLeaveChannel (NERtcErrorCode result)
 
virtual void onDisconnect (NERtcErrorCode reason)
 
virtual void onClientRoleChanged (NERtcClientRole oldRole, NERtcClientRole newRole)
 
virtual void onUserJoined (uid_t uid, const char *user_name)
 
virtual void onUserJoined (uid_t uid, const char *user_name, NERtcUserJoinExtraInfo join_extra_info)
 
virtual void onUserLeft (uid_t uid, NERtcSessionLeaveReason reason)
 
virtual void onUserLeft (uid_t uid, NERtcSessionLeaveReason reason, NERtcUserJoinExtraInfo leave_extra_info)
 
virtual void onUserAudioStart (uid_t uid)
 
virtual void onUserAudioStop (uid_t uid)
 
virtual void onUserAudioMute (uid_t uid, bool mute)
 
virtual void onUserSubStreamAudioStart (uid_t uid)
 
virtual void onUserSubStreamAudioStop (uid_t uid)
 
virtual void onUserSubStreamAudioMute (uid_t uid, bool mute)
 
virtual void onUserVideoStart (uid_t uid, NERtcVideoProfileType max_profile)
 
virtual void onUserVideoStop (uid_t uid)
 
virtual void onUserVideoMute (uid_t uid, bool mute)
 
virtual void onUserVideoMute (NERtcVideoStreamType videoStreamType, uid_t uid, bool mute)
 
virtual void onUserSubStreamVideoStart (uid_t uid, NERtcVideoProfileType max_profile)
 
virtual void onUserSubStreamVideoStop (uid_t uid)
 
virtual void onScreenCaptureStatus (NERtcScreenCaptureStatus status)
 
virtual void onScreenCaptureSourceDataUpdate (NERtcScreenCaptureSourceData data)
 
virtual void onFirstAudioDataReceived (uid_t uid)
 
virtual void onFirstVideoDataReceived (uid_t uid)
 
virtual void onFirstVideoDataReceived (NERtcVideoStreamType type, uid_t uid)
 
virtual void onRemoteVideoReceiveSizeChanged (uid_t uid, NERtcVideoStreamType type, uint32_t width, uint32_t height)
 
virtual void onLocalVideoRenderSizeChanged (NERtcVideoStreamType type, uint32_t width, uint32_t height)
 
virtual void onFirstAudioFrameDecoded (uid_t uid)
 
virtual void onFirstVideoFrameDecoded (uid_t uid, uint32_t width, uint32_t height)
 
virtual void onFirstVideoFrameDecoded (NERtcVideoStreamType type, uid_t uid, uint32_t width, uint32_t height)
 
virtual void onLocalAudioVolumeIndication (int volume)
 
virtual void onLocalAudioVolumeIndication (int volume, bool enable_vad)
 
virtual void onRemoteAudioVolumeIndication (const NERtcAudioVolumeInfo *speakers, unsigned int speaker_number, int total_volume)
 
virtual void onAddLiveStreamTask (const char *task_id, const char *url, int error_code)
 
virtual void onUpdateLiveStreamTask (const char *task_id, const char *url, int error_code)
 
virtual void onRemoveLiveStreamTask (const char *task_id, int error_code)
 
virtual void onLiveStreamState (const char *task_id, const char *url, NERtcLiveStreamStateCode state)
 
virtual void onRecvSEIMsg (uid_t uid, const char *data, uint32_t dataSize)
 
virtual void onMediaRelayStateChanged (NERtcChannelMediaRelayState state, const char *channel_name)
 
virtual void onMediaRelayEvent (NERtcChannelMediaRelayEvent event, const char *channel_name, NERtcErrorCode error)
 
virtual void onLocalPublishFallbackToAudioOnly (bool is_fallback, NERtcVideoStreamType stream_type)
 
virtual void onRemoteSubscribeFallbackToAudioOnly (uid_t uid, bool is_fallback, NERtcVideoStreamType stream_type)
 
virtual void onMediaRightChange (bool is_audio_banned, bool is_video_banned)
 
virtual void onPermissionKeyWillExpire ()
 
virtual void onUpdatePermissionKey (const char *key, NERtcErrorCode error, int timeout)
 

详细描述

IRtcChannelEventHandler 回调接口类用于 SDK 向 App 发送IRtcChannel回调事件通知,App 通过继承该接口类的方法获取 SDK IRtcChannel的事件通知。
接口类的所有方法都有缺省(空)实现,App 可以根据需要只继承关心的事件。在回调方法中,App 不应该做耗时或者调用可能会引起阻塞的 API(如开启音频或视频等),否则可能影响 SDK 的运行。

成员函数说明

◆ onAddLiveStreamTask()

virtual void nertc::IRtcChannelEventHandler::onAddLiveStreamTask ( const char *  task_id,
const char *  url,
int  error_code 
)
inlinevirtual

通知添加直播任务结果。
该回调异步返回 addLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState

参数
task_id任务id
url推流地址
error_code结果
  • 0: 调用成功;
  • 其他: 调用失败。

◆ onApiCallExecuted()

virtual void nertc::IRtcChannelEventHandler::onApiCallExecuted ( const char *  api_name,
NERtcErrorCode  error,
const char *  message 
)
inlinevirtual

API调用结束回调。
该回调方法表示 SDK 执行完了一个用户的API调用。

参数
api_nameAPI名称
errorAPI执行结果错误码。
messageAPI执行结果描述。

◆ onClientRoleChanged()

virtual void nertc::IRtcChannelEventHandler::onClientRoleChanged ( NERtcClientRole  oldRole,
NERtcClientRole  newRole 
)
inlinevirtual

直播场景下用户角色已切换回调。
本地用户加入房间后,通过 setClientRole 切换用户角色后会触发此回调。例如主播切换为观众、从观众切换为主播。

注解
直播场景下,如果您在加入房间后调用该方法切换用户角色,调用成功后,会触发以下回调:
  • 主播切观众,本端触发 onClientRoleChanged 回调,远端触发 onUserLeft 回调。
  • 观众切主播,本端触发 onClientRoleChanged 回调,远端触发 onUserJoined 回调。
参数
oldRole切换前的角色。详细信息请参考 NERtcClientRole
newRole切换后的角色。详细信息请参考 NERtcClientRole

◆ onConnectionStateChange()

virtual void nertc::IRtcChannelEventHandler::onConnectionStateChange ( NERtcConnectionStateType  state,
NERtcReasonConnectionChangedType  reason 
)
inlinevirtual

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

自从
V4.5.0
参数
state当前的房间连接状态。
reason引起当前房间连接状态发生改变的原因。

◆ onDisconnect()

virtual void nertc::IRtcChannelEventHandler::onDisconnect ( NERtcErrorCode  reason)
inlinevirtual

与服务器连接中断,可能原因包括:网络连接失败、服务器关闭该房间、用户被踢出房间等。

注解
  • SDK 在调用 joinChannel 加入房间成功后,如果和服务器失去连接且连续 3 次重连失败,就会触发该回调。
  • 由于非网络原因,客户端可能会和服务器失去连接,此时SDK无需自动重连,直接触发此回调方法。
参数
reason连接中断原因。

◆ onError()

virtual void nertc::IRtcChannelEventHandler::onError ( int  error_code,
const char *  msg 
)
inlinevirtual

发生错误回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK上报的错误意味着SDK无法自动恢复,需要 App 干预或提示用户。

参数
error_code错误码。详细信息请参考 NERtcDMErrorCode
msg错误描述。

◆ onFirstAudioDataReceived()

virtual void nertc::IRtcChannelEventHandler::onFirstAudioDataReceived ( uid_t  uid)
inlinevirtual

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

参数
uid远端用户 ID,指定是哪个用户的音频流。

◆ onFirstAudioFrameDecoded()

virtual void nertc::IRtcChannelEventHandler::onFirstAudioFrameDecoded ( uid_t  uid)
inlinevirtual

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

参数
uid远端用户 ID,指定是哪个用户的音频流。

◆ onFirstVideoDataReceived() [1/2]

virtual void nertc::IRtcChannelEventHandler::onFirstVideoDataReceived ( NERtcVideoStreamType  type,
uid_t  uid 
)
inlinevirtual

已显示首帧远端视频的回调。
当远端视频的第一帧画面显示在视窗上时,会触发此回调。

自从
V4.6.20
参数说明
参数名称 类型 描述
type NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
uid uid_t 用户 ID,提示是哪个用户的视频流。

◆ onFirstVideoDataReceived() [2/2]

virtual void nertc::IRtcChannelEventHandler::onFirstVideoDataReceived ( uid_t  uid)
inlinevirtual

已显示首帧远端视频的回调。
第一帧远端视频显示在视图上时,触发此调用。

注解
该回调仅在显示远端用户的主流视频首帧时会触发,若您希望同时接收到接收辅流的相关通知,请监听 onFirstVideoDataReceived 回调。
参数
uid用户 ID,指定是哪个用户的视频流。

◆ onFirstVideoFrameDecoded() [1/2]

virtual void nertc::IRtcChannelEventHandler::onFirstVideoFrameDecoded ( NERtcVideoStreamType  type,
uid_t  uid,
uint32_t  width,
uint32_t  height 
)
inlinevirtual

已接收到远端视频首帧并完成解码的回调。
当 SDK 收到远端视频的第一帧并解码成功时,会触发该回调。应用层可在该回调中设置此用户的视频画布。

自从
V4.6.20
参数说明
参数名称 类型 描述
type NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
uid uid_t 用户 ID,提示是哪个用户的视频流。
width uint32_t 首帧视频的宽度,单位为 px。
height uint32_t 首帧视频的高度,单位为 px。

◆ onFirstVideoFrameDecoded() [2/2]

virtual void nertc::IRtcChannelEventHandler::onFirstVideoFrameDecoded ( uid_t  uid,
uint32_t  width,
uint32_t  height 
)
inlinevirtual

已接收到远端视频并完成解码的回调。
引擎收到第一帧远端视频流并解码成功时,触发此调用。

注解
该回调仅在接收远端用户的主流视频首帧并完成解码时会触发,若您希望同时接收到接收辅流的相关通知,请监听 onFirstVideoFrameDecoded 回调。
参数
uid用户 ID,指定是哪个用户的视频流。
width视频流宽(px)。
height视频流高(px)。

◆ onJoinChannel()

virtual void nertc::IRtcChannelEventHandler::onJoinChannel ( channel_id_t  cid,
uid_t  uid,
NERtcErrorCode  result,
uint64_t  elapsed 
)
inlinevirtual

加入房间回调,表示客户端已经登入服务器。

参数
cid客户端加入的房间 ID。
uid用户 ID。 如果在 joinChannel 方法中指定了 uid,此处会返回指定的 ID; 如果未指定 uid(joinChannel 时uid=0),此处将返回云信服务器自动分配的 ID。
result返回结果。
elapsed从 joinChannel 开始到发生此事件过去的时间,单位为毫秒。

◆ onLeaveChannel()

virtual void nertc::IRtcChannelEventHandler::onLeaveChannel ( NERtcErrorCode  result)
inlinevirtual

退出房间回调。
App 调用 leaveChannel 方法后,SDK 提示 App 退出房间是否成功。

参数
result返回结果。错误码请参考 NERtcErrorCode 。在快速切换房间时 code 为 kNERtcErrChannelLeaveBySwitchAction。

◆ onLiveStreamState()

virtual void nertc::IRtcChannelEventHandler::onLiveStreamState ( const char *  task_id,
const char *  url,
NERtcLiveStreamStateCode  state 
)
inlinevirtual

通知直播推流状态

注解
该回调在通话中有效。
参数
task_id任务id
url推流地址
stateNERtcLiveStreamStateCode, 直播推流状态
  • 505: 推流中;
  • 506: 推流失败;
  • 511: 推流结束;

◆ onLocalAudioVolumeIndication() [1/2]

virtual void nertc::IRtcChannelEventHandler::onLocalAudioVolumeIndication ( int  volume)
inlinevirtual
弃用:
该回调方法已废弃。 提示房间内本地用户瞬时音量的回调。
参数
volume(混音后的)音量,取值范围为 [0,100]。

◆ onLocalAudioVolumeIndication() [2/2]

virtual void nertc::IRtcChannelEventHandler::onLocalAudioVolumeIndication ( int  volume,
bool  enable_vad 
)
inlinevirtual

提示房间内本地用户瞬时音量的回调。

  • 该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启。开启后,本地用户说话,SDK 会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。
  • 如果本地用户将自己静音(调用了 muteLocalAudioStream),SDK 将音量设置为 0 后回调给应用层。
    自从
    V4.6.10
    参数
    volume混音后的音量,取值范围为 0 ~ 100。
    enable_vad是否检测到人声。

◆ onLocalPublishFallbackToAudioOnly()

virtual void nertc::IRtcChannelEventHandler::onLocalPublishFallbackToAudioOnly ( bool  is_fallback,
NERtcVideoStreamType  stream_type 
)
inlinevirtual

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

自从
V4.5.0
参数
is_fallback本地发布流已回退或已恢复。
  • true: 由于网络环境不理想,发布的媒体流已回退为音频流。
  • false:由于网络环境改善,从音频流恢复为音视频流。
stream_type对应的视频流类型,即主流或辅流。

◆ onLocalVideoRenderSizeChanged()

virtual void nertc::IRtcChannelEventHandler::onLocalVideoRenderSizeChanged ( NERtcVideoStreamType  type,
uint32_t  width,
uint32_t  height 
)
inlinevirtual

本地视频预览的分辨率变化回调, 与是否进入房间的状态无关,与硬件状态有关,也适用于预览

自从
V5.4.1
触发时机

当本地视频的分辨率发生变化,会触发此回调。当调用 SetCaptureConfig 设置采集分辨率或调用 SetVideoConfig 设置编码属性时可以触发该回调。回调的分辨率宽和高为本地预览的宽和高,和实际编码发送的分辨率不一定一致
业务场景
开发者可以根据该回调的分辨率来动态调整预览视图的比例等。
参数说明
参数名称 类型 描述
type see NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
width uint32_t 视频采集的宽,单位为 px
height uint32_t 视频采集的高,单位为 px

◆ onMediaRelayEvent()

virtual void nertc::IRtcChannelEventHandler::onMediaRelayEvent ( NERtcChannelMediaRelayEvent  event,
const char *  channel_name,
NERtcErrorCode  error 
)
inlinevirtual

媒体流相关转发事件回调。

自从
V4.5.0
参数
event当前媒体流转发事件。详细信息请参考 NERtcChannelMediaRelayEvent
channel_name转发的目标房间名。
error相关错误码。详细信息请参考 NERtcErrorCode

◆ onMediaRelayStateChanged()

virtual void nertc::IRtcChannelEventHandler::onMediaRelayStateChanged ( NERtcChannelMediaRelayState  state,
const char *  channel_name 
)
inlinevirtual

跨房间媒体流转发状态发生改变回调。

自从
V4.5.0
参数
state当前跨房间媒体流转发状态。详细信息请参考 NERtcChannelMediaRelayState
channel_name媒体流转发的目标房间名。

◆ onMediaRightChange()

virtual void nertc::IRtcChannelEventHandler::onMediaRightChange ( bool  is_audio_banned,
bool  is_video_banned 
)
inlinevirtual

服务端禁言音视频权限变化回调。

自从
v4.6.0
参数
is_audio_banned是否禁用音频。
  • true:禁用音频。
  • false:取消禁用音频。
is_video_banned是否禁用视频。
  • true:禁用视频。
  • false:取消禁用视频。

◆ onPermissionKeyWillExpire()

virtual void nertc::IRtcChannelEventHandler::onPermissionKeyWillExpire ( )
inlinevirtual

权限密钥即将过期事件回调。

  • 由于 PermissionKey 具有一定的时效,在通话过程中如果 PermissionKey 即将失效,SDK 会提前 30 秒触发该回调,提醒用户更新 PermissionKey。
    自从
    V4.6.29
    使用前提
    请在 IRtcChannelEventHandler 接口类中通过 setChannelEventHandler 接口设置回调监听。
    相关接口
    在收到此回调后可以调用 updatePermissionKey 方法更新权限密钥。

◆ onReconnectingStart()

virtual void nertc::IRtcChannelEventHandler::onReconnectingStart ( channel_id_t  cid,
uid_t  uid 
)
inlinevirtual

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

参数
cid房间 ID。
uid用户 ID。

◆ onRecvSEIMsg()

virtual void nertc::IRtcChannelEventHandler::onRecvSEIMsg ( uid_t  uid,
const char *  data,
uint32_t  dataSize 
)
inlinevirtual

收到远端流的 SEI 内容回调。
当远端成功发送 SEI 后,本端会收到此回调。

参数
[in]uid发送该 sei 的用户 id
[in]data接收到的 sei 数据
[in]dataSize接收到 sei 数据的大小

◆ onRejoinChannel()

virtual void nertc::IRtcChannelEventHandler::onRejoinChannel ( channel_id_t  cid,
uid_t  uid,
NERtcErrorCode  result,
uint64_t  elapsed 
)
inlinevirtual

重新加入房间回调。
在弱网环境下,若客户端和服务器失去连接,SDK会自动重连。自动重连成功后触发此回调方法。

参数
cid客户端加入的房间 ID。
uid用户 ID。
result返回结果。
elapsed从开始重连到发生此事件过去的时间,单位为毫秒。

◆ onRemoteAudioVolumeIndication()

virtual void nertc::IRtcChannelEventHandler::onRemoteAudioVolumeIndication ( const NERtcAudioVolumeInfo speakers,
unsigned int  speaker_number,
int  total_volume 
)
inlinevirtual

提示房间内谁正在说话及说话者瞬时音量的回调。
该回调默认为关闭状态。可以通过 enableAudioVolumeIndication 方法开启。开启后,无论房间内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。
在返回的 speakers 数组中:

  • 如果有 uid 出现在上次返回的数组中,但不在本次返回的数组中,则默认该 uid 对应的远端用户没有说话。
  • 如果volume 为 0,表示该用户没有说话。
    • 如果speakers 数组为空,则表示此时远端没有人说话。
      参数
      speakers每个说话者的用户 ID 和音量信息的数组: NERtcAudioVolumeInfo
      speaker_numberspeakers 数组的大小,即说话者的人数。
      total_volume(混音后的)总音量,取值范围为 [0,100]。

◆ onRemoteSubscribeFallbackToAudioOnly()

virtual void nertc::IRtcChannelEventHandler::onRemoteSubscribeFallbackToAudioOnly ( uid_t  uid,
bool  is_fallback,
NERtcVideoStreamType  stream_type 
)
inlinevirtual

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

自从
V4.5.0
参数
uid远端用户的 ID。
is_fallback远端订阅流已回退或恢复:
  • true: 由于网络环境不理想,订阅的远端流已回退为音频流。
  • false:由于网络环境改善,订阅的远端流从音频流恢复为音视频流。
stream_type对应的视频流类型,即主流或辅流。

◆ onRemoteVideoReceiveSizeChanged()

virtual void nertc::IRtcChannelEventHandler::onRemoteVideoReceiveSizeChanged ( uid_t  uid,
NERtcVideoStreamType  type,
uint32_t  width,
uint32_t  height 
)
inlinevirtual

接收的远端视频分辨率变化回调。

自从
V5.4.1
触发时机

当远端用户视频流的分辨率发生变化时,会触发此回调,例如推流端调用 SetVideoConfig 更改了编码分辨率设置,本地会收到该远端用户分辨率变化通知。
业务场景
开发者可根据视频流的最新分辨率来更新 UI。
参数说明
参数名称 类型 描述
uid uid_t 远端用户ID,指定是哪个用户的视频流
type see NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
width uint32_t 视频采集的宽,单位为 px
height uint32_t 视频采集的高,单位为 px

◆ onRemoveLiveStreamTask()

virtual void nertc::IRtcChannelEventHandler::onRemoveLiveStreamTask ( const char *  task_id,
int  error_code 
)
inlinevirtual

通知删除直播任务结果。
该回调异步返回 removeLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState

参数
task_id任务id
error_code结果
  • 0: 调用成功;
  • 其他: 调用失败。

◆ onScreenCaptureSourceDataUpdate()

virtual void nertc::IRtcChannelEventHandler::onScreenCaptureSourceDataUpdate ( NERtcScreenCaptureSourceData  data)
inlinevirtual

屏幕共享源采集范围等变化的回调。如果要app层实现屏幕分享高亮框实现的话,需要注意在调用::startScreenCaptureByWindowId, startScreenCaptureByDisplayId, startScreenCaptureByScreenRect时,参数NERtcScreenCaptureParameters中enable_high_light设置false,关闭SDK提供的高亮框,以免出现两个高亮框的情况。

自从
V5.4.x
注解
自 V5.4.x 支持此回调。
参数
data屏幕共享源变化的信息。详细信息请参考 #NERtcScreenCaptureSourceData 。

◆ onScreenCaptureStatus()

virtual void nertc::IRtcChannelEventHandler::onScreenCaptureStatus ( NERtcScreenCaptureStatus  status)
inlinevirtual

屏幕共享状态变化回调。

自从
V4.5.0
注解
macOS 平台自 V4.6.0 支持此回调。

◆ onUpdateLiveStreamTask()

virtual void nertc::IRtcChannelEventHandler::onUpdateLiveStreamTask ( const char *  task_id,
const char *  url,
int  error_code 
)
inlinevirtual

通知更新直播任务结果。 该回调异步返回 updateLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState

参数
task_id任务id
url推流地址
error_code结果
  • 0: 调用成功;
  • 其他: 调用失败。

◆ onUpdatePermissionKey()

virtual void nertc::IRtcChannelEventHandler::onUpdatePermissionKey ( const char *  key,
NERtcErrorCode  error,
int  timeout 
)
inlinevirtual

更新权限密钥事件回调。

  • 调用 updatePermissionKey 方法主动更新权限密钥后,SDK 会触发该回调,返回权限密钥更新的结果。
    自从
    V4.6.29
    使用前提
    请在 IRtcChannelEventHandler 接口类中通过 setChannelEventHandler 接口设置回调监听。
    参数说明
    参数名称 类型 描述
    key const char* 新的权限密钥。
    error NERtcErrorCode 错误码。
    • kNERtcErrChannelPermissionKeyError(30901):权限密钥错误。
    • kNERtcErrChannelPermissionKeyTimeout(30902):权限密钥超时。
    timeout int 更新后的权限密钥剩余有效时间。单位为秒。

◆ onUserAudioMute()

virtual void nertc::IRtcChannelEventHandler::onUserAudioMute ( uid_t  uid,
bool  mute 
)
inlinevirtual

远端用户是否静音的回调。

注解
该回调由远端用户调用 muteLocalAudioStream 方法开启或关闭音频发送触发。
参数
uid远端用户ID。
mute是否静音。

◆ onUserAudioStart()

virtual void nertc::IRtcChannelEventHandler::onUserAudioStart ( uid_t  uid)
inlinevirtual

远端用户开启音频的回调。

注解
该回调由远端用户调用 enableLocalAudio 方法开启音频采集和发送触发。
参数
uid远端用户ID。

◆ onUserAudioStop()

virtual void nertc::IRtcChannelEventHandler::onUserAudioStop ( uid_t  uid)
inlinevirtual

远端用户停用音频的回调。

注解
该回调由远端用户调用 enableLocalAudio 方法关闭音频采集和发送触发。
参数
uid远端用户ID。

◆ onUserJoined() [1/2]

virtual void nertc::IRtcChannelEventHandler::onUserJoined ( uid_t  uid,
const char *  user_name 
)
inlinevirtual

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

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

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

  • 远端用户调用 joinChannel 方法加入房间。
  • 远端用户网络中断后重新加入房间。
    注解
    直播场景下:
    • 主播间能相互收到新主播加入频道的回调,并能获得该主播的用户 ID。
    • 观众也能收到新主播加入频道的回调,并能获得该主播的用户 ID。
    • 当 Web 端加入直播频道时,只要 Web 端有推流,SDK 会默认该 Web 端为主播,并触发该回调。
    参数
    uid新加入房间的远端用户 ID。
    user_name新加入房间的远端用户名。

◆ onUserJoined() [2/2]

virtual void nertc::IRtcChannelEventHandler::onUserJoined ( uid_t  uid,
const char *  user_name,
NERtcUserJoinExtraInfo  join_extra_info 
)
inlinevirtual

远端用户加入房间事件回调。 远端用户加入房间或断网重连后,SDK 会触发该回调,可以通过返回的用户 ID 订阅对应用户发布的音、视频流。

  • 通信场景下,该回调通知有远端用户加入了房间,并返回新加入用户的 ID;若该用户加入之前,已有其他用户在房间中,该新加入的用户也会收到这些已有用户加入房间的回调。
  • 直播场景下,该回调通知有主播加入了房间,并返回该主播的用户 ID;若该用户加入之前,已经有主播在频道中了,新加入的用户也会收到已有主播加入房间的回调。
    自从
    V4.6.29
    使用前提
    请在 IRtcChannelEventHandler 接口类中通过 setChannelEventHandler 接口设置回调监听。
    注解

同类型事件发生后,onUserJoined 回调可能会与该回调同时触发,建议您仅注册此回调,不能同时处理两个回调。

  • 当 Web 端用户加入直播场景的房间中,只要该用户发布了媒体流,SDK 会默认该用户为主播,并触发此回调。
    参数说明
    参数名称 类型 描述
    uid uid_t 新加入房间的远端用户 ID。
    join_extra_info NERtcUserJoinExtraInfo 该远端用户加入的额外信息。

◆ onUserLeft() [1/2]

virtual void nertc::IRtcChannelEventHandler::onUserLeft ( uid_t  uid,
NERtcSessionLeaveReason  reason 
)
inlinevirtual

远端用户离开当前房间的回调。
提示有远端用户离开了房间(或掉线)。通常情况下,用户离开房间有两个原因,即正常离开和超时掉线:

  • 正常离开的时候,远端用户会收到正常离开房间的回调提醒,判断用户离开房间。
  • 超时掉线的依据是,在一定时间内(40~50s),用户没有收到对方的任何数据包,则判定为对方掉线。
    参数
    uid离开房间的远端用户 ID。
    reason远端用户离开原因。
  • kNERtcSessionLeaveNormal(0):正常离开。
  • kNERtcSessionLeaveForFailOver(1):用户断线导致离开房间。
  • kNERTCSessionLeaveForUpdate(2):用户因 Failover 导致离开房间,仅 SDK 内部使用。
  • kNERtcSessionLeaveForKick(3):用户被踢导致离开房间。
  • kNERtcSessionLeaveTimeout(4):用户超时退出房间。

◆ onUserLeft() [2/2]

virtual void nertc::IRtcChannelEventHandler::onUserLeft ( uid_t  uid,
NERtcSessionLeaveReason  reason,
NERtcUserJoinExtraInfo  leave_extra_info 
)
inlinevirtual

远端用户离开房间事件回调。

  • 远端用户离开房间或掉线(在 40 ~ 50 秒内本端用户未收到远端用户的任何数据包)后,SDK 会触发该回调。
    自从
    V4.6.29
    使用前提
    请在 IRtcChannelEventHandler 接口类中通过 nertc::IRtcChannel::setChannelEventHandler "setChannelEventHandler" 接口设置回调监听。
    注解
    同类型事件发生后,onUserLeft 回调可能会与该回调同时触发,建议您仅注册此回调,不能同时处理两个回调。
    参数说明
    参数名称 类型 描述
    uid uid_t 离开房间的远端用户 ID。
    reason /ref nertc::NERtcSessionLeaveReason 该远端用户离开的原因,更多请参考 NERtcErrorCode
    • kNERtcSessionLeaveNormal(0):正常离开。
    • kNERtcSessionLeaveForFailOver(1):用户断线导致离开房间。
    • kNERTCSessionLeaveForUpdate(2):用户因 Failover 导致离开房间,仅 SDK 内部使用。
    • kNERtcSessionLeaveForKick(3):用户被踢导致离开房间。
    • kNERtcSessionLeaveTimeout(4):用户超时退出房间。
    leave_extra_info nertc::NERtcUserJoinExtraInfo 该远端用户离开的额外信息。

◆ onUserSubStreamAudioMute()

virtual void nertc::IRtcChannelEventHandler::onUserSubStreamAudioMute ( uid_t  uid,
bool  mute 
)
inlinevirtual

远端用户暂停或恢复发送音频辅流的回调。

自从
V4.6.10
参数
uid远端用户ID。
mute是否停止发送音频辅流。
  • true:该用户已暂停发送音频辅流。
  • false:该用户已恢复发送音频辅流。

◆ onUserSubStreamAudioStart()

virtual void nertc::IRtcChannelEventHandler::onUserSubStreamAudioStart ( uid_t  uid)
inlinevirtual

远端用户开启音频辅流回调。

自从
V4.6.10
参数
uid远端用户 ID。

◆ onUserSubStreamAudioStop()

virtual void nertc::IRtcChannelEventHandler::onUserSubStreamAudioStop ( uid_t  uid)
inlinevirtual

远端用户停用音频辅流回调。

自从
V4.6.10
参数
uid远端用户 ID。

◆ onUserSubStreamVideoStart()

virtual void nertc::IRtcChannelEventHandler::onUserSubStreamVideoStart ( uid_t  uid,
NERtcVideoProfileType  max_profile 
)
inlinevirtual

远端用户开启屏幕共享辅流通道的回调。

参数
uid远端用户 ID。
max_profile最大分辨率。

◆ onUserSubStreamVideoStop()

virtual void nertc::IRtcChannelEventHandler::onUserSubStreamVideoStop ( uid_t  uid)
inlinevirtual

远端用户停止屏幕共享辅流通道的回调。

参数
uid远端用户ID。

◆ onUserVideoMute() [1/2]

virtual void nertc::IRtcChannelEventHandler::onUserVideoMute ( NERtcVideoStreamType  videoStreamType,
uid_t  uid,
bool  mute 
)
inlinevirtual

远端用户暂停或恢复发送视频回调。
当远端用户调用 muteLocalVideoStream 方法取消或者恢复发布视频流时,SDK 会触发该回调向本地用户通知远端用户的发流情况。

自从
V4.6.20
参数说明
参数名称 类型 描述
videoStreamType NERtcVideoStreamType 视频通道类型:
  • kNERTCVideoStreamMain:主流。
  • kNERtcVideoStreamSub:辅流。
uid uid_t 用户 ID,提示是哪个用户的视频流。
mute bool 是否暂停发送视频流:
  • true:该用户已暂停发送视频流。
  • false:该用户已恢复发送视频流。

◆ onUserVideoMute() [2/2]

virtual void nertc::IRtcChannelEventHandler::onUserVideoMute ( uid_t  uid,
bool  mute 
)
inlinevirtual

远端用户暂停或恢复发送视频流的回调。
当远端用户调用 muteLocalVideoStream 取消或者恢复发布视频流时,SDK会触发该回调向本地用户报告远程用户的发流状况。

注解
该回调仅在远端用户的视频主流状态改变时会触发,若您希望同时接收到远端用户视频辅流状态变更的通知,请监听 onUserVideoMute 回调。
参数
uid远端用户ID。
mute是否暂停发送视频流。
  • true:该用户已暂停发送视频流。 = false:该用户已恢复发送视频流。

◆ onUserVideoStart()

virtual void nertc::IRtcChannelEventHandler::onUserVideoStart ( uid_t  uid,
NERtcVideoProfileType  max_profile 
)
inlinevirtual

远端用户开启视频的回调。
启用后,用户可以进行视频通话或直播。

参数
uid远端用户ID。
max_profile视频编码的分辨率,用于衡量编码质量。

◆ onUserVideoStop()

virtual void nertc::IRtcChannelEventHandler::onUserVideoStop ( uid_t  uid)
inlinevirtual

远端用户停用视频的回调。
关闭后,用户只能进行语音通话或者直播。

参数
uid远端用户ID。

◆ onWarning()

virtual void nertc::IRtcChannelEventHandler::onWarning ( int  warn_code,
const char *  msg 
)
inlinevirtual

发生警告回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。

参数
warn_code警告码。详细信息请参考 NERtcWarnCode
msg警告描述。

该类的文档由以下文件生成: