#include <NERtcEngineDelegate.h>
◆ onAudioEffectFinished:
- (void) onAudioEffectFinished: |
|
(uint32_t) | effectId |
|
|
optionalrequired |
本地音效文件播放已结束回调。
- 参数
-
effectId | 指定音效的 ID。每个音效均有唯一的 ID。 |
◆ onAudioEffectTimestampUpdateWithId:timeStampMS:
- (void) onAudioEffectTimestampUpdateWithId: |
|
(uint32_t) | effectId |
timeStampMS: |
|
(uint64_t) | timeStampMS |
|
optionalrequired |
◆ onAudioMixingStateChanged:errorCode:
- (void) onAudioMixingStateChanged: |
|
(NERtcAudioMixingState) | state |
errorCode: |
|
(NERtcAudioMixingErrorCode) | errorCode |
|
optionalrequired |
本地用户的音乐文件播放状态改变回调。 调用 startAudioMixing 播放混音音乐文件后,当音乐文件的播放状态发生改变时,会触发该回调。
- 如果播放音乐文件正常结束,state 会返回相应的状态码 kNERtcAudioMixingStateFinished,error_code 返回 kNERtcAudioMixingErrorOK。
- 如果播放出错,则返回状态码 kNERtcAudioMixingStateFailed,error_code 返回相应的出错原因。
- 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL,error_code 都会返回 kNERtcAudioMixingErrorCanNotOpen。
- 参数
-
◆ onAudioMixingTimestampUpdate:
- (void) onAudioMixingTimestampUpdate: |
|
(uint64_t) | timeStampMS |
|
|
optionalrequired |
本地用户的音乐文件播放进度回调。 调用 startAudioMixingWithOption 播放混音音乐文件后,当音乐文件的播放进度改变时,会触发该回调。
- 参数
-
timeStampMS | 音乐文件播放进度,单位为毫秒。 |
◆ onEngineFirstAudioFrameDecoded:
- (void) onEngineFirstAudioFrameDecoded: |
|
(uint64_t) | userID |
|
|
optionalrequired |
已接收到远端音频首帧并完成解码的回调。
- 注解
- 该回调仅在接收远端用户的音频首帧并完成解码时会触发。
- 参数
-
userID | 远端用户 ID,指定是哪个用户的音频流。
|
◆ onEngineFirstVideoFrameDecoded:width:height:
- (void) onEngineFirstVideoFrameDecoded: |
|
(uint64_t) | userID |
width: |
|
(uint32_t) | width |
height: |
|
(uint32_t) | height |
|
optionalrequired |
◆ onEngineFirstVideoFrameDecoded:width:height:streamType:
- (void) onEngineFirstVideoFrameDecoded: |
|
(uint64_t) | userID |
width: |
|
(uint32_t) | width |
height: |
|
(uint32_t) | height |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
已接收到远端视频首帧并完成解码的回调。
当 SDK 收到远端视频并解码成功时,会触发该回调。应用层可在该回调中设置此用户的视频画布。
- 自从
- V4.6.20
- 参数说明
参数名称 | 类型 | 描述 |
userID | uint64_t | 用户 ID,提示是哪个用户的视频流。 |
width | uint32_t | 首帧视频的宽度,单位为 px。 |
height | uint32_t | 首帧视频的高度,单位为 px。 |
type | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
◆ onEngineFirstVideoFrameRender:width:height:elapsed:streamType:
- (void) onEngineFirstVideoFrameRender: |
|
(uint64_t) | userID |
width: |
|
(uint32_t) | width |
height: |
|
(uint32_t) | height |
elapsed: |
|
(uint64_t) | elapsed |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
已接收到远端视频首帧并完成渲染的回调。
当 SDK 第一帧远端视频流并渲染成功时,会触发该回调。
- 自从
- V5.5.10
- 参数说明
参数名称 | 类型 | 描述 |
userID | uint64_t | 用户 ID,提示是哪个用户的视频流。 |
width | uint32_t | 首帧视频的宽度,单位为 px。 |
height | uint32_t | 首帧视频的高度,单位为 px。 |
elapsed | uint64_t | 从订阅动作开始到发生此事件过去的时间(毫秒)。 |
type | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
◆ onLocalAudioVolumeIndication:
- (void) onLocalAudioVolumeIndication: |
|
(int) | volume |
|
|
optionalrequired |
提示房间内本地用户瞬时音量的回调。 该回调默认禁用。可以通过 enableAudioVolumeIndication 方法开启。 开启后,本地用户说话,SDK 会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。 如果本地用户将自己静音,即调用了 muteLocalAudio,SDK 不再报告该回调。
- 参数
-
◆ onLocalAudioVolumeIndication:withVad:
◆ onNERtcCameraExposureChanged:
- (void) onNERtcCameraExposureChanged: |
|
(CGPoint) | exposurePoint |
|
|
optionalrequired |
摄像头曝光区域已改变回调。 该回调是由本地用户调用 setCameraExposurePosition 方法改变曝光位置触发的。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 参数
-
◆ onNERtcCameraFocusChanged:
- (void) onNERtcCameraFocusChanged: |
|
(CGPoint) | focusPoint |
|
|
optionalrequired |
摄像头对焦区域已改变回调。 该回调表示相机的对焦区域发生了改变。 该回调是由本地用户调用 setCameraFocusPosition 方法改变对焦位置触发的。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 参数
-
◆ onNERtcEngineAudioDeviceStateChangeWithDeviceID:deviceType:deviceState:
- (void) onNERtcEngineAudioDeviceStateChangeWithDeviceID: |
|
(NSString *) | deviceID |
deviceType: |
|
(NERtcAudioDeviceType) | deviceType |
deviceState: |
|
(NERtcAudioDeviceState) | deviceState |
|
optionalrequired |
◆ onNERtcEngineAudioHasHowling
- (void) onNERtcEngineAudioHasHowling |
|
|
|
|
optionalrequired |
- 弃用
- 该回调将在未来版本中废弃,请使用
- (void)onNERtcEngineAudioHasHowling:flag
. 检测到啸叫回调。 当声源与扩音设备之间因距离过近时,可能会产生啸叫。NERTC SDK 支持啸叫检测,当检测到有啸叫信号产生的时候,自动触发该回调直至啸叫停止。App 应用层可以在收到啸叫回调时,提示用户静音麦克风,或直接静音麦克风。
- 注解
- 啸叫检测功能一般用于语音聊天室或在线会议等纯人声环境,不推荐在包含背景音乐的娱乐场景中使用。
◆ onNERtcEngineAudioHasHowling:
- (void) onNERtcEngineAudioHasHowling: |
|
(BOOL) | flag |
|
|
optionalrequired |
检测啸叫回调, 调用 JoinChannel 成功后,会一直周期性触发该回调, 不建议在该回调里做频繁的 API 调用和耗时操作。 当声源与扩音设备之间因距离过近时,可能会产生啸叫。NERTC SDK 支持啸叫检测,当检测到有啸叫信号产生的时候,参数 flag 为 YES,无啸叫时参数 flag 为 NO。App 应用层可以在有啸叫时,提示用户静音麦克风,或直接静音麦克风。
- 注解
- 啸叫检测功能一般用于语音聊天室或在线会议等纯人声环境,不推荐在包含背景音乐的娱乐场景中使用。
- 参数
-
◆ onNERtcEngineAudioRecording:filePath:
- (void) onNERtcEngineAudioRecording: |
|
(NERtcAudioRecordingCode) | code |
filePath: |
|
(NSString *) | filePath |
|
optionalrequired |
◆ onNERtcEngineChannelMediaRelayStateDidChange:channelName:
- (void) onNERtcEngineChannelMediaRelayStateDidChange: |
|
(NERtcChannelMediaRelayState) | state |
channelName: |
|
(NSString *) | channelName |
|
optionalrequired |
◆ onNERtcEngineDidReceiveChannelMediaRelayEvent:channelName:error:
- (void) onNERtcEngineDidReceiveChannelMediaRelayEvent: |
|
(NERtcChannelMediaRelayEvent) | event |
channelName: |
|
(NSString *) | channelName |
error: |
|
(NERtcError) | error |
|
optionalrequired |
◆ onNERtcEngineFirstAudioDataDidReceiveWithUserID:
- (void) onNERtcEngineFirstAudioDataDidReceiveWithUserID: |
|
(uint64_t) | userID |
|
|
optionalrequired |
已接收到远端音频首帧回调。
- 参数
-
userID | 远端用户 ID,指定是哪个用户的音频流。
|
◆ onNERtcEngineFirstVideoDataDidReceiveWithUserID:
- (void) onNERtcEngineFirstVideoDataDidReceiveWithUserID: |
|
(uint64_t) | userID |
|
|
optionalrequired |
◆ onNERtcEngineFirstVideoDataDidReceiveWithUserID:streamType:
已显示远端视频首帧的回调。
- 自从
- V4.6.20
- 注解
- 以下场景都会触发该回调:
- SDK 收到远端第一帧视频并解码成功时。
- 重新调用 enableLocalVideo 开启本地视频采集。(V5.5.10 版本开始)
- 停止屏幕共享后再重新调用 startScreenCapture 接口共享屏幕。(V5.5.10 版本开始)
- 参数说明
参数名称 | 类型 | 描述 |
userID | uint64_t | 用户 ID,提示是哪个用户的视频流。 |
type | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
◆ onNERtcEngineHardwareResourceReleased:
- (void) onNERtcEngineHardwareResourceReleased: |
|
(NERtcError) | result |
|
|
optionalrequired |
硬件资源已释放回调。 如果回调结果成功,表示 SDK 已经完全释放了硬件资源。 您可以在收到回调成功后重新配置或者使用硬件资源,例如 AVAudioSession 等配置。
- 参数
-
◆ onNERtcEngineLabFeatureDidCallbackWithKey:param:
- (void) onNERtcEngineLabFeatureDidCallbackWithKey: |
|
(NSString *) | key |
param: |
|
(id) | param |
|
optionalrequired |
实验功能回调接口,用于回调一些非正式的事件及数据通知
- 自从
- V5.5.0
- 参数
-
key | 功能对应的 key |
param | 回调的参数,每个 key 对应的参数,数据类型不一样,需要转换后使用,详情请 提交工单 联系网易云信技术支持工程师 |
◆ onNERtcEngineLastmileProbeTestResult:
通话前网络上下行 Last mile 质量探测报告回调。
该回调描述本地用户在加入房间前的 last mile 网络探测详细报告,报告中通过客观数据反馈上下行网络质量,包括网络抖动、丢包率等数据。您可以通过该回调客观预测本地用户在音视频通话中的网络状态。
在调用 startLastmileProbeTest 之后,SDK 会在约 30 秒内返回该回调。
- 自从
- V4.5.0
- 参数
-
result | 上下行 Last mile 质量探测结果。 |
◆ onNERtcEngineLastmileQuality:
- (void) onNERtcEngineLastmileQuality: |
|
(NERtcNetworkQuality) | quality |
|
|
optionalrequired |
通话前网络上下行 last mile 质量状态回调。
该回调描述本地用户在加入房间前的 last mile 网络探测的结果,以打分形式描述上下行网络质量的主观体验,您可以通过该回调预估本地用户在音视频通话中的网络体验。
在调用 startLastmileProbeTest 之后,SDK 会在约 5 秒内返回该回调。
- 自从
- V4.5.0
- 参数
-
quality | 网络上下行质量,基于上下行网络的丢包率和抖动计算,探测结果主要反映上行网络的状态。 |
◆ onNERtcEngineLocalFirstAudioPacketSent:
- (void) onNERtcEngineLocalFirstAudioPacketSent: |
|
(NERtcAudioStreamType) | streamType |
|
|
optionalrequired |
本地第一帧音频发送到远端的回调。
- 自从
- V4.6.61
- 触发时机
- 当推流端加入房间或开启本地音频采集后,NERTC SDK 会开始进行音频编码,并向远端发送本地的音频数据,当成功将本地音频的第一帧发往远端时,会触发此回调。
当调用 enableLocalAudio 或 enableMediaPub 重新发布音频流也会触发该回调。
- 参数说明
参数名称 | 类型 | 描述 |
streamType | see #NERtcAudioStreamType | 音频通道类型:
-
kNERtcAudioStreamMain :音频流主流。
-
kNERtcAudioStreamSub :音频流辅流。
|
◆ onNERtcEngineLocalPublishFallbackToAudioOnly:streamType:
- (void) onNERtcEngineLocalPublishFallbackToAudioOnly: |
|
(BOOL) | isFallback |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
本地发布流已回退为音频流、或已恢复为音视频流回调。 如果您调用了设置本地推流回退选项 setLocalPublishFallbackOption 接口,并将 option 设置为 kNERtcStreamFallbackOptionAudioOnly 后,当上行网络环境不理想、本地发布的媒体流回退为音频流时,或当上行网络改善、媒体流恢复为音视频流时,会触发该回调。
- 自从
- V4.3.0
- 参数
-
isFallback | 本地发布流已回退或已恢复。
- YES: 由于网络环境不理想,发布的媒体流已回退为音频流。
- NO:由于网络环境改善,从音频流恢复为音视频流。
|
streamType | 对应的视频流类型,即主流或辅流。详细信息请参考 NERtcStreamChannelType 。 |
◆ onNERtcEngineLocalVideoRenderSizeChanged:width:height:
- (void) onNERtcEngineLocalVideoRenderSizeChanged: |
|
(NERtcStreamChannelType) | streamType |
width: |
|
(uint32_t) | width |
height: |
|
(uint32_t) | height |
|
optionalrequired |
本地视频预览的分辨率变化回调, 与是否进入房间的状态无关,与硬件状态有关,也适用于预览。
- 自从
- V5.4.1
- 触发时机
- 当本地视频的分辨率发生变化,会触发此回调。当调用 SetCaptureConfig 设置采集分辨率或调用 SetVideoConfig 设置编码属性时可以触发该回调。回调的分辨率宽和高为本地预览的宽和高,和实际编码发送的分辨率不一定一致
- 业务场景
- 开发者可以根据该回调的分辨率来动态调整预览视图的比例等。
- 参数说明
参数名称 | 类型 | 描述 |
streamType | NERtcStreamChannelType | 当前的流类型。
-
kNERtcStreamChannelTypeMainStream:视频主流。
-
kNERtcStreamChannelTypeSubStream:视频辅流。
|
width | uint32_t | 首帧视频的宽,单位为 px。 |
height | uint32_t | 首帧视频的高,单位为 px。 |
◆ onNERtcEngineLocalVideoWatermarkStateWithStreamType:state:
- (void) onNERtcEngineLocalVideoWatermarkStateWithStreamType: |
|
(NERtcStreamChannelType) | type |
state: |
|
(NERtcLocalVideoWatermarkState) | state |
|
optionalrequired |
本地视频水印生效结果回调。
- 自从
- V4.6.10
- 参数
-
◆ onNERtcEngineNetworkConnectionTypeChanged:
- (void) onNERtcEngineNetworkConnectionTypeChanged: |
|
(NERtcNetworkConnectionType) | newConnectionType |
|
|
optionalrequired |
本地网络类型已改变回调。 本地网络连接类型发生改变时,SDK 会触发该回调,并在回调中声明当前正在使用的网络连接类型。
- 参数
-
◆ onNERtcEnginePermissionKeyWillExpire
- (void) onNERtcEnginePermissionKeyWillExpire |
|
|
|
|
optionalrequired |
◆ onNERtcEngineRemoteSubscribeFallbackToAudioOnly:isFallback:streamType:
- (void) onNERtcEngineRemoteSubscribeFallbackToAudioOnly: |
|
(uint64_t) | uid |
isFallback: |
|
(BOOL) | isFallback |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
订阅的远端流已回退为音频流、或已恢复为音视频流回调。 如果您调用了设置远端订阅流回退选项 setRemoteSubscribeFallbackOption 接口并将 option 设置 kNERtcStreamFallbackOptionAudioOnly 后,当下行网络环境不理想、仅接收远端音频流时,或当下行网络改善、恢复订阅音视频流时,会触发该回调。
- 自从
- V4.3.0
- 参数
-
uid | 远端用户 ID。 |
isFallback | 远端订阅流已回退或恢复:
- YES: 由于网络环境不理想,订阅的远端流已回退为音频流。
- NO:由于网络环境改善,订阅的远端流从音频流恢复为音视频流。
|
streamType | 对应的视频流类型,即主流或辅流。详细信息请参考 NERtcStreamChannelType 。 |
◆ onNERtcEngineRemoteVideoSizeDidChangedWithUserID:width:height:streamType:
- (void) onNERtcEngineRemoteVideoSizeDidChangedWithUserID: |
|
(uint64_t) | userID |
width: |
|
(uint32_t) | width |
height: |
|
(uint32_t) | height |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
接收的远端视频分辨率变化回调。
- 自从
- V5.4.1
- 触发时机
当远端用户视频流的分辨率发生变化时,会触发此回调,例如推流端调用 SetVideoConfig 更改了编码分辨率设置,本地会收到该远端用户分辨率变化通知。
- 业务场景
- 开发者可根据视频流的最新分辨率来更新 UI。
- 参数说明
参数名称 | 类型 | 描述 |
uid | uint64_t | 远端用户 ID,指定是哪个用户的视频流。 |
type | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
width | uint32_t | 视频采集的宽,单位为 px |
height | uint32_t | 视频采集的高,单位为 px |
◆ onNERtcEngineUpdatePermissionKey:error:timeout:
- (void) onNERtcEngineUpdatePermissionKey: |
|
(NSString *) | key |
error: |
|
(NERtcError) | error |
timeout: |
|
(NSUInteger) | timeout |
|
optionalrequired |
◆ onNERtcEngineUser:audioMuted:
- (void) onNERtcEngineUser: |
|
(uint64_t) | userID |
audioMuted: |
|
(BOOL) | muted |
|
optionalrequired |
远端用户暂停或恢复发送音频流的回调。
- 注解
- 该回调由远端用户调用 muteLocalAudio 方法开启或关闭音频发送触发。
- 参数
-
userID | 用户 ID,提示是哪个用户的音频流。 |
muted | 是否暂停发送音频流。 |
◆ onNERtcEngineUser:videoMuted:
- (void) onNERtcEngineUser: |
|
(uint64_t) | userID |
videoMuted: |
|
(BOOL) | muted |
|
optionalrequired |
◆ onNERtcEngineUser:videoMuted:streamType:
- (void) onNERtcEngineUser: |
|
(uint64_t) | userID |
videoMuted: |
|
(BOOL) | muted |
streamType: |
|
(NERtcStreamChannelType) | streamType |
|
optionalrequired |
远端用户暂停或恢复发送视频回调。
当远端用户调用 INERtcEngineEx#muteLocalVideo:streamType:
方法取消或者恢复发布视频流时,SDK 会触发该回调向本地用户通知远端用户的发流情况。
- 自从
- V4.6.20
- 参数说明
参数名称 | 类型 | 描述 |
userID | uint64_t | 用户 ID,提示是哪个用户的视频流。 |
muted | BOOL | 是否暂停发送视频流:
-
YES:该用户已暂停发送视频流。
-
NO:该用户已恢复发送视频流。
|
streamType | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
◆ onNERtcEngineUserDataBufferedAmountChanged:previousAmount:
- (void) onNERtcEngineUserDataBufferedAmountChanged: |
|
(uint64_t) | userID |
previousAmount: |
|
(uint64_t) | previousAmount |
|
optionalrequired |
远端用户数据通道 buffer 变更回调。
- 参数
-
userID | 远端用户 ID。 |
previousAmount | 变更前大小。 |
◆ onNERtcEngineUserDataDidStart:
- (void) onNERtcEngineUserDataDidStart: |
|
(uint64_t) | userID |
|
|
optionalrequired |
远端用户开启数据通道的回调。
- 参数
-
- 自从
- V5.0.0
◆ onNERtcEngineUserDataDidStop:
- (void) onNERtcEngineUserDataDidStop: |
|
(uint64_t) | userID |
|
|
optionalrequired |
◆ onNERtcEngineUserDataReceiveMessage:data:
- (void) onNERtcEngineUserDataReceiveMessage: |
|
(uint64_t) | userID |
data: |
|
(NSData *) | data |
|
optionalrequired |
◆ onNERtcEngineUserDataStateChanged:
- (void) onNERtcEngineUserDataStateChanged: |
|
(uint64_t) | userID |
|
|
optionalrequired |
◆ onNERtcEngineUserVideoProfileDidUpdate:maxProfile:
- (void) onNERtcEngineUserVideoProfileDidUpdate: |
|
(uint64_t) | userID |
maxProfile: |
|
(NERtcVideoProfileType) | maxProfile |
|
optional |
远端用户视频编码配置已更新回调。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 参数
-
◆ onNERtcEngineVideoDeviceStateChangeWithDeviceID:deviceType:deviceState:
- (void) onNERtcEngineVideoDeviceStateChangeWithDeviceID: |
|
(NSString *) | deviceID |
deviceType: |
|
(NERtcVideoDeviceType) | deviceType |
deviceState: |
|
(NERtcVideoDeviceState) | deviceState |
|
optionalrequired |
视频设备变化回调。 该回调提示系统视频设备状态发生改变,比如被拔出或移除。如果设备已使用外接摄像头采集,外接摄像头被拔开后,视频会中断。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 参数
-
◆ onNERtcEngineVirtualBackgroundSourceEnabled:reason:
- (void) onNERtcEngineVirtualBackgroundSourceEnabled: |
|
(BOOL) | enabled |
reason: |
|
(NERtcVirtualBackgroundSourceStateReason) | reason |
|
optionalrequired |
◆ onRemoteAudioVolumeIndication:totalVolume:
- (void) onRemoteAudioVolumeIndication: |
|
(nullable NSArray< NERtcAudioVolumeInfo * > *) | speakers |
totalVolume: |
|
(int) | totalVolume |
|
optionalrequired |
提示房间内谁正在说话及说话者瞬时音量的回调。 该回调默认为关闭状态。可以通过 enableAudioVolumeIndication 方法开启。开启后,无论房间内是否有人说话,SDK 都会按 enableAudioVolumeIndication 方法中设置的时间间隔触发该回调。 在返回的数组中:
- 如果有 uid 出现在上次返回的数组中,但不在本次返回的数组中,则默认该 uid 对应的远端用户没有说话。
- 如果 volume 为 0,表示该用户没有说话。
- 如果数组为空,则表示此时远端没有人说话。
- 参数
-
该协议的文档由以下文件生成: