NERtc macOS SDK V5.6.30
|
#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 | onFirstVideoFrameRender (NERtcVideoStreamType type, uid_t uid, uint32_t width, uint32_t height, uint64_t elapsed) |
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) |
virtual void | onLabFeatureCallback (const char *key, const char *param) |
IRtcChannelEventHandler 回调接口类用于 SDK 向 App 发送 IRtcChannel 回调事件通知,App 通过继承该接口类的方法获取 SDK IRtcChannel 的事件通知。
接口类的所有方法都有缺省(空)实现,App 可以根据需要只继承关心的事件。在回调方法中,App 不应该做耗时或者调用可能会引起阻塞的 API(如开启音频或视频等),否则可能影响 SDK 的运行。
|
inlinevirtual |
通知添加直播任务结果。
该回调异步返回 addLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState
task_id | 任务 ID |
url | 推流地址 |
error_code | 结果
|
|
inlinevirtual |
API 调用结束回调。
该回调方法表示 SDK 执行完了一个用户的 API 调用。
api_name | API 名称 |
error | API 执行结果错误码。 |
message | API 执行结果描述。 |
|
inlinevirtual |
直播场景下用户角色已切换回调。
本地用户加入房间后,通过 setClientRole 切换用户角色后会触发此回调。例如主播切换为观众、从观众切换为主播。
oldRole | 切换前的角色。详细信息请参考 NERtcClientRole 。 |
newRole | 切换后的角色。详细信息请参考 NERtcClientRole 。 |
|
inlinevirtual |
房间连接状态已改变回调。
该回调在房间连接状态发生改变的时候触发,并告知用户当前的房间连接状态和引起房间状态改变的原因。
state | 当前的房间连接状态。 |
reason | 引起当前房间连接状态发生改变的原因。 |
|
inlinevirtual |
与服务器连接中断,可能原因包括:网络连接失败、服务器关闭该房间、用户被踢出房间等。
reason | 连接中断原因。 |
|
inlinevirtual |
发生错误回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
error_code | 错误码。详细信息请参考 NERtcDMErrorCode |
msg | 错误信息。 |
|
inlinevirtual |
已接收到远端音频首帧的回调。
uid | 远端用户 ID,指定是哪个用户的音频流。 |
|
inlinevirtual |
已解码远端音频首帧的回调。
uid | 远端用户 ID,指定是哪个用户的音频流。 |
|
inlinevirtual |
已显示首帧远端视频的回调。
当远端视频的第一帧画面显示在视窗上时,会触发此回调。
参数名称 | 类型 | 描述 |
---|---|---|
type | NERtcVideoStreamType | 视频通道类型:
|
uid | uid_t | 用户 ID,提示是哪个用户的视频流。 |
|
inlinevirtual |
已显示首帧远端视频的回调。
第一帧远端视频显示在视图上时,触发此调用。
uid | 用户 ID,指定是哪个用户的视频流。 |
|
inlinevirtual |
已接收到远端视频首帧并完成解码的回调。
当 SDK 收到远端视频并解码成功时,会触发该回调。应用层可在该回调中设置此用户的视频画布。
参数名称 | 类型 | 描述 |
---|---|---|
type | NERtcVideoStreamType | 视频通道类型:
|
uid | uid_t | 用户 ID,提示是哪个用户的视频流。 |
width | uint32_t | 首帧视频的宽度,单位为 px。 |
height | uint32_t | 首帧视频的高度,单位为 px。 |
|
inlinevirtual |
已接收到远端视频并完成解码的回调。
引擎收到第一帧远端视频流并解码成功时,触发此调用。
uid | 用户 ID,指定是哪个用户的视频流。 |
width | 视频流宽(px)。 |
height | 视频流高(px)。 |
|
inlinevirtual |
已接收到远端视频首帧并完成渲染的回调。
当 SDK 收到远端视频的第一帧并渲染成功时,会触发该回调。
参数名称 | 类型 | 描述 |
---|---|---|
type | see NERtcVideoStreamType | 视频通道类型:
|
uid | uid_t | 用户 ID,提示是哪个用户的视频流。 |
width | uint32_t | 首帧视频的宽度,单位为 px。 |
height | uint32_t | 首帧视频的高度,单位为 px。 |
elapsed | uint64_t | 从订阅动作开始到发生此事件过去的时间(毫秒)。 |
|
inlinevirtual |
加入房间回调,表示客户端已经登入服务器。
cid | 客户端加入的房间 ID。 |
uid | 用户 ID。 如果在 joinChannel 方法中指定了 uid,此处会返回指定的 ID; 如果未指定 uid(joinChannel 时 uid=0),此处将返回云信服务器自动分配的 ID。 |
result | 返回结果。 |
elapsed | 从 joinChannel 开始到发生此事件过去的时间,单位为毫秒。 |
|
inlinevirtual |
实验功能回调接口,用于回调一些非正式的事件及数据通知。
key | 返回回调类型。 |
param | 值内容。对应字符串的参数值,如果是结构体对象,需要转成 json 格式。 |
|
inlinevirtual |
退出房间回调。
App 调用 leaveChannel 方法后,SDK 提示 App 退出房间是否成功。
result | 返回结果。错误码请参考 #NERtcErrorCode。在快速切换房间时 code 为 kNERtcErrChannelLeaveBySwitchAction。 |
|
inlinevirtual |
通知直播推流状态
task_id | 任务 ID |
url | 推流地址 |
state | NERtcLiveStreamStateCode, 直播推流状态
|
|
inlinevirtual |
volume | (混音后的)音量,取值范围为 [0,100]。 |
|
inlinevirtual |
提示房间内本地用户瞬时音量的回调。
volume | 混音后的音量,取值范围为 0 ~ 100。 |
enable_vad | 是否检测到人声。 |
|
inlinevirtual |
本地发布流已回退为音频流、或已恢复为音视频流回调。
如果您调用了设置本地推流回退选项 setLocalPublishFallbackOption 接口,并将 option 设置为 kNERtcStreamFallbackAudioOnly 后,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。
is_fallback | 本地发布流已回退或已恢复。
|
stream_type | 对应的视频流类型,即主流或辅流。 |
|
inlinevirtual |
本地视频预览的分辨率变化回调, 与是否进入房间的状态无关,与硬件状态有关,也适用于预览
参数名称 | 类型 | 描述 |
---|---|---|
type | see NERtcVideoStreamType | 视频通道类型:
|
width | uint32_t | 视频采集的宽,单位为 px |
height | uint32_t | 视频采集的高,单位为 px |
|
inlinevirtual |
媒体流相关转发事件回调。
event | 当前媒体流转发事件。详细信息请参考 #NERtcChannelMediaRelayEvent。 |
channel_name | 转发的目标房间名。 |
error | 相关错误码。详细信息请参考 #NERtcErrorCode。 |
|
inlinevirtual |
跨房间媒体流转发状态发生改变回调。
state | 当前跨房间媒体流转发状态。详细信息请参考 NERtcChannelMediaRelayState |
channel_name | 媒体流转发的目标房间名。 |
|
inlinevirtual |
服务端禁言音视频权限变化回调。
is_audio_banned | 是否禁用音频。
|
is_video_banned | 是否禁用视频。
|
|
inlinevirtual |
权限密钥即将过期事件回调。
|
inlinevirtual |
触发重连。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,开始自动重连后触发此回调。
cid | 房间 ID。 |
uid | 用户 ID。 |
|
inlinevirtual |
收到远端流的 SEI 内容回调。
当远端成功发送 SEI 后,本端会收到此回调。
[in] | uid | 发送该 sei 的用户 ID |
[in] | data | 接收到的 sei 数据 |
[in] | dataSize | 接收到 sei 数据的大小 |
|
inlinevirtual |
重新加入房间回调。
在弱网环境下,若客户端和服务器失去连接,SDK 会自动重连。自动重连成功后触发此回调方法。
cid | 客户端加入的房间 ID。 |
uid | 用户 ID。 |
result | 返回结果。 |
elapsed | 从开始重连到发生此事件过去的时间,单位为毫秒。 |
|
inlinevirtual |
提示房间内谁正在说话及说话者瞬时音量的回调。
该回调默认为关闭状态。可以通过 enableAudioVolumeIndication 方法开启。开启后,无论房间内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。
在返回的 speakers 数组中:
speakers | 每个说话者的用户 ID 和音量信息的数组: NERtcAudioVolumeInfo |
speaker_number | speakers 数组的大小,即说话者的人数。 |
total_volume | (混音后的)总音量,取值范围为 [0,100]。 |
|
inlinevirtual |
订阅的远端流已回退为音频流、或已恢复为音视频流回调。
如果您调用了设置远端订阅流回退选项 setRemoteSubscribeFallbackOption 接口并将 option 设置 kNERtcStreamFallbackAudioOnly 后,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
uid | 远端用户的 ID。 |
is_fallback | 远端订阅流已回退或恢复:
|
stream_type | 对应的视频流类型,即主流或辅流。 |
|
inlinevirtual |
接收的远端视频分辨率变化回调。
参数名称 | 类型 | 描述 |
---|---|---|
uid | uid_t | 远端用户 ID,指定是哪个用户的视频流。 |
type | see NERtcVideoStreamType | 视频通道类型:
|
width | uint32_t | 视频采集的宽,单位为 px |
height | uint32_t | 视频采集的高,单位为 px |
|
inlinevirtual |
通知删除直播任务结果。
该回调异步返回 removeLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState
task_id | 任务 ID |
error_code | 结果
|
|
inlinevirtual |
屏幕共享源采集范围等变化的回调。如果要 app 层实现屏幕分享高亮框实现的话,需要注意在调用::startScreenCaptureByWindowId, startScreenCaptureByDisplayId, startScreenCaptureByScreenRect 时,参数 NERtcScreenCaptureParameters 中 enable_high_light 设置 false,关闭 SDK 提供的高亮框,以免出现两个高亮框的情况。 enable_high_light 和 force_update_data 设置为 true 时,也会有变化回调。例如使用 SDK 高亮时,同时需要获取窗口区域,实现批注功能。
data | 屏幕共享源变化的信息。详细信息请参考 #NERtcScreenCaptureSourceData。 |
|
inlinevirtual |
屏幕共享状态变化回调。
|
inlinevirtual |
通知更新直播任务结果。 该回调异步返回 updateLiveStreamTask 接口的调用结果;实际推流状态参考 onLiveStreamState
task_id | 任务 ID |
url | 推流地址 |
error_code | 结果
|
|
inlinevirtual |
更新权限密钥事件回调。
参数名称 | 类型 | 描述 |
---|---|---|
key | const char* | 新的权限密钥。 |
error | NERtcErrorCode | 错误码。
|
timeout | int | 更新后的权限密钥剩余有效时间。单位为秒。 |
|
inlinevirtual |
远端用户是否静音的回调。
uid | 远端用户 ID。 |
mute | 是否静音。 |
|
inlinevirtual |
远端用户开启音频的回调。
uid | 远端用户 ID。 |
|
inlinevirtual |
远端用户停用音频的回调。
uid | 远端用户 ID。 |
|
inlinevirtual |
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
该回调在如下情况下会被触发:
uid | 新加入房间的远端用户 ID。 |
user_name | 新加入房间的远端用户名。 |
|
inlinevirtual |
远端用户加入房间事件回调。 远端用户加入房间或断网重连后,SDK 会触发该回调,可以通过返回的用户 ID 订阅对应用户发布的音、视频流。
同类型事件发生后,onUserJoined 回调可能会与该回调同时触发,建议您仅注册此回调,不能同时处理两个回调。
参数名称 | 类型 | 描述 |
---|---|---|
uid | uid_t | 新加入房间的远端用户 ID。 |
join_extra_info | NERtcUserJoinExtraInfo | 该远端用户加入的额外信息。 |
|
inlinevirtual |
远端用户离开当前房间的回调。
提示有远端用户离开了房间(或掉线)。通常情况下,用户离开房间有两个原因,即正常离开和超时掉线:
uid | 离开房间的远端用户 ID。 |
reason | 远端用户离开原因。 |
|
inlinevirtual |
远端用户离开房间事件回调。
参数名称 | 类型 | 描述 |
---|---|---|
uid | uid_t | 离开房间的远端用户 ID。 |
reason | /ref nertc::NERtcSessionLeaveReason | 该远端用户离开的原因,更多请参考 NERtcErrorCode。
|
leave_extra_info | nertc::NERtcUserJoinExtraInfo | 该远端用户离开的额外信息。 |
|
inlinevirtual |
远端用户暂停或恢复发送音频辅流的回调。
uid | 远端用户 ID。 |
mute | 是否停止发送音频辅流。
|
|
inlinevirtual |
远端用户开启音频辅流回调。
uid | 远端用户 ID。 |
|
inlinevirtual |
远端用户停用音频辅流回调。
uid | 远端用户 ID。 |
|
inlinevirtual |
远端用户开启屏幕共享辅流通道的回调。
uid | 远端用户 ID。 |
max_profile | 最大分辨率。 |
|
inlinevirtual |
远端用户停止屏幕共享辅流通道的回调。
uid | 远端用户 ID。 |
|
inlinevirtual |
远端用户暂停或恢复发送视频回调。
当远端用户调用 muteLocalVideoStream 方法取消或者恢复发布视频流时,SDK 会触发该回调向本地用户通知远端用户的发流情况。
参数名称 | 类型 | 描述 |
---|---|---|
videoStreamType | NERtcVideoStreamType | 视频通道类型:
|
uid | uid_t | 用户 ID,提示是哪个用户的视频流。 |
mute | bool | 是否暂停发送视频流:
|
|
inlinevirtual |
远端用户暂停或恢复发送视频流的回调。
当远端用户调用 muteLocalVideoStream 取消或者恢复发布视频流时,SDK 会触发该回调向本地用户报告远程用户的发流状况。
uid | 远端用户 ID。 |
mute | 是否暂停发送视频流。
|
|
inlinevirtual |
远端用户开启视频的回调。
启用后,用户可以进行视频通话或直播。
uid | 远端用户 ID。 |
max_profile | 视频编码的分辨率,用于衡量编码质量。 |
|
inlinevirtual |
远端用户停用视频的回调。
关闭后,用户只能进行语音通话或者直播。
uid | 远端用户 ID。 |
|
inlinevirtual |
发生警告回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)警告。通常情况下,SDK 上报的警告信息 App 可以忽略,SDK 会自动恢复。
warn_code | 警告码。详细信息请参考 NERtcWarnCode 。 |
msg | 警告描述。 |