#include <INERtcEngine.h>
◆ connectionState
- (NERtcConnectionStateType) connectionState |
|
|
|
◆ enableLocalAudio:
- (int) enableLocalAudio: |
|
(BOOL) | enabled |
|
开启/关闭本地音频采集和发送。
通过本接口可以实现开启或关闭本地语音功能,进行本地音频采集及处理。
- 自从
- V3.5.0
- 调用时机
- 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
- 注解
- 加入房间后,语音功能默认为开启状态。
- 该方法设置内部引擎为启用状态,在 leaveChannel 后仍然有效。
- 该方法不影响接收或播放远端音频流,enableLocalAudio(false) 适用于只下行不上行音频流的场景。
- 自 V4.4.0 版本起,开启或关闭本地音频采集的操作不会影响伴音/音效接口的使用,比如 enableLocalAudio(NO) 后仍可以调用
INERtcEngineEx#startAudioMixingWithOption:
方法播放音乐文件。
- 该方法会操作音频硬件设备,建议避免频繁开关,否则可能导致设备异常。
- 参数说明
参数名称 | 类型 | 描述 |
enabled | BOOL | 是否启用本地音频的采集和发送:
-
YES:开启本地音频采集。
-
NO:关闭本地音频采集。关闭后,远端用户会接收不到本地用户的音频流;但本地用户依然可以接收到远端用户的音频流。
|
- 示例代码
-
- 相关回调
-
- 相关接口
INERtcEngineEx#muteLocalAudio:
:两者的差异在于,enableLocalAudio 用于开启本地语音采集及处理,而 muteLocalAudio 用于停止或继续发送本地音频流。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化。
- 30004(kNERtcErrNotSupported):多房间场景下,在其他房间内已经开启了音频。
- 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化,或者正在进行网络测速。
- 30101(kNERtcErrChannelNotJoined):尚未加入房间。
- 30300(kNERtcErrOSAuthorize):未开启麦克风权限。
◆ enableLocalVideo:
- (int) enableLocalVideo: |
|
(BOOL) | enabled |
|
开启或关闭本地视频的采集与发送。
通过本接口可以实现开启或关闭本地视频,不影响接收远端视频。
- 自从
- V3.5.0
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 该方法设置内部引擎为开启或关闭状态, 在
INERtcChannel#leaveChannel
后仍然有效。
- 参数说明
参数名称 | 类型 | 描述 |
enabled | BOOL | 是否开启本地视频采集与发送:
-
YES:开启本地视频采集。
-
NO:关闭本地视频采集。关闭后,远端用户无法接收到本地用户的视频流;但本地用户仍然可以接收到远端用户的视频流。
|
- 示例代码
-
- 相关回调
-
- 相关接口
- 若您希望开启辅流通道的视频采集,请调用
INERtcEngine#enableLocalVideo:streamType:
方法。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):通用错误,一般表示引擎错误,尝试再次调用此接口即可。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如已开启外部视频采集。
- 30300(kNERtcErrOSAuthorize):应用未获取到操作系统的摄像头权限。
◆ enableLocalVideo:streamType:
- (int) enableLocalVideo: |
|
(BOOL) | enabled |
streamType: |
|
(NERtcStreamChannelType) | streamType |
开启或关闭本地视频的采集与发送。
通过主流或辅流视频通道进行本地视频流的采集与发送。
- 自从
- V4.6.20
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 该方法设置内部引擎为开启或关闭状态, 在
INERtcEngine#leaveChannel
后仍然有效。
- 参数说明
参数名称 | 类型 | 描述 |
streamType | NERtcStreamChannelType | 视频通道类型:
-
kNERtcStreamChannelTypeMainStream:主流。
-
kNERtcStreamChannelTypeSubStream:辅流。
|
enabled | BOOL | 是否开启本地视频采集与发送:
-
YES:开启本地视频采集。
-
NO:关闭本地视频采集。关闭后,远端用户无法接收到本地用户的视频流;但本地用户仍然可以接收到远端用户的视频流。
|
- 示例代码
[[
NERtcEngine sharedEngine] enableLocalVideo:YES streamType:kNERtcStreamChannelTypeMainStream];
[[
NERtcEngine sharedEngine] enableLocalVideo:NO streamType:kNERtcStreamChannelTypeMainStream];
[[
NERtcEngine sharedEngine] enableLocalVideo:YES streamType:kNERtcStreamChannelTypeSubStream];
[[
NERtcEngine sharedEngine] enableLocalVideo:NO streamType:kNERtcStreamChannelTypeSubStream];
- 相关回调
- streamType 为 kNERtcStreamChannelTypeMainStream(主流)时:
- streamType 为 kNERtcStreamChannelTypeSubStream(辅流)时:
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):通用错误,一般表示引擎错误,尝试再次调用此接口即可。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如已开启外部视频采集。
- 30027(kNERtcErrDeviceOccupied): 所选设备已被占用。比如已通过主流通道开启了摄像头,无法再通过辅流通道开启摄像头。
- 30300(kNERtcErrOSAuthorize):应用未获取到操作系统的摄像头权限。
◆ enableMediaPub:withMediaType:
- (int) enableMediaPub: |
|
(BOOL) | enabled |
withMediaType: |
|
(NERtcMediaPubType) | mediaType |
开启或关闭本地媒体流(主流)的发送。
该方法用于开始或停止向网络发送本地音频或视频数据。
该方法不影响接收或播放远端媒体流,也不会影响本地音频或视频的采集状态。
- 自从
- V4.6.10
- 注解
-
- 相关接口
INERtcEngineEx#muteLocalAudio:
:
- 在需要开启本地音频采集(监测本地用户音量)但不发送音频流的情况下,您也可以调用 muteLocalAudio(YES) 方法。
- 两者的差异在于, muteLocalAudio(YES) 仍然保持与服务器的音频通道连接,而 enableMediaPub(NO) 表示断开此通道,因此若您的实际业务场景为多人并发的大房间,建议您调用 enableMediaPub 方法。
- 参数
-
enabled | 是否发布本地媒体流。
- YES(默认):发布本地媒体流。
- NO:不发布本地媒体流。
|
mediaType | 媒体发布类型,暂时仅支持音频。 |
- 返回
-
◆ getParameter:extraInfo:
- (NSString *_Nullable) getParameter: |
|
(NSString *_Nonnull) | parameterKey |
extraInfo: |
|
(NSString *_Nullable) | extraInfo |
以 String 的形式获取一些内部参数,此接口为隐藏接口,需要特定参数及特定时机,详情请 提交工单 联系网易云信技术支持工程师。
- 参数
-
parameterKey | 参数 key |
extraInfo | 额外的信息 |
- 返回
- 如果查询到相关参数,以 String 形式返回,否则返回 nil
◆ joinChannelWithToken:channelName:myUid:channelOptions:completion:
- (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 |
加入音视频房间。
通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。
- 自从
- V3.6.0
- 调用时机
- 请在初始化后调用该方法。
- 注解
- 同一个房间内的用户可以互相通话,多个用户加入同一个房间,可以群聊。使用不同 App Key 的 App 之间不能互通。
- 用户成功加入房间后,默认订阅房间内所有其他用户的音频流,可能会因此产生用量并影响计费;若您想取消自动订阅,可以在通话前通过调用
INERtcEngine#setParameters:
方法实现。
- 加入音视频房间时,如果指定房间尚未创建,云信服务器内部会自动创建一个同名房间。
- 传参中 uId 可选,若不指定则默认为 0,SDK 会自动分配一个随机 uId,并在
NERtcJoinChannelCompletion
回调方法中返回;App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
- 网络测速过程中无法加入房间。
- 若使用了云代理功能,uid 不允许传 0,请用真实的 uid。
- 参数说明
参数名称 | 类型 | 描述 |
token | NSString | 安全认证签名(NERTC Token),可以设置为:
-
null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在网易云信控制台中将鉴权方式恢复为默认的安全模式。
-
已获取的 NERTC Token。安全模式下必须设置为获取到的 Token。若未传入正确的 Token 将无法进入房间。推荐使用安全模式。
|
channelName | NSString | 房间名称,设置相同房间名称的用户会进入同一个通话房间。
-
字符串格式,长度为 1 ~ 64 字节。
-
支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~”
|
uId | uint64_t | 用户的唯一标识 ID。 |
channelOptions | NERtcJoinChannelOptions * | 加入房间时设置一些特定的房间参数。默认值为 NULL,详细信息请参考 NERtcJoinChannelOptions 。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
- 示例代码
int result = [[
NERtcEngine sharedEngine] joinChannelWithToken:token channelName:channelName myUid:uid completion:^(NSError * _Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid) {
if (error) {
}
else {
}
}];
if(kNERtcNoError != result) {
}
- 相关接口
-
- 相关回调
- 成功调用该方法加入房间后,远端会触发
NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化或正在进行网络探测。
◆ joinChannelWithToken:channelName:myUid:completion:
- (int) joinChannelWithToken: |
|
(NSString *) | token |
channelName: |
|
(NSString *) | channelName |
myUid: |
|
(uint64_t) | uId |
completion: |
|
(NERtcJoinChannelCompletion) | completion |
加入音视频房间。
通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。
- 自从
- V3.6.0
- 调用时机
- 请在初始化后调用该方法。
- 注解
- 同一个房间内的用户可以互相通话,多个用户加入同一个房间,可以群聊。使用不同 App Key 的 App 之间不能互通。
- 用户成功加入房间后,默认订阅房间内所有其他用户的音频流,可能会因此产生用量并影响计费;若您想取消自动订阅,可以在通话前通过调用
INERtcEngine#setParameters:
方法实现。
- 加入音视频房间时,如果指定房间尚未创建,云信服务器内部会自动创建一个同名房间。
- 传参中 uId 可选,若不指定则默认为 0,SDK 会自动分配一个随机 uId,并在
NERtcJoinChannelCompletion
回调方法中返回;App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
- 网络测速过程中无法加入房间。
- 若使用了云代理功能,uid 不允许传 0,请用真实的 uid。
- 参数说明
参数名称 | 类型 | 描述 |
token | NSString | 安全认证签名(NERTC Token),可以设置为:
-
null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在网易云信控制台中将鉴权方式恢复为默认的安全模式。
-
已获取的 NERTC Token。安全模式下必须设置为获取到的 Token。若未传入正确的 Token 将无法进入房间。推荐使用安全模式。
|
channelName | NSString | 房间名称,设置相同房间名称的用户会进入同一个通话房间。
-
字符串格式,长度为 1 ~ 64 字节。
-
支持以下 89 个字符:a-z, A-Z, 0-9, space, !#$%&()+-:;≤.,>? @[]^_{|}~”
|
uId | uint64_t | 用户的唯一标识 ID。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
- 示例代码
int result = [[
NERtcEngine sharedEngine] joinChannelWithToken:token channelName:channelName myUid:uid completion:^(NSError * _Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid) {
if (error) {
}
else {
}
}];
if(kNERtcNoError != result) {
}
- 相关接口
-
- 相关回调
- 成功调用该方法加入房间后,远端会触发
NERtcEngineDelegate#onNERtcEngineUserDidJoinWithUserID:userName:
回调。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30005(kNERtcErrInvalidState):状态错误,比如引擎尚未初始化或正在进行网络探测。
◆ leaveChannel
◆ setAudioProfile:
- (int) setAudioProfile: |
|
(NERtcAudioProfileType) | profile |
|
设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等。
- 自从
- V5.5.40
- 调用时机
- 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
- 参数说明
-
- 示例代码
NERtcAudioProfileType profile = kNERtcAudioProfileStandard;
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。
◆ setAudioProfile:scenario:
- (int) setAudioProfile: |
|
(NERtcAudioProfileType) | profile |
scenario: |
|
(NERtcAudioScenarioType) | scenario |
设置音频编码属性。
通过此接口可以实现设置音频编码的采样率、码率、编码模式、声道数等,也可以设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景等。
- 自从
- V3.5.0
- 调用时机
- 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
- 注解
- 音乐场景下,建议将 profile 设置为 kNERtcAudioProfileHighQuality。
- 若您通过
INERtcEngine#setChannelProfile:
接口设置房间场景为直播模式,即 kNERtcChannelProfileLiveBroadcasting,但未调用此方法设置音频编码属性,或仅设置 profile 为 kNERtcAudioProfileDefault,则 SDK 会自动设置 profile 为 kNERtcAudioProfileHighQuality,且设置 scenario 为 kNERtcAudioScenarioMusic。
- 参数说明
-
- 示例代码
NERtcAudioScenarioType scenario = kNERtcAudioScenarioSpeech;
NERtcAudioProfileType profile = kNERtcAudioProfileStandard;
[[
NERtcEngine sharedEngine] setAudioProfile:profile scenario:scenario];
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。
◆ setAudioScenario:
- (int) setAudioScenario: |
|
(NERtcAudioScenarioType) | scenario |
|
设置音频应用场景
通过此接口可以实现设置音频属性的应用场景,包括聊天室场景、语音场景、音乐场景。也可以使用 通过 INERtcEngine#setChannelProfile:
设置其他场景,包括 1v1 呼叫场景、清晰度较高的 1v1 呼叫场景、语聊房场景、清晰度较高的语聊房场景、会议场景。
- 自从
- V5.5.40
- 调用时机
- 请在引擎初始化之后调用此接口,且该方法在加入房间前后均可调用。
- 参数说明
-
- 示例代码
NERtcAudioScenarioType scenario = kNERtcAudioScenarioSpeech;
[[
NERtcEngine sharedEngine] setAudioScenario:scenario];
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化或下发配置未更新。
◆ setChannelProfile:
- (int) setChannelProfile: |
|
(NERtcChannelProfileType) | channelProfile |
|
设置房间场景。
通过此接口可以实现设置房间场景为通话(默认)、直播场景、视频 1 对 1 呼叫场景、语聊房场景等。针对不同场景采取的优化策略不同,如通话场景侧重语音流畅度,直播场景侧重视频清晰度。
- 自从
- V3.6.0
- 注解
- 同一个房间内的用户建议使用同一种房间场景以获得最佳效果。
- 设置场景会影响音视频码率、帧率、视频分辨率、视频大小流模式、自动打开视频、自动订阅视频、传输策略。
- 调用此函数将覆盖上一次调用此函数设置的场景。
- 调用此函数场景类型为视频 1 对 1 呼叫场景、清晰度较高的 1 对 1 呼叫场景等 v5.5.40 新增的房间场景将覆盖您通过
setLocalVideoConfig
, setAudioProfile
等 API 设置的音视频相关配置,因此建议先第一时间设置场景再通过其他 API 调整音视频配置。
- V5.5.40 之前就存在通信场景和直播场景,设置通信场景和直播场景,不会覆盖
setLocalVideoConfig
, setAudioProfile
等 API 设置的音视频相关配置
- 调用时机
- 请在初始化后调用该方法,且该方法仅可在加入房间前调用。建议在初始化之后先调此方法,再调别的 API 设置的音视频相关配置。
- 参数说明
参数名称 | 类型 | 描述 |
channelProfile | int | 设置房间场景:
-
kNERtcChannelProfileCommunication:通话场景。
-
kNERtcChannelProfileLiveBroadcasting:直播场景。
-
kNERtcChannelProfileVideoCall:视频 1 对 1 呼叫场景。
-
kNERtcChannelProfileHighQualityVideoCall:清晰度较高的 1 对 1 呼叫场景。
-
kNERtcChannelProfileChatroom:语聊房场景。
-
kNERtcChannelProfileHighQualityChatroom:高品质语聊房场景。
-
kNERtcChannelProfileMeeting:会议场景。
|
- 示例代码
[[
NERtcEngine sharedEngine] setChannelProfile:kNERtcChannelProfileLiveBroadcasting];
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30003(kNERtcErrInvalidParam):参数错误。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如已经加入房间。
◆ setClientRole:
- (int) setClientRole: |
|
(NERtcClientRole) | role |
|
设置直播场景下的用户角色。
通过本接口可以实现将用户角色在“主播”(kNERtcClientRoleBroadcaster)和“观众“(kNERtcClientRoleAudience)之间的切换,用户加入房间后默认为“主播”。
- 自从
- V3.9.0
- 使用前提
- 该方法仅在通过
INERtcEngine#setChannelProfile:
方法设置房间场景为直播场景(kNERtcChannelProfileLiveBroadcasting )时调用有效。
- 调用时机
- 请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 业务场景
- 适用于观众上下麦与主播互动的互动直播场景。
- 注解
- 用户切换为观众角色时,SDK 会自动关闭音视频设备。
- 参数说明
参数名称 | 类型 | 描述 |
role | NERtcClientRole | 用户角色:
-
kNERtcClientRoleBroadcaster(0):设置用户角色为主播。主播可以开关摄像头等设备、可以发布流、可以操作互动直播推流相关接口、加入或退出房间状态对其他房间内用户可见。
-
kNERtcClientRoleAudience(1):设置用户角色为观众。观众只能收流不能发流、加入或退出房间状态对其他房间内用户不可见。
|
- 示例代码
[[
NERtcEngine sharedEngine] setClientRole:kNERtcClientRoleAudience];
[[
NERtcEngine sharedEngine] setClientRole:kNERtcClientRoleBroadcaster];
- 相关回调
- 加入房间前调用该方法设置用户角色,不会触发任何回调,在加入房间成功后角色自动生效:
- 加入房间后调用该方法切换用户角色:
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎未创建成功。
◆ setDelegateQueue:
- (int) setDelegateQueue: |
|
(nullable dispatch_queue_t) | delegateQueue |
|
◆ setEngineEventDelegate:
设置 SDK 主回调,调用此方法后会更新之前 setupEngineWithContext 及 setEngineEventDelegate 设置的回调。 如果设置为空指针, 那么表示清空回调。 注意: 需要在初始化之后调用, destroyEngine 之后自动失效。
◆ setLocalVideoConfig:
设置视频编码属性。
通过此接口可以设置视频主流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数,详细信息请参考 设置视频属性。
- 自从
- V3.5.0
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 每个属性对应一套视频参数,例如分辨率、帧率、码率等。所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
- 此接口为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。
- 自 V4.5.0 版本起,此方法设置实时生效;此前的版本中,此方法设置成功后,下次开启本端视频时生效。
- 参数说明
-
- 示例代码
config.
cropMode = kNERtcVideoCropMode16_9;
config.
frameRate = kNERtcVideoFrameRateFps30;
[coreEngine setLocalVideoConfig:config];
NSInteger bitrate
定义 NERtcEngineBase.h:465
NERtcVideoFrameRate frameRate
定义 NERtcEngineBase.h:392
NSInteger minFrameRate
定义 NERtcEngineBase.h:402
NSInteger minBitrate
定义 NERtcEngineBase.h:475
int width
定义 NERtcEngineBase.h:559
NERtcVideoCropMode cropMode
定义 NERtcEngineBase.h:587
NERtcDegradationPreference degradationPreference
定义 NERtcEngineBase.h:609
int height
定义 NERtcEngineBase.h:577
- 相关接口
- 若您希望为视频辅流通道设置编码属性,请调用
INERtcEngine#setLocalVideoConfig:streamType:
方法。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30003(kNERtcErrInvalidParam):参数错误,比如 config 设置为空。
- 30004(kNERtcErrNotSupported):不支持的操作,比如当前使用的是纯音频 SDK。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。
◆ setLocalVideoConfig:streamType:
设置视频编码属性。
通过此接口可以设置视频主流或辅流的编码分辨率、裁剪模式、码率、帧率、带宽受限时的视频编码降级偏好、编码的镜像模式、编码的方向模式参数。
- 自从
- V4.6.20
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 每个属性对应一套视频参数,例如分辨率、帧率、码率等。所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
- 此接口为全量参数配置接口,重复调用此接口时,SDK 会刷新此前的所有参数配置,以最新的传参为准。所以每次修改配置时都需要设置所有参数,未设置的参数将取默认值。
- 参数说明
-
- 示例代码
config.
cropMode = kNERtcVideoCropMode16_9;
config.
frameRate = kNERtcVideoFrameRateFps30;
[coreEngine setLocalVideoConfig:config streamType:kNERtcStreamChannelTypeMainStream];
subConfig.
cropMode = kNERtcVideoCropMode16_9;
subConfig.
frameRate = kNERtcVideoFrameRateFps30;
[coreEngine setLocalVideoConfig:config streamType:kNERtcStreamChannelTypeSubStream];
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30003(kNERtcErrInvalidParam):参数错误,比如 config 设置为空。
- 30004(kNERtcErrNotSupported):不支持的操作,比如当前使用的是纯音频 SDK。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎未初始化成功。
◆ setParameters:
- (int) setParameters: |
|
(NSDictionary *) | parameters |
|
设置音视频通话的相关参数。
此接口提供技术预览或特别定制功能,详情请 提交工单 联系网易云信技术支持工程师。
- 自从
- V3.5.0
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 参数说明
-
- 示例代码
NSDictionary *paramDic = @{kNERtcKeyVideoPreferHWEncode : @(YES)};
...
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrInvalidParam):参数错误。
◆ setupEngineWithContext:
创建 NERtc 实例。
通过本接口可以实现创建 NERtc 实例并初始化 NERTC SDK 服务。
- 自从
- V3.5.0
- 调用时机
请确保在调用其他 API 前先调用该方法创建并初始化 NERtc 实例。
- 注解
- 使用同一个 App Key 的 App 才能进入同一个房间进行通话或直播。
- 一个 App Key 只能用于创建一个 NERtc 实例;若您需要更换 App Key,必须先调用
NERtcEngine#destroyEngine
方法销毁当前实例,再调用本方法重新创建实例。
- 参数说明
-
- 示例代码
logSetting.
logLevel = kNERtcLogLevelWarning;
[[
NERtcEngine sharedEngine] setupEngineWithContext:context];
定义 NERtcEngineContext.h:22
NERtcLogSetting * logSetting
定义 NERtcEngineContext.h:41
id< NERtcEngineDelegateEx > engineDelegate
定义 NERtcEngineContext.h:51
NSString * appKey
定义 NERtcEngineContext.h:31
定义 NERtcEngineBase.h:2536
NSString * logDir
定义 NERtcEngineBase.h:2545
NERtcLogLevel logLevel
定义 NERtcEngineBase.h:2555
- 相关接口
- 若您不再使用 NERtc 实例,需要调用
NERtcEngine#destroyEngine
方法进行销毁。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30003(kNERtcErrInvalidParam):参数错误。
- 30005(kNERtcErrInvalidState):状态错误,比如正在重连。
◆ setupLocalVideoCanvas:
设置本地用户视图。
通过本接口可以实现绑定本地用户和显示视图,并设置本地用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
- 自从
- V3.5.0
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 纯音频 SDK 禁用该接口,如需使用请前往云信官网下载并替换成视频 SDK。
- 在实际业务中,通常建议在初始化后即调用该方法进行本地视图设置,然后再加入房间或开启预览。
- 参数说明
-
- 示例代码
UIView *localUserView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[[
NERtcEngine sharedEngine] setupLocalVideoCanvas:canvas];
NERtcVideoRenderScaleMode renderMode
定义 NERtcEngineBase.h:325
VIEW_CLASS * container
定义 NERtcEngineBase.h:315
NERtcVideoMirrorMode mirrorMode
定义 NERtcEngineBase.h:339
- 相关接口
- 若您希望在通话中更新本地用户视图的渲染或镜像模式,请调用
INERtcEngineEx#setLocalRenderScaleMode:
方法。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化。
- 30004(kNERtcErrNotSupported):不支持的操作,比如纯音频 SDK 不支持该功能。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引起尚未成功启动。
◆ setupRemoteVideoCanvas:forUserID:
- (int) setupRemoteVideoCanvas: |
|
(NERtcVideoCanvas *_Nullable) | canvas |
forUserID: |
|
(uint64_t) | userID |
设置远端用户视图。
通过本接口可以实现绑定远端用户和显示视图,并设置远端用户视图在本地显示时的镜像模式和裁减比例,只影响本地用户看到的视频画面。
- 自从
- V3.5.0
- 调用时机
请在初始化后调用该方法,且该方法在加入房间前后均可调用。
- 注解
- 您可以通过设置 canvas 参数为空(传 nil)以解除远端用户视图绑定;退出房间后,SDK 也会主动清除远端用户和视图的绑定关系。
- 参数说明
-
- 示例代码
- (void)onNERtcEngineUserDidJoinWithUserID:(uint64_t)userID userName:(NSString *)userName {
UIView *remoteUserView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[[
NERtcEngine sharedEngine] setupRemoteVideoCanvas:canvas forUserID:userID];
}
- 相关接口
- 若您希望在通话中更新远端用户视图的渲染模式,请调用
INERtcEngineEx#setRemoteRenderScaleMode:forUserID:
方法。
- 返回
- 0(kNERtcNoError):方法调用成功。
- 其他:方法调用失败。
- 30001(kNERtcErrFatal):引擎尚未初始化。
- 30004(kNERtcErrNotSupported):纯音频 SDK 不支持该功能。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未成功启动。
◆ switchCamera
◆ switchChannelWithToken:channelName: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 的回调。
- 注解
- 房间成员成功切换房间后,默认订阅房间内所有其他成员的音频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 subscribeRemoteAudio 方法实现。
- 该方法仅适用于直播场景中,角色为观众的音视频房间成员。即已通过接口 setchannelprofile 设置房间场景为直播,通过 setClientRole 设置房间成员的角色为观众。
- 参数
-
token | 在服务器端生成的用于鉴权的安全认证签名(Token)。可设置为:
- null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在网易云信控制台中将鉴权方式恢复为默认的安全模式。
- 已获取的 NERTC Token。安全模式下必须设置为获取到的 Token。若未传入正确的 Token 将无法进入房间。推荐使用安全模式。
|
channelName | 期望切换到的目标房间名称 |
channelOptions | 加入房间时设置一些特定的房间参数 |
completion | 操作完成的 block 回调 |
- 返回
-
◆ switchChannelWithToken:channelName:completion:
- (int) switchChannelWithToken: |
|
(NSString *) | token |
channelName: |
|
(NSString *) | channelName |
completion: |
|
(NERtcJoinChannelCompletion) | completion |
快速切换音视频房间。 通过此接口可以实现当房间场景为直播场景时,用户从当前房间快速切换至另一个房间。
- 使用前提
- 请先通过
INERtcEngine#setChannelProfile:
接口设置房间模式为直播模式。
- 调用时机
- 请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。
- 注解
- 房间成员成功切换房间后,将会保持切换前的音视频的状态。
- v5.5.10 及之后版本,主播和观众都支持调用本接口快速切换至另一个房间。
- v5.5.10 之前版本,只支持观众调用本接口快速切换至另一个房间。
- 参数说明
参数名称 | 类型 | 描述 |
token | NSString * | 在服务器端生成的用于鉴权的安全认证签名(Token),可设置为:
-
已获取的 NERTC Token。安全模式下必须设置为获取到的 Token,默认 Token 有效期为 10min,也可以定期通过应用服务器向云信服务器申请 Token 或者申请长期且可复用的 Token。
-
null。调试模式下可设置为 null。安全性不高,建议在产品正式上线前在网易云信控制台中将鉴权方式恢复为默认的安全模式。
|
channelName | NSString * | 期望切换到的目标房间名称。 |
completion | NERtcJoinChannelCompletion | 操作完成的 block 回调。 |
- 示例代码
[self switchChannelWithToken:token channelName:channelName channelOptions:channelOption completion:^(NSError * _Nullable error, uint64_t channelId, uint64_t elapesd, uint64_t uid,
NERtcJoinChannelExtraInfo * _Nullable info) {
}];
- 相关回调
- 成功调用此接口切换房间后:
- 返回
- 0(kNERtcNoError): 方法调用成功。
- 其他:方法调用失败。
- 403(kNERtcErrChannelReservePermissionDenied):没有权限,比如主播无法切换房间。
- 30004(kNERtcErrNotSupported):不支持的操作,比如当前是 1 对 1 模式。
- 30005(kNERtcErrInvalidState):当前状态不支持的操作,比如引擎尚未初始化。
- 30100(kNERtcErrChannelAlreadyJoined):重复加入房间。
- 30103(kNERtcErrRequestJoinChannelFail):加入房间操作失败。
- 30109(kNERtcErrSwitchChannelInvalidState):尚未加入房间。
该协议的文档由以下文件生成: