NERtc iOS SDK V5.6.30
|
NERtcEngine 的常用接口。 更多...
#include <INERtcEngine.h>
构造函数 | |
(NERtcConnectionStateType) | - connectionState |
获取当前房间连接状态。 | |
(int) | - setupEngineWithContext: |
创建 NERtc 实例。 通过本接口可以实现创建 NERtc 实例并初始化 NERTC SDK 服务。 | |
(int) | - setEngineEventDelegate: |
设置 SDK 主回调,调用此方法后会更新之前 setupEngineWithContext 及 setEngineEventDelegate 设置的回调。 如果设置为空指针, 那么表示清空回调。 注意: 需要在初始化之后调用, destroyEngine 之后自动失效。 | |
(int) | - setDelegateQueue: |
设置驱动 NERtcEngineDelegateEx 事件回调队列 | |
(int) | - joinChannelWithToken:channelName:myUid:completion: |
加入音视频房间。 通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。 | |
(int) | - joinChannelWithToken:channelName:myUid:channelOptions:completion: |
加入音视频房间。 通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。 | |
(int) | - leaveChannel |
离开音视频房间。 通过本接口可以实现挂断或退出通话,并释放本房间内的相关资源。 | |
(int) | - switchChannelWithToken:channelName:completion: |
快速切换音视频房间。 通过此接口可以实现当房间场景为直播场景时,用户从当前房间快速切换至另一个房间。 | |
(int) | - switchChannelWithToken:channelName:channelOptions:completion: |
快速切换音视频房间。 房间场景为直播场景时,房间中角色为观众的成员可以调用该方法从当前房间快速切换至另一个房间。 成功调用该方切换房间后,本端会收到离开房间的回调 onNERtcEngineDidLeaveChannelWithResult;远端用户会收到 onNERtcEngineUserDidLeaveWithUserID 和 onNERtcEngineUserDidJoinWithUserID 的回调。 | |
(int) | - enableLocalAudio: |
开启/关闭本地音频采集和发送。 通过本接口可以实现开启或关闭本地语音功能,进行本地音频采集及处理。 | |
(int) | - enableLocalVideo: |
开启或关闭本地视频的采集与发送。 通过本接口可以实现开启或关闭本地视频,不影响接收远端视频。 | |
(int) | - enableLocalVideo:streamType: |
开启或关闭本地视频的采集与发送。 通过主流或辅流视频通道进行本地视频流的采集与发送。 | |
(int) | - enableMediaPub:withMediaType: |
开启或关闭本地媒体流(主流)的发送。 该方法用于开始或停止向网络发送本地音频或视频数据。 该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。 | |
(int) | - setChannelProfile: |
设置房间场景。 通过此接口可以实现设置房间场景为通话(默认)、直播场景、视频 1 对 1 呼叫场景、语聊房场景等。针对不同场景采取的优化策略不同,如通话场景侧重语音流畅度,直播场景侧重视频清晰度。 | |
(int) | - setLocalVideoConfig: |
设置视频编码属性。 通过此接口可以设置视频主流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考 设置视频属性。 | |
(int) | - setLocalVideoConfig:streamType: |
设置视频编码属性。 通过此接口可以设置视频主流或辅流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数。 | |
(int) | - setAudioProfile:scenario: |
设置音频编码属性。 通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。 | |
(int) | - setAudioProfile: |
设置音频编码属性。 通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等。 | |
(int) | - setAudioScenario: |
设置音频应用场景 通过此接口可以实现设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景。也可以使用 通过 INERtcEngine#setChannelProfile: 设置其他场景,包括 1v1 呼叫场景、清晰度较高的 1v1 呼叫场景、语聊房场景、清晰度较高的语聊房场景、会议场景。 | |
(int) | - setupLocalVideoCanvas: |
设置本地用户视图。 通过本接口可以实现绑定本地用户和显示视图,并设置本地用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。 | |
(int) | - setupRemoteVideoCanvas:forUserID: |
设置远端用户视图。 通过本接口可以实现绑定远端用户和显示视图,并设置远端用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。 | |
(int) | - switchCamera |
切换前置或后置摄像头。 | |
(int) | - setClientRole: |
设置直播场景下的用户角色。 通过本接口可以实现将用户角色在“主播”(kNERtcClientRoleBroadcaster)和“观众“(kNERtcClientRoleAudience)之间的切换,用户加入房间后默认为“主播”。 | |
(int) | - setParameters: |
设置音视频通话的相关参数。 此接口提供技术预览或特别定制功能,详情请 提交工单 联系网易云信技术支持工程师。 | |
(NSString *_Nullable) | - getParameter:extraInfo: |
以 String 的形式获取一些内部参数,此接口为隐藏接口,需要特定参数及特定时机,详情请 提交工单 联系网易云信技术支持工程师。 | |
属性 | |
id< NERtcEngineDelegateEx > | engineDelegate |
NERtcEngine 的常用接口。
- (NERtcConnectionStateType) connectionState |
获取当前房间连接状态。
- (int) enableLocalAudio: | (BOOL) | enabled |
开启/关闭本地音频采集和发送。
通过本接口可以实现开启或关闭本地语音功能,进行本地音频采集及处理。
INERtcEngineEx#startAudioMixingWithOption:
方法播放音乐文件。参数名称 | 类型 | 描述 |
---|---|---|
enabled | BOOL | 是否启用本地音频的采集和发送:
|
NERtcEngineDelegate#onNERtcEngineUserAudioDidStart:
回调。NERtcEngineDelegate#onNERtcEngineUserAudioDidStop:
回调。 INERtcEngineEx#muteLocalAudio:
:两者的差异在于,enableLocalAudio 用于开启本地语音采集及处理,而 muteLocalAudio 用于停止或继续发送本地音频流。 - (int) enableLocalVideo: | (BOOL) | enabled |
开启或关闭本地视频的采集与发送。
通过本接口可以实现开启或关闭本地视频,不影响接收远端视频。
INERtcChannel#leaveChannel
后仍然有效。 参数名称 | 类型 | 描述 |
---|---|---|
enabled | BOOL | 是否开启本地视频采集与发送:
|
NERtcEngineDelegate#onNERtcEngineUserAudioDidStart:
回调。NERtcEngineDelegate#onNERtcEngineUserAudioDidStop:
回调。 INERtcEngine#enableLocalVideo:streamType:
方法。 - (int) enableLocalVideo: | (BOOL) | enabled | |
streamType: | (NERtcStreamChannelType) | streamType |
开启或关闭本地视频的采集与发送。
通过主流或辅流视频通道进行本地视频流的采集与发送。
INERtcEngine#leaveChannel
后仍然有效。 参数名称 | 类型 | 描述 |
---|---|---|
streamType | NERtcStreamChannelType | 视频通道类型:
|
enabled | BOOL | 是否开启本地视频采集与发送:
|
NERtcEngineDelegate#onNERtcEngineUserAudioDidStart:
回调。NERtcEngineDelegate#onNERtcEngineUserAudioDidStop:
回调。NERtcEngineDelegate#onNERtcEngineUserSubStreamAudioDidStart:
回调。NERtcEngineDelegate#onNERtcEngineUserSubStreamAudioDidStop:
回调。 - (int) enableMediaPub: | (BOOL) | enabled | |
withMediaType: | (NERtcMediaPubType) | mediaType |
开启或关闭本地媒体流(主流)的发送。
该方法用于开始或停止向网络发送本地音频或视频数据。
该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。
NERtcEngineDelegate#onNERtcEngineUserAudioDidStart:
(开启发送音频)或 NERtcEngineDelegate#onNERtcEngineUserAudioDidStop:
(停止发送音频)的回调。 INERtcEngineEx#muteLocalAudio:
:enabled | 是否发布本地媒体流。
|
mediaType | 媒体发布类型,暂时仅支持音频。 |
- (NSString *_Nullable) getParameter: | (NSString *_Nonnull) | parameterKey | |
extraInfo: | (NSString *_Nullable) | extraInfo |
以 String 的形式获取一些内部参数,此接口为隐藏接口,需要特定参数及特定时机,详情请 提交工单 联系网易云信技术支持工程师。
parameterKey | 参数 key |
extraInfo | 额外的信息 |
- (int) joinChannelWithToken: | (NSString *) | token | |
channelName: | (NSString *) | channelName | |
myUid: | (uint64_t) | uId | |
channelOptions: | (nullable NERtcJoinChannelOptions *) | channelOptions | |
completion: | (void(^)(NSError *_Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid, NERtcJoinChannelExtraInfo *_Nullable info)) | completion |
加入音视频房间。
通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。
INERtcEngine#setParameters:
方法实现。NERtcJoinChannelCompletion
回调方法中返回;App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。参数名称 | 类型 | 描述 |
---|---|---|
token | NSString | 安全认证签名(NERTC Token),可以设置为:
|
channelName | NSString | 房间名称,设置相同房间名称的用户会进入同一个通话房间。
|
uId | uint64_t | 用户的唯一标识 ID。 |
channelOptions | NERtcJoinChannelOptions * | 加入房间时设置一些特定的房间参数。默认值为 NULL,详细信息请参考 NERtcJoinChannelOptions 。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
INERtcEngine#leaveChannel
方法离开房间。INERtcEngine#switchChannelWithToken:channelName:completion:
接口切换房间。 NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。 - (int) joinChannelWithToken: | (NSString *) | token | |
channelName: | (NSString *) | channelName | |
myUid: | (uint64_t) | uId | |
completion: | (NERtcJoinChannelCompletion) | completion |
加入音视频房间。
通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。
INERtcEngine#setParameters:
方法实现。NERtcJoinChannelCompletion
回调方法中返回;App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。参数名称 | 类型 | 描述 |
---|---|---|
token | NSString | 安全认证签名(NERTC Token),可以设置为:
|
channelName | NSString | 房间名称,设置相同房间名称的用户会进入同一个通话房间。
|
uId | uint64_t | 用户的唯一标识 ID。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
INERtcEngine#leaveChannel
方法离开房间。INERtcEngine#switchChannelWithToken:channelName:completion:
接口切换房间。 NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。 - (int) leaveChannel |
离开音视频房间。
通过本接口可以实现挂断或退出通话,并释放本房间内的相关资源。
NERtcEngineDelegate#onNERtcEngineDidLeaveChannelWithResult:
回调,远端会触发 NERtcEngineDelegate#onNERtcEngineUserDidLeaveWithUserID:reason:
回调。 - (int) setAudioProfile: | (NERtcAudioProfileType) | profile |
设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等。
参数名称 | 类型 | 描述 |
---|---|---|
profile | NERtcAudioProfileType | 设置采样率、码率、编码模式和声道数。 |
- (int) setAudioProfile: | (NERtcAudioProfileType) | profile | |
scenario: | (NERtcAudioScenarioType) | scenario |
设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。
INERtcEngine#setChannelProfile:
接口设置房间场景为直播模式,即 kNERtcChannelProfileLiveBroadcasting,但未调用此方法设置音频编码属性,或仅设置 profile 为 kNERtcAudioProfileDefault,则 SDK 会自动设置 profile 为 kNERtcAudioProfileHighQuality,且设置 scenario 为 kNERtcAudioScenarioMusic。 参数名称 | 类型 | 描述 |
---|---|---|
profile | NERtcAudioProfileType | 设置采样率、码率、编码模式和声道数。 |
scenario | NERtcAudioScenarioType | 设置音频应用场景。 |
- (int) setAudioScenario: | (NERtcAudioScenarioType) | scenario |
设置音频应用场景
通过此接口可以实现设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景。也可以使用 通过 INERtcEngine#setChannelProfile:
设置其他场景,包括 1v1 呼叫场景、清晰度较高的 1v1 呼叫场景、语聊房场景、清晰度较高的语聊房场景、会议场景。
参数名称 | 类型 | 描述 |
---|---|---|
scenario | NERtcAudioScenarioType | 设置音频应用场景。 |
- (int) setChannelProfile: | (NERtcChannelProfileType) | channelProfile |
设置房间场景。
通过此接口可以实现设置房间场景为通话(默认)、直播场景、视频 1 对 1 呼叫场景、语聊房场景等。针对不同场景采取的优化策略不同,如通话场景侧重语音流畅度,直播场景侧重视频清晰度。
setLocalVideoConfig
, setAudioProfile
等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。setLocalVideoConfig
, setAudioProfile
等 API 设置的音视频相关配置 参数名称 | 类型 | 描述 |
---|---|---|
channelProfile | int | 设置房间场景:
|
- (int) setClientRole: | (NERtcClientRole) | role |
设置直播场景下的用户角色。
通过本接口可以实现将用户角色在“主播”(kNERtcClientRoleBroadcaster)和“观众“(kNERtcClientRoleAudience)之间的切换,用户加入房间后默认为“主播”。
INERtcEngine#setChannelProfile:
方法设置房间场景为直播场景(kNERtcChannelProfileLiveBroadcasting )时调用有效。 参数名称 | 类型 | 描述 |
---|---|---|
role | NERtcClientRole | 用户角色:
|
NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。NERtcEngineDelegate#onNERtcEngineDidClientRoleChanged:newRole:
回调,远端用户触发 NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。NERtcEngineDelegate#onNERtcEngineDidClientRoleChanged:newRole:
回调,远端用户触发 NERtcEngineDelegate#onNERtcEngineUserDidLeaveWithUserID:reason:
回调。 - (int) setDelegateQueue: | (nullable dispatch_queue_t) | delegateQueue |
设置驱动 NERtcEngineDelegateEx 事件回调队列
- (int) setEngineEventDelegate: | (nullable id< NERtcEngineDelegateEx >) | delegate |
设置 SDK 主回调,调用此方法后会更新之前 setupEngineWithContext 及 setEngineEventDelegate 设置的回调。 如果设置为空指针, 那么表示清空回调。 注意: 需要在初始化之后调用, destroyEngine 之后自动失效。
- (int) setLocalVideoConfig: | (NERtcVideoEncodeConfiguration *) | config |
设置视频编码属性。
通过此接口可以设置视频主流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考 设置视频属性。
参数名称 | 类型 | 描述 |
---|---|---|
config | NERtcVideoEncodeConfiguration | 视频编码属性配置。 |
INERtcEngine#setLocalVideoConfig:streamType:
方法。 - (int) setLocalVideoConfig: | (NERtcVideoEncodeConfiguration *) | config | |
streamType: | (NERtcStreamChannelType) | streamType |
设置视频编码属性。
通过此接口可以设置视频主流或辅流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数。
参数名称 | 类型 | 描述 |
---|---|---|
config | NERtcVideoEncodeConfiguration | 视频编码属性配置。 |
streamType | NERtcStreamChannelType | 视频通道类型:
|
- (int) setParameters: | (NSDictionary *) | parameters |
设置音视频通话的相关参数。
此接口提供技术预览或特别定制功能,详情请 提交工单 联系网易云信技术支持工程师。
参数名称 | 类型 | 描述 |
---|---|---|
parameters | NSDictionary | 音视频通话的参数集合。详细信息请参考 NERtcEngineBase.h 中的定义。 |
- (int) setupEngineWithContext: | (NERtcEngineContext *) | context |
创建 NERtc 实例。
通过本接口可以实现创建 NERtc 实例并初始化 NERTC SDK 服务。
NERtcEngine#destroyEngine
方法销毁当前实例,再调用本方法重新创建实例。 参数名称 | 类型 | 描述 |
---|---|---|
context | NERtcEngineContext | 传入的 RTC engine context 对象。 |
NERtcEngine#destroyEngine
方法进行销毁。 - (int) setupLocalVideoCanvas: | (NERtcVideoCanvas *_Nullable) | canvas |
设置本地用户视图。
通过本接口可以实现绑定本地用户和显示视图,并设置本地用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
参数名称 | 类型 | 描述 |
---|---|---|
render | NERtcVideoCanvas | 本地用户视频的画布。设置为 nil 表示取消并释放已设置的画布。 |
INERtcEngineEx#setLocalRenderScaleMode:
方法。 - (int) setupRemoteVideoCanvas: | (NERtcVideoCanvas *_Nullable) | canvas | |
forUserID: | (uint64_t) | userID |
设置远端用户视图。
通过本接口可以实现绑定远端用户和显示视图,并设置远端用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
参数名称 | 类型 | 描述 |
---|---|---|
canvas | NERtcVideoCanvas | 远端用户视频的画布。 |
userID | uint64_t | 远端用户的 ID。可以在 NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName: 回调中获取。 |
INERtcEngineEx#setRemoteRenderScaleMode:forUserID:
方法。 - (int) switchCamera |
切换前置或后置摄像头。
INERtcEngineEx#startPreview:
或 INERtcEngine#joinChannelWithToken:channelName:myUid:channelOptions:completion:
方法且开启摄像头之后调用此接口。 - (int) switchChannelWithToken: | (NSString *) | token | |
channelName: | (NSString *) | channelName | |
channelOptions: | (nullable NERtcJoinChannelOptions *) | channelOptions | |
completion: | (void(^)(NSError *_Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid, NERtcJoinChannelExtraInfo *_Nullable info)) | completion |
快速切换音视频房间。
房间场景为直播场景时,房间中角色为观众的成员可以调用该方法从当前房间快速切换至另一个房间。
成功调用该方切换房间后,本端会收到离开房间的回调 onNERtcEngineDidLeaveChannelWithResult;远端用户会收到 onNERtcEngineUserDidLeaveWithUserID 和 onNERtcEngineUserDidJoinWithUserID 的回调。
token | 在服务器端生成的用于鉴权的安全认证签名(Token)。可设置为:
|
channelName | 期望切换到的目标房间名称 |
channelOptions | 加入房间时设置一些特定的房间参数 |
completion | 操作完成的 block 回调 |
NERtcEngineErrorCode.kNERtcNoError
):方法调用成功。NERtcEngineErrorCode.kNERtcErrFatal
):通用错误。NERtcEngineErrorCode.kNERtcErrInvalidParam
):参数错误。NERtcEngineErrorCode.kNERtcErrSwitchChannelInvalidState
): 切换房间状态无效。NERtcEngineErrorCode.KNERtcErrChannelReservePermissionDenied
): 用户角色不是观众。NERtcEngineErrorCode.kNERtcErrChannelAlreadyJoined
): 房间名无效,已在此房间中。 - (int) switchChannelWithToken: | (NSString *) | token | |
channelName: | (NSString *) | channelName | |
completion: | (NERtcJoinChannelCompletion) | completion |
快速切换音视频房间。 通过此接口可以实现当房间场景为直播场景时,用户从当前房间快速切换至另一个房间。
INERtcEngine#setChannelProfile:
接口设置房间模式为直播模式。 参数名称 | 类型 | 描述 |
---|---|---|
token | NSString * | 在服务器端生成的用于鉴权的安全认证签名(Token),可设置为:
|
channelName | NSString * | 期望切换到的目标房间名称。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
NERtcEngineDelegate#onNERtcEngineDidLeaveChannelWithResult:
回调,其中 result 参数为 NERtcEngineErrorCode.NERtcError#kNERtcErrChannelLeaveBySwitchAction
;再收到成功加入新房间的回调 NERtcJoinChannelCompletion
。NERtcEngineDelegate#onNERtcEngineUserDidLeaveWithUserID:reason:leaveExtraInfo:
和 NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:joinExtraInfo:
的回调。
|
readnonatomicweak |