ByteRTCEngineKit

@interface ByteRTCEngineKit : NSObject

SDK 回调给应用层的 delegate 对象,详见 ByteRTCEngineDelegate

成员变量

类型 名称
;$/;" __deprecated_msg

静态函数

返回 名称
ByteRTCEngineKit* sharedInstance
void destroy
NSString* getSdkVersion
NSString* getErrorDescription:
int feedbackGrade:type:desc:

成员函数

返回 名称
instancetype sharedEngineWithAppId:delegate:
instancetype sharedEngineWithAppId:delegate:monitorDelegate:
id initWithAppId:delegate:parameters:
id initWithAppId:delegate:monitorDelegate:parameters:
void destroyEngine
BOOL setUserRole:
ByteRTCUserRoleType clientRole
int joinRoomByKey:roomId:roomProfile:userInfo:
int leaveRoom:
int updateToken:
void startAudioCapture
void stopAudioCapture
void setAudioScenario:
void muteLocalAudio:
void muteRemoteAudio:muteState:
void muteAllRemoteAudio:
void setAudioVolumeIndicationInterval:
void setRecordingVolume:
void setPlaybackVolume:
int setLocalVideoRenderer:
int setLocalVideoRenderer:forRoomId:forUserId:
int setRemoteVideoRenderer:forRoomId:forUserId:
int setRemoteVideoRenderer:forUserId:
int setupRemoteScreenRenderer:forRoomId:forUserId:
int setupRemoteScreenRenderer:forUserId:
int setVideoEncoderConfig:
int setLocalVideoCanvas:withCanvas:
int setRemoteVideoCanvas:withIndex:withCanvas:
void startVideoCapture
void stopVideoCapture
int muteLocalVideo:
int muteRemoteVideo:withMuteState:
int muteAllRemoteVideo:
int setLocalVideoMirrorMode:
bool isLocalVideoMirrorOn
int switchCamera:
int replaceBackground:withDivideModel:
int checkVideoEffectSupport
int checkVideoEffectLicense:
int enableVideoEffect:
void setVideoEffectAlgoModelPath:
void setVideoEffectNodes:
void addVideoEffectNodes:
void removeVideoEffectNodes:
void updateVideoEffectNode:nodeKey:nodeValue:
void setVideoEffectColorFilter:
void setVideoEffectColorFilterIntensity:
BOOL setMediaMetadataObserver:
BOOL enableAutoSubscribe:videoMode:
void subscribeStream:subscribeConfig:
void unSubscribeStream:isScreen:
int setAudioPlaybackDevice:
int startLiveTranscoding:observer:
int stopLiveTranscoding
int updateLiveTranscoding:
int enableCloudRending:
int updateCloudRending:
int disableCloudRending
void setVideoInputType:
BOOL pushExternalVideoFrame:time:
BOOL pushExternalVideoFrame:time:rotation:
BOOL pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo:
BOOL pushExternalByteVideoFrame:
void enableExternalAudioDevice:playbackFormat:
void disableExternalAudioDevice
BOOL setAudioPlayoutMixStream:sampleRate:channelNum:
int getAudioMixingStreamCachedFrameNum
BOOL pushAudioMixingStreamData:frameNum:
BOOL setRecordingAudioFrameParameters:channels:
BOOL setPlaybackAudioFrameParameters:channels:
BOOL setMixedAudioFrameParameters:channels:
BOOL setAudioFrameObserver:
int pushExternalAudioFrame:
int pullExternalAudioFrame:
int sendRoomMessage:
int sendRoomBinaryMessage:
void setAudioPerformanceProfile:
int setBusinessId:
int64_t sendUserMessage:message:
int64_t sendUserBinaryMessage:message:
void setRemoteAudioPlaybackVolume:volume:
int getAudioMixingDuration
int getAudioMixingCurrentPosition
int stopAudioMixing
int pauseAudioMixing
int resumeAudioMixing
int adjustAudioMixingVolume:
int startAudioMixing:loopback:replace:cycle:
int setAudioMixingPosition:
int adjustAudioMixingPlayoutVolume:
int adjustAudioMixingPublishVolume:
int setVolumeOfEffect:withVolume:
int getEffectVolume:
int playEffect:filePath:loopback:cycle:withVolume:
int preloadEffect:filePath:
int unloadEffect:
int pauseEffect:
int resumeEffect:
int stopEffect:
int setEffectsVolume:
int unloadAllEffects
int pauseAllEffects
int resumeAllEffects
int stopAllEffects
int setPublishFallbackOption:
int setSubscribeFallbackOption:
int setRemoteUserPriority:uid:
void setEncryptType:key:
void setCustomizeEncryptHandler:
int setScreenCapture:Rect:screenCaptureParam:
void pushScreenCaptureFrame:time:rotation:
int startScreenSharingWithParam:preferredExtension:groupId:
void API_AVAILABLE

变量说明

__deprecated_msg

__deprecated_msg("Will be removed in new version");

函数说明

sharedInstance

+ (ByteRTCEngineKit * _Nullable) sharedInstance;

获取 ByteRTCEngineKit 单例对象。

返回值 由 sharedEngineWithAppId:delegate: 创建的 ByteRTCEngineKit 对象。

注意

destroy

+ (void)destroy;

销毁由 sharedEngineWithAppId:delegate: 创建的引擎实例,并释放所有相关资源。

注意

getSdkVersion

+ (NSString * _Nonnull)getSdkVersion;

获取 SDK 当前的版本号。

返回值 SDK 当前的版本号。

getErrorDescription:

+ (NSString * _Nonnull)getErrorDescription:(NSInteger)code;

获取 SDK 内各种错误码、警告码的描述文字。

传入参数

参数名 类型 说明
code NSInteger 通过 rtcEngine:onWarning: 和 rtcEngine:onError: 回调获得的值,
具体可以参考 ByteRTCWarningCode 和 ByteRTCErrorCode 。

返回值 描述文字。

feedbackGrade:type:desc:

+ (int)feedbackGrade:(NSInteger)grade type:(NSInteger)type desc:(NSString* _Nullable)desc;

通话结束,用户反馈上报

传入参数

参数名 类型 说明
grade NSInteger 打分 1~5分
type NSInteger 问题列表
desc NSString* 其他问题

返回值 0: 成功

-1: 还没加入过房间,上报失败 -2: 数据解析错误
-3: 字段缺失
-4: grade不合法

sharedEngineWithAppId:delegate:

+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate __deprecated_msg("Will be removed in new version");

创建 RTCEngine 实例。
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个 RTCEngine 实例,来使用 SDK 的其他能力。

传入参数

参数名 类型 说明
appId NSString* 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。
delegate id SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate

返回值 可用的 ByteRTCEngineKit 实例。

注意

sharedEngineWithAppId:delegate:monitorDelegate:

+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate monitorDelegate:(id<ByteRTCMonitorDelegate> _Nullable)monitorDelegate __deprecated_msg("Will be removed in new version");

创建 RTCEngine 实例。
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个 RTCEngine 实例,来使用 SDK 的其他能力。

传入参数

参数名 类型 说明
appId NSString* 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。
delegate id SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate
monitorDelegate id 监控信息的回调 delegate, 详见 ByteRTCMonitorDelegate

返回值 可用的 ByteRTCEngineKit 实例。

注意

initWithAppId:delegate:parameters:

- (id _Nonnull)initWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate parameters:(NSDictionary* _Nullable)parameters;

创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力

传入参数

参数名 类型 说明
appId NSString* 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC
中进行音视频通话完全独立,无法互通。
delegate id SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate
parameters NSDictionary* 保留参数

返回值 可用的 ByteRTCEngineKit 实例

注意 1. 连续多次调用该方法会创建不同的 ByteRTCEngineKit 2. 必须使用相同的App ID,App间才能进行通话

initWithAppId:delegate:monitorDelegate:parameters:

- (id _Nonnull)initWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate monitorDelegate:(id<ByteRTCMonitorDelegate> _Nullable)monitorDelegate parameters:(NSDictionary* _Nullable)parameters __deprecated_msg("Will be removed in new version");

创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力

传入参数

参数名 类型 说明
appId NSString* 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC
中进行音视频通话完全独立,无法互通。
delegate id SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate
parameters NSDictionary* 保留参数
monitorDelegate id 监控信息的回调 delegate, 详见 ByteRTCMonitorDelegate

返回值 可用的 ByteRTCEngineKit 实例

注意 1. 连续多次调用该方法会创建不同的 ByteRTCEngineKit 2. 必须使用相同的App ID,App间才能进行通话

destroyEngine

- (void)destroyEngine;

手动销毁引擎实例对象,如果当前的引擎对象是通过 sharedEngineWithAppId:delegate: 所创建的,则行为与 destroy 保持一致

注意 1. 请确保一定是在所有业务场景的最后阶段才调用该方法 2. 该方法在调用之后,会销毁所有SDK相关的内存,并且停止与媒体服务器的任何交互 3. 本方法为阻塞调用,会阻塞当前线程直到SDK彻底完成退出逻辑,因而需要注意不要在回调线程中 直接调用本方法,也需要注意不要在回调方法中等待主线程的执行,而同时在主线程调用本方法,从而 造成死锁 4. 可以通过 Objective-C 的ARC机制,在 dealloc 时自动触发销毁逻辑

setUserRole:

- (BOOL)setUserRole:(ByteRTCUserRoleType)role;

设置用户角色。
通过设置不同的用户角色,可以控制用户在房间内的行为:

传入参数

参数名 类型 说明
role ByteRTCUserRoleType 用户角色,参看 ByteRTCUserRoleType。

返回值 方法调用结果。

注意

clientRole

- (ByteRTCUserRoleType)clientRole;

获取当前用户角色。

返回值 当前用户角色,详见 ByteRTCUserRoleType 枚举类型。

joinRoomByKey:roomId:roomProfile:userInfo:

- (int)joinRoomByKey:(NSString *_Nullable)token roomId:(NSString *_Nonnull)roomId roomProfile:(ByteRTCRoomProfile)roomProfile userInfo:(ByteRTCUserInfo *_Nonnull)userInfo;

加入房间。用户调用此方法加入房间,在一个房间内的用户间可以相互通话。
用户调用 sharedEngineWithAppId:delegate: 创建 RTC 引擎后,需调用此方法加入房间实现同其他用户进行音视频通话。
如果用户调用此方法加入房间,则后续重复调用此方法均会失败,用户必须调用 leaveRoom: 退出当前房间后,才能加入下一个房间。
本地用户调用此方法加入房间成功后,会收到 rtcEngine:onUserJoined:elapsed: 回调通知,远端用户会收到 rtcEngine:onUserJoined:elapsed: 回调通知。

传入参数

参数名 类型 说明
token NSString* 动态密钥,用于对登录用户进行鉴权验证。
进入房间需要携带 Token。测试时可使用控制台生成临时 Token ,正式上线需要使用密钥 SDK 在您的服务端生成并下发 Token 。
roomId NSString* 加入的房间 ID。
房间 ID 为长度在 128 字节以内的非空字符串,支持以下字符集范围:
1. 26 个大写字母 A ~ Z 。
2. 26 个小写字母 a ~ z 。
3. 10 个数字 0 ~ 9 。
4. 下划线 "_",at 符 "@",减号 "-"。
roomProfile ByteRTCRoomProfile 房间模式。
你应该根据业务需要,选择合适的房间模式。
你必须在进房前设置房间模式,并且进房后不可更改。
房间模式参看 ByteRTCRoomProfile。
userInfo ByteRTCUserInfo* 用户信息,参看 ByteRTCUserInfo。

返回值 方法调用结果。

注意

leaveRoom:

- (int)leaveRoom:(void (^_Nullable)(ByteRTCRoomStats *_Nonnull stat))leaveRoomBlock;

离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
调用 joinRoomByKey:roomId:roomProfile:userInfo: 方法加入房间后,必须调用此方法离开房间,否则无法进入下一个房间。无论当前是否在房间内,都可以调用此方法。重复调用此方法没有负面影响。
此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,SDK 会执行调用此方法时传入的 Block 块。

传入参数

参数名 类型 说明
leaveRoomBlock void (^_Nullable 离开房间完成后执行的 Block 块。Block 的输入参数为加入房间到离开房间过程间的统计信息,详见 ByteRTCRoomStats。

返回值 方法调用结果。

注意

updateToken:

- (int)updateToken:(NSString *_Nonnull)token;

更新 Token。
Token 有一定的有效期,当 Token 过期时,用户需调用此方法更新房间的 Token 信息。
用户调用 joinRoomByKey:roomId:roomProfile:userInfo: 方法加入房间时,如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调通知,回调错误码为 ByteRtcErrorCode.ByteRTCErrorCodeInvalidTokenByteRtcErrorCode。此时需要重新获取 Token,并调用此方法更新 Token。

传入参数

参数名 类型 说明
token NSString* 更新的动态密钥。

返回值 方法调用结果。

注意

startAudioCapture

- (void)startAudioCapture;

开启内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartAudioCapture: 的回调。

注意

stopAudioCapture

- (void)stopAudioCapture;

关闭内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopAudioCapture: 的回调。

注意

setAudioScenario:

- (void)setAudioScenario:(ByteRTCAudioScenarioType)audioScenario;

设置音频场景类型。
你可以根据你的应用所在场景,选择合适的音频场景类型。
选择音频场景后,RTC 会自动根据客户端音频路由和发布订阅状态,适用通话音量/媒体音量。
本方法在进房前和进房后设置均可生效。

传入参数

参数名 类型 说明
audioScenario ByteRTCAudioScenarioType 音频场景类型,适用通话音量/媒体音量
详见 ByteRTCAudioScenarioType

注意

muteLocalAudio:

- (void)muteLocalAudio:(ByteRTCMuteState)muteState;

控制本地音频流的发送状态:发送/不发送。
使用此方法后,房间中的其他用户会收到回调 rtcEngine:onUserMuteAudio:muteState:。

传入参数

参数名 类型 说明
muteState ByteRTCMuteState 发送状态,标识是否发送本地音频流,详见 ByteRTCMuteState

返回值 方法调用结果

注意 本方法仅控制本地音频流的发送状态,并不影响本地音频采集状态。

muteRemoteAudio:muteState:

- (void)muteRemoteAudio:(NSString * _Nonnull)uid muteState:(ByteRTCMuteState)muteState;

设置对来自指定远端用户的音频流的接收状态。默认为接收。

传入参数

参数名 类型 说明
uid NSString* 指定远端用户的 ID
muteState ByteRTCMuteState 接收状态,标识是否接收远端音频流,详见 ByteRTCMuteState

muteAllRemoteAudio:

- (void)muteAllRemoteAudio:(ByteRTCMuteState)muteState;

设置对来自远端的所有音频流的接收状态。默认为接收。

传入参数

参数名 类型 说明
muteState ByteRTCMuteState 接收状态,标识是否接收远端音频流,详见 ByteRTCMuteState

注意 本方法只影响本地是否接收远端音频流,并不影响远端音频设备的采集发送功能。

setAudioVolumeIndicationInterval:

- (void)setAudioVolumeIndicationInterval:(NSInteger)interval;

开启/关闭音量提示。默认关闭。
开启音量提示后,将按设置的时间间隔收到本地采集音量或订阅的远端用户的音量信息回调。 关于回调的具体信息,参看 rtcEngine:onAudioVolumeIndication:totalRemoteVolume:。

传入参数

参数名 类型 说明
interval NSInteger 收到音量提示回调的时间间隔
• ≤ 0:禁用音量提示功能。
• > 0:启用音量提示功能,并设置收到音量提示回调的时间间隔。单位为毫秒。
建议设置为大于等于 200 毫秒;小于 10 毫秒时,行为未定义。

setRecordingVolume:

- (void)setRecordingVolume:(NSInteger)volume;

调节音频采集音量。

传入参数

参数名 类型 说明
volume NSInteger 音频采集音量,取值范围: [0,400]
• 0: 静音
• 100: 原始音量
• 400: 最大可为原始音量的 4 倍(自带溢出保护)

注意 为保证更好的通话质量,建议将 volume 值设为 [0,100]。

setPlaybackVolume:

- (void)setPlaybackVolume:(NSInteger)volume;

调节本地播放的所有远端用户混音后的音量。

传入参数

参数名 类型 说明
volume NSInteger 音频播放音量,取值范围:[0,400]
• 0: 静音
• 100: 原始音量
• 400: 最大可为原始音量的 4 倍(自带溢出保护)

注意 为保证更好的通话质量,建议将 volume 值设为 [0,100]。

setLocalVideoRenderer:

- (int)setLocalVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer;

设置本地视频外部渲染器。

传入参数

参数名 类型 说明
videoRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol

返回值

setLocalVideoRenderer:forRoomId:forUserId:

- (int)setLocalVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;

设置本地视频外部渲染器。

传入参数

参数名 类型 说明
videoRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol
roomId NSString* 房间ID
userId NSString* 用户ID

返回值

setRemoteVideoRenderer:forRoomId:forUserId:

- (int)setRemoteVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;

设置特定远端用户的外部渲染器。

传入参数

参数名 类型 说明
videoRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol
roomId NSString* 房间ID
userId NSString* 用户ID

返回值

setRemoteVideoRenderer:forUserId:

- (int)setRemoteVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forUserId:(NSString * _Nonnull)userId;

设置特定远端用户的外部渲染器。

传入参数

参数名 类型 说明
videoRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol
userId NSString* 用户ID

返回值

setupRemoteScreenRenderer:forRoomId:forUserId:

- (int)setupRemoteScreenRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)screenRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;

设置远端屏幕共享的外部渲染器。

传入参数

参数名 类型 说明
screenRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol
roomId NSString* 房间ID
userId NSString* 用户ID

返回值

注意 在应用开发中,通常在应用收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 事件后调用该方法进行远端视频设置。

setupRemoteScreenRenderer:forUserId:

- (int)setupRemoteScreenRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)screenRenderer forUserId:(NSString * _Nonnull)userId;

设置远端屏幕共享的外部渲染器。

传入参数

参数名 类型 说明
screenRenderer id 外部渲染器,具体参照 ByteRTCVideoSinkProtocol
userId NSString* 用户ID

返回值

注意 在应用开发中,通常在应用收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 事件后调用该方法进行远端视频设置

setVideoEncoderConfig:

- (int)setVideoEncoderConfig:(NSArray <ByteRTCVideoSolution *> * _Nullable)videoSolutions;

启动推送多路视频流,设置推送多路流时的各路视频参数, 包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。

传入参数

参数名 类型 说明
videoSolutions NSArray * 视频参数数组首地址,参看 ByteRTCVideoSolution。
• 若选取的帧率为 5 FPS,则推算码率为<视频属性 (Profile) 参考表>推荐码率除以 2
• 若选取的帧率为 15 FPS,则推算码率为<视频属性 (Profile) 参考表>推荐码率
• 若选取的帧率为 30 FPS,则推算码率为<视频属性 (Profile) 参考表>码率乘以 1.5
• 若选取其余帧率,等比例推算即可
• 若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率

返回值

setLocalVideoCanvas:withCanvas:

- (int)setLocalVideoCanvas:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;

设置本地视频渲染时,使用的视图,并设置渲染模式。
你应在加入房间前,绑定本地视图。退出房间后,此设置仍然有效。 如果需要解除绑定,你可以调用本方法绑定空视图。

传入参数

参数名 类型 说明
streamIndex ByteRTCStreamIndex 流属性,参看 ByteRTCStreamIndex:ByteRTCStreamIndex
canvas ByteRTCVideoCanvas* 视图信息和渲染模式,参看 ByteRTCVideoCanvas:ByteRTCVideoCanvas

返回值

setRemoteVideoCanvas:withIndex:withCanvas:

- (int)setRemoteVideoCanvas:(NSString * _Nonnull)uid withIndex:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;

设置来自指定远端用户 user_id 的视频渲染时,使用的视图,并设置渲染模式。
你应在加入房间前,绑定视图。退出房间后,此设置失效。
如果需要解除某个用户的绑定视图,你可以把 view 设置为空。

传入参数

参数名 类型 说明
uid NSString* 视频来源的远端用户 ID
streamIndex ByteRTCStreamIndex 视频流属性,参看 ByteRTCStreamIndex:ByteRTCStreamIndex
canvas ByteRTCVideoCanvas* 视图信息和渲染模式,参看 ByteRTCVideoCanvas:ByteRTCVideoCanvas

返回值

注意

startVideoCapture

- (void)startVideoCapture;

开启内部视频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartVideoCapture: 的回调。

注意

stopVideoCapture

- (void)stopVideoCapture;

关闭内部视频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopVideoCapture: 的回调。

注意

muteLocalVideo:

- (int)muteLocalVideo:(ByteRTCMuteState)mute_state;

停止/启动发送本地视频流。 调用该方法后,房间中的其他用户会收到 rtcEngine:onUserMuteVideo:withMuteState: 的回调。

传入参数

参数名 类型 说明
mute_state ByteRTCMuteState 发送状态,标识是否发送本地视频流,参看 ByteRTCMuteStateByteRTCMMuteState

返回值

muteRemoteVideo:withMuteState:

- (int)muteRemoteVideo:(NSString * _Nonnull)uid withMuteState:(ByteRTCMuteState)muteState;

设置是否播放远端视频流

传入参数

参数名 类型 说明
uid NSString* 视频来源的远端用户 ID
muteState ByteRTCMuteState 播放状态,标识是否播放远端视频流,参看 ByteRTCMuteState

返回值

muteAllRemoteVideo:

- (int)muteAllRemoteVideo:(ByteRTCMuteState)muteState;

设置是否播放所有远端视频流

传入参数

参数名 类型 说明
muteState ByteRTCMuteState 播放状态,标识是否播放远端视频流,参看 ByteRTCMuteState

返回值

setLocalVideoMirrorMode:

- (int)setLocalVideoMirrorMode:(ByteRTCMirrorMode) mode;

设置采用前置摄像头采集时,是否开启镜像模式。默认为关闭状态。
调用后,你会收到回调:rtcEngine:didMirrorStateChanged:

传入参数

参数名 类型 说明
mode ByteRTCMirrorMode 是否开启镜像模式,参看 ByteRTCMirrorMode

返回值

isLocalVideoMirrorOn

- (bool)isLocalVideoMirrorOn;

获取本地视频镜像状态

返回值 当前镜像状态

switchCamera:

- (int)switchCamera:(ByteRTCCameraID) cameraId;

切换移动端前置/后置摄像头

传入参数

参数名 类型 说明
cameraId ByteRTCCameraID 移动端摄像头 ID,参看 ByteRTCCameraID。

返回值

replaceBackground:withDivideModel:

- (int) replaceBackground:(ByteRTCBackgroundMode)mode withDivideModel:(ByteRTCDivideModel)divideModel;

视频图像分割,替换背景

传入参数

参数名 类型 说明
mode ByteRTCBackgroundMode 背景模式,用于设置预制背景、是否虚化等。参看 ByteRTCBackgroundMode
divideModel ByteRTCDivideModel 选择使用哪种分割模型。参看 ByteRTCDivideModel

返回值

checkVideoEffectSupport

- (int) checkVideoEffectSupport;

检查当前版本是否支持视频特效

返回值 : 0: 不支持 >0: 支持视频特效

checkVideoEffectLicense:

- (int) checkVideoEffectLicense:(NSString * _Nonnull)licenseFile;

视频特效许可证检查

传入参数

参数名 类型 说明
licenseFile NSString* 许可证文件绝对路径

返回值 0: 许可证验证成功 !0: 许可证验证验证失败

注意 enableVideoEffectenableVideoEffect:开始使用视频特效前,需要先调用这个方法进行许可证验证

enableVideoEffect:

- (int) enableVideoEffect:(BOOL)enabled;

创建/销毁视频特效引擎

传入参数

参数名 类型 说明
enabled BOOL 是否创建视频特效引擎
• true: 创建
• false: 销毁
@retur 方法调用结果
• 0: 成功
• !0: 失败。

注意

setVideoEffectAlgoModelPath:

- (void) setVideoEffectAlgoModelPath:(NSString * _Nonnull)modelPath;

设置视频特效算法模型路径

传入参数

参数名 类型 说明
modelPath NSString* 模型路径

setVideoEffectNodes:

- (void) setVideoEffectNodes:(NSArray <NSString *> *_Nonnull)effectNodePaths;

设置视频特效包,支持同时设置多个特效包

传入参数

参数名 类型 说明
effectNodePaths NSArray * 特效包路径数组

注意 你须在调用 enableVideoEffect: 后调用该方法。

addVideoEffectNodes:

- (void) addVideoEffectNodes:(NSArray <NSString *> *_Nonnull)effectNodePaths;

增加特效包,支持同时增加多个特效包

传入参数

参数名 类型 说明
effectNodePaths NSArray * 要追加的特效包路径数组

removeVideoEffectNodes:

- (void) removeVideoEffectNodes:(NSArray <NSString *> *_Nonnull)effectNodePaths;

移除特效包,支持同时移除多个特效包

传入参数

参数名 类型 说明
effectNodePaths NSArray * 要移除的特效包路径数组

updateVideoEffectNode:nodeKey:nodeValue:

- (void) updateVideoEffectNode:(NSString * _Nonnull)nodePath nodeKey:(NSString * _Nonnull)nodeKey nodeValue:(float) nodeValue;

设置特效强度

传入参数

参数名 类型 说明
nodePath NSString* 特效包路径
nodeKey NSString* 需要设置的特效名称。参看素材key对应说明。
nodeValue float 需要设置的强度值。取值范围为 [0,1],超出该范围设置无效。

注意 该接口仅适用于同时含有上述三个参数的特效资源,对于如大部分贴纸类等没有强度参数的特效,该接口调用无效。

setVideoEffectColorFilter:

- (void) setVideoEffectColorFilter:(NSString * _Nonnull)resPath;

设置颜色滤镜

传入参数

参数名 类型 说明
resPath NSString* 滤镜资源包绝对路径

setVideoEffectColorFilterIntensity:

- (void) setVideoEffectColorFilterIntensity:(float) intensity;

设置颜色滤镜强度

传入参数

参数名 类型 说明
intensity float 滤镜强度。取值范围[0,1] ,超出范围时设置无效

setMediaMetadataObserver:

- (BOOL)setMediaMetadataObserver:(_Nullable id<ByteRTCMediaMetadataObserver>) metadataObserver;

注册 metadata 观察者,用于接收或发送 metadata,底层通过在视频帧中添加 SEI 数据实现该功能。
注册观察者后,发送的视频帧里面没有 SEI 信息, 会触发 videoFrameMediaMetaDataAtTime: 回调。
注册观察者后,接收的视频帧里面有 SEI 信息,会触发接收 receiveVideoFrameFromUID:withExtendedData:atTimestamp: 回调。

传入参数

参数名 类型 说明
metadataObserver id metadata 观察者,详见: ByteRTCMediaMetadataObserver

返回值

注意

enableAutoSubscribe:videoMode:

- (BOOL)enableAutoSubscribe:(ByteRTCSubscribeMode)audioMode videoMode:(ByteRTCSubscribeMode)videoMode;

设置订阅模式。
用户调用此方法设置房间中是音视频流的订阅模式。默认自动订阅。
如需开启手动订阅功能,建议在调用 joinRoomByKey:roomId:roomProfile:userInfo:方法加入房间前完成设置。

传入参数

参数名 类型 说明
audioMode ByteRTCSubscribeMode 音频流的订阅模式。参看 ByteRTCSubscribeMode 。
videoMode ByteRTCSubscribeMode 视频流的订阅模式。参看 ByteRTCSubscribeMode 。

返回值 方法执行结果。

subscribeStream:subscribeConfig:

- (void)subscribeStream:(NSString *_Nonnull)userId subscribeConfig:(ByteRTCSubscribeConfig *_Nonnull)info;

订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法按需订阅房间中的音视频流。
此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe:videoMode: 方法关闭自动订阅功能以使用手动订阅模式。
订阅流失败时,SDK 会按失败原因回调 rtcEngine:onError: 通知用户,具体错误可参考错误码 ByteRTCErrorCode 描述。

传入参数

参数名 类型 说明
userId NSString* 指定订阅的远端音视频流的发布用户的用户ID 。
info ByteRTCSubscribeConfig* 选择订阅配置,详见数据结构 ByteRTCSubscribeConfig 。

注意

unSubscribeStream:isScreen:

- (void)unSubscribeStream:(NSString *_Nonnull)userId isScreen:(BOOL)isScreen;

停止订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法停止订阅已订阅的音视频流。
此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe:videoMode:enableAutoSubscribe:videoMode:: 方法关闭自动订阅功能以使用手动订阅模式。

传入参数

参数名 类型 说明
userId NSString* 指定订阅的远端音视频流的发布用户的用户ID。
isScreen BOOL 订阅的流是否是屏幕共享流。

注意

setAudioPlaybackDevice:

- (int)setAudioPlaybackDevice:(ByteRTCAudioPlaybackDevice)audioPlaybackDevice;

设置音频播放设备为扬声器或者听筒,默认使用扬声器。
音频播放设备发生变化时,会收到 rtcEngine:onAudioPlaybackDeviceChanged: 回调。

传入参数

参数名 类型 说明
audioPlaybackDevice ByteRTCAudioPlaybackDevice 音频播放设备(扬声器或者听筒),详见 ByteRTCAudioPlaybackDevice。

返回值 方法调用结果

注意

startLiveTranscoding:observer:

- (int)startLiveTranscoding:(ByteRTCLiveTranscoding *_Nonnull)transcoding observer:(id<LiveTranscodingDelegate> _Nonnull)observer;

开启合流转推,并设置合流的视频视图布局和音频属性。

传入参数

参数名 类型 说明
transcoding ByteRTCLiveTranscoding* observer
合流转推配置参数,详见 ByteRTCLiveTranscoding
observer id 端云一体合流转推观察者。
• 合流转推的状态和方式会通过回调上报 RTC Engine。
• 只有房间模式为直播模式,且用户角色为主播的用户才能调用此方法。
• 启用端云一体合流转推时,回调合流完成的音视频流和 SEI 信息给 App。详见 LiveTranscodingDelegate 数据类型。

注意

stopLiveTranscoding

- (int)stopLiveTranscoding;

停止合流转推。

返回值 方法调用结果。

updateLiveTranscoding:

- (int)updateLiveTranscoding:(ByteRTCLiveTranscoding *_Nonnull)transcoding;

更新合流转推参数。
启用合流转推功能后,你可以使用此方法更新合流转推功能配置参数。

传入参数

参数名 类型 说明
transcoding ByteRTCLiveTranscoding* 视频合流配置参数,详见 ByteRTCLiveTranscoding 类型。

返回值 方法调用结果。

enableCloudRending:

- (int)enableCloudRending:(NSString *_Nonnull)rendingInfo;

按照传入的布局信息开启云端渲染。

传入参数

参数名 类型 说明
rendingInfo NSString* 渲染功能相关参数。

返回值 方法调用结果。

updateCloudRending:

- (int)updateCloudRending:(NSString *_Nonnull)rendingInfo;

按照传入的布局信息更新云端渲染。

传入参数

参数名 类型 说明
rendingInfo NSString* 渲染功能相关参数。

返回值 方法调用结果。

disableCloudRending

- (int)disableCloudRending;

停止云端渲染。

返回值 方法调用结果。

setVideoInputType:

- (void)setVideoInputType:(ByteRTCMediaInputType)type;

配置视频采集源。

传入参数

参数名 类型 说明
type ByteRTCMediaInputType 视频输入类型,参看 ByteRTCMediaInputType。

注意

pushExternalVideoFrame:time:

- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts;

推送外部视频帧。

传入参数

参数名 类型 说明
frame CVPixelBufferRef 该视频帧包含待 SDK 编码的视频数据
pts CMTime CMTime

返回值

注意 使用外部推送视频帧,调用 setVideoInputType 开启外部视频源功能,详见 setVideoInputType:

pushExternalVideoFrame:time:rotation:

- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(ByteRTCVideoRotation)rotation;

推送外部视频帧。

传入参数

参数名 类型 说明
frame CVPixelBufferRef 该视频帧包含待 SDK 编码的视频数据
pts CMTime CMTime
rotation ByteRTCVideoRotation 当前视频角度

返回值

注意 使用外部推送视频帧,调用 setVideoInputType: 开启外部视频源功能,详见 setVideoInputType:

pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo:

- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(ByteRTCVideoRotation)rotation extendedData:(NSData* _Nullable)extendedData supplementaryInfo:(NSData* _Nullable)supplementoryInfo;

推送外部视频帧。

传入参数

参数名 类型 说明
frame CVPixelBufferRef 该视频帧包含待 SDK 编码的视频数据
pts CMTime CMTime
rotation ByteRTCVideoRotation 当前视频角度
extendedData NSData* 当前帧的扩展数据,没有的话就传空
supplementoryInfo NSData* 附加信息,比如人脸位置等等

返回值

pushExternalByteVideoFrame:

- (BOOL)pushExternalByteVideoFrame:(ByteRTCVideoFrame * _Nonnull)frame;

推送外部视频帧,使用 ByteRTCVideoFrame 进行封装。

传入参数

参数名 类型 说明
frame ByteRTCVideoFrame* 该视频帧包含待 SDK 编码的视频数据,参考 ByteRTCVideoFrame

返回值

enableExternalAudioDevice:playbackFormat:

- (void)enableExternalAudioDevice:(ByteRTCAudioFormat * _Nonnull) recordingFormat playbackFormat:(ByteRTCAudioFormat * _Nonnull) playbackFormat;

启用自定义音频采集渲染

传入参数

参数名 类型 说明
recordingFormat ByteRTCAudioFormat* 自定义音频数据采集格式,详见 ByteRTCAudioFormat
playbackFormat ByteRTCAudioFormat* 自定义音频数据渲染格式,详见 ByteRTCAudioFormat

注意

disableExternalAudioDevice

- (void)disableExternalAudioDevice;

禁用已开启的自定义音频采集渲染,将音频采集渲染由自定义模块切换至内部模块。

注意

setAudioPlayoutMixStream:sampleRate:channelNum:

- (BOOL)setAudioPlayoutMixStream:(BOOL) enable sampleRate:(int) sampleRate channelNum:(int) channelNum;

启动/停止外部音频流混音, 并设置混音数据格式

传入参数

参数名 类型 说明
enable BOOL • YES: 启用外部音频流混音。
• NO: 停止外部音频流混音。
sampleRate int 音频采样率,单位HZ。目前支持的采样率有:8000HZ, 16000HZ, 32000HZ, 44100HZ,48000HZ。
channelNum int 音频声道个数。目前支持单通道(1),双通道(2)

返回值

注意

getAudioMixingStreamCachedFrameNum

- (int)getAudioMixingStreamCachedFrameNum;

获取SDK当前缓冲数据

返回值

注意 调用该方法可以实时获取缓存数据量,并以此数据为基准调整数据推送节奏来避免内存溢出

pushAudioMixingStreamData:frameNum:

- (BOOL)pushAudioMixingStreamData:(void* _Nonnull)audioFrame frameNum:(int)frameNum;

向SDK推送混音的音频数据

传入参数

参数名 类型 说明
audioFrame void* PCM音频数据,其格式与 setAudioPlayoutMixStream:sampleRate:channelNum: 保持一致。
frameNum int 采样点数。若音频采样率为 48000HZ,则单个声道每秒的数据量为 48000 个采样点,10 毫秒的音频数据对应的采样点数为 480 个采样点。

返回值

注意

setRecordingAudioFrameParameters:channels:

- (BOOL)setRecordingAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;

设置本地麦克风录制的音频数据回调参数

传入参数

参数名 类型 说明
samplesPerSec NSInteger 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000
channels NSInteger 音频通道数,支持单声道(1)和双声道(2)

返回值 方法调用结果

注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onRecordAudioFrameonRecordAudioFrame:收到数据

setPlaybackAudioFrameParameters:channels:

- (BOOL)setPlaybackAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;

设置远端所有用户音频数据混音后的音频数据回调参数

传入参数

参数名 类型 说明
samplesPerSec NSInteger 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000
channels NSInteger 音频通道数,支持单声道(1)和双声道(2)

返回值 方法调用结果

注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onPlaybackAudioFrameonPlaybackAudioFrame:收到数据

setMixedAudioFrameParameters:channels:

- (BOOL)setMixedAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;

设置本地麦克风录制音频数据和远端所有用户音频数据混音后的音频数据回调参数

传入参数

参数名 类型 说明
samplesPerSec NSInteger 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000
channels NSInteger 音频通道数,支持单声道(1)和双声道(2)

返回值 方法调用结果

注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onMixedAudioFrameonMixedAudioFrame:收到数据

setAudioFrameObserver:

- (BOOL)setAudioFrameObserver:(_Nullable id<ByteRTCAudioFrameObserver>) audioFrameObserver;

设置音频数据回调观察者

传入参数

参数名 类型 说明
audioFrameObserver id 音频数据回调的观察者对象,详见: ByteRTCAudioFrameObserver

返回值 方法调用结果

注意 本方法需要与下面3个方法配合使用:setRecordingAudioFrameParameters:channels:、 setPlaybackAudioFrameParameters:channels:、 setMixedAudioFrameParameters:channels:

pushExternalAudioFrame:

- (int)pushExternalAudioFrame:(ByteRTCAudioFrame * _Nonnull) audioFrame;

推送外部音频数据。

传入参数

参数名 类型 说明
audioFrame ByteRTCAudioFrame* 音频数据帧,详见 ByteRTCAudioFrame

返回值 方法调用结果

注意

pullExternalAudioFrame:

- (int)pullExternalAudioFrame:(ByteRTCAudioFrame * _Nonnull) audioFrame;

拉取外部音频数据。

传入参数

参数名 类型 说明
audioFrame ByteRTCAudioFrame* 音频数据帧,详见 ByteRTCAudioFrame

返回值 方法调用结果

注意

sendRoomMessage:

- (int)sendRoomMessage:(NSString * _Nonnull)msg;

给房间内的所有其他用户发送广播文本消息。(Broadcast),返回这次发送消息的编号。

传入参数

参数名 类型 说明
msg NSString* 用户发送的广播文本消息

返回值 这次发送消息的编号,从 1 开始递增。

注意 1. 调用该函数后会收到一次 rtcEngine:onRoomMessageSendResult:error: 回调,通知消息发送方发送成功或失败;
2. 若文本消息发送成功,则房间内所有用户会收到 rtcEngine:onRoomMessageReceived:message:rtcEngine: onRoomMessageReceived:message: 回调。

sendRoomBinaryMessage:

- (int)sendRoomBinaryMessage:(NSData * _Nonnull)msg;

给房间内的所有其他用户发送广播二进制消息(Broadcast),返回这次发送消息的编号。

传入参数

参数名 类型 说明
msg NSData* 广播二进制消息的内容。

返回值 这次发送消息的编号,从 1 开始递增。

注意 1. 调用该函数后会收到一次 rtcEngine:onRoomMessageSendResult:error:回调,通知消息发送方发送成功或失败;
2. 若二进制消息发送成功,则 房间内所有用户会收到 rtcEngine:onRoomBinaryMessageReceived:message: 回调。

setAudioPerformanceProfile:

- (void)setAudioPerformanceProfile:(ByteRTCAudioPerformanceProfile) profile;

通过设置音频处理策略等级,获得不同的音频处理质量,默认为 auto 模式。
auto 模式下,SDK 会根据应用所在机型等级,自动适配音频处理策略。一般情况下,使用 auto 模式就可满足你的音视频通话需求。
你应使用此方法,实现音频体验和系统性能占用之间的平衡:
如果你希望系统性能占用较低,你应设置较低的策略等级;如果你更在意音频质量,你应选择设置更高的策略等级。
音频处理策略详见 ByteRTCAudioPerformanceProfile。

传入参数

参数名 类型 说明
profile ByteRTCAudioPerformanceProfile 音频处理策略等级, 详见 ByteRTCAudioPerformanceProfile

注意

setBusinessId:

- (int)setBusinessId:(NSString* _Nullable)businessId;

设置业务标识参数。
可通过 businessId 区分不同的业务场景(角色/策略等)。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能。

传入参数

参数名 类型 说明
businessId NSString* 用户设置的自己的 businessId 值。businessId 相当于一个 sub AppId,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
businessId 只是一个标签,颗粒度需要用户自定义。

返回值

注意

sendUserMessage:message:

- (int64_t)sendUserMessage:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;

给房间内指定的用户发送文本消息(P2P),返回这次发送消息的编号。

传入参数

参数名 类型 说明
uid NSString* 指定用户 ID 。
message NSString* 发送的文本消息内容。

返回值 这次发送消息的编号,从 1 开始递增。

注意 1. 调用该函数后会收到一次 rtcEngine:onUserMessageSendResult:error: 回调,通知消息发送方发送成功或失败;
2. 若文本消息发送成功,则 uid 所指定的用户会收到 rtcEngine:onUserMessageReceived:message: 回调。

sendUserBinaryMessage:message:

- (int64_t)sendUserBinaryMessage:(NSString * _Nonnull)uid message:(NSData * _Nonnull)message;

给房间内指定的用户发送二进制消息(P2P),返回这次发送消息的编号。

传入参数

参数名 类型 说明
uid NSString* 指定用户 ID。
message NSData* 二进制消息的内容。

返回值 这次发送消息的编号,从 1 开始递增。

注意 1. 调用该函数后会收到一次 rtcEngine:onUserMessageSendResult:error:回调,通知消息发送方发送成功或失败;
2. 若二进制消息发送成功,则 uid 所指定的用户会收到 rtcEngine: onUserBinaryMessageReceived:message:rtcEngine:onUserBinaryMessageReceived:message:回调。

setRemoteAudioPlaybackVolume:volume:

- (void)setRemoteAudioPlaybackVolume:(NSString* _Nonnull)uid volume:(int)volume;

调节来自指定远端用户的音频播放音量,默认为 100。

传入参数

参数名 类型 说明
uid NSString* 音频来源的远端用户 ID
volume int 播放音量,调节范围:[0,400]
• 0: 静音
• 100: 原始音量
• 400: 最大可为原始音量的 4 倍(自带溢出保护)

getAudioMixingDuration

- (int)getAudioMixingDuration;

获取音乐文件时长

返回值

注意 请在房间内调用该方法。

getAudioMixingCurrentPosition

- (int)getAudioMixingCurrentPosition;

获取音乐文件播放进度

返回值

注意 请在房间内调用该方法。

stopAudioMixing

- (int)stopAudioMixing;

停止播放音乐文件及混音

返回值

注意

pauseAudioMixing

- (int)pauseAudioMixing;

暂停播放音乐文件

返回值

注意

resumeAudioMixing

- (int)resumeAudioMixing;

恢复播放音乐文件

返回值

注意

adjustAudioMixingVolume:

- (int)adjustAudioMixingVolume:(NSInteger)volume;

调节音乐文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。

传入参数

参数名 类型 说明
volume NSInteger 音乐文件播放音量范围为 0~400。
• 0:静音
• 100:原始音量
• 400: 最大可调音量 (自带溢出保护)

返回值

注意

startAudioMixing:loopback:replace:cycle:

- (int)startAudioMixing:(NSString * _Nonnull)filePath loopback:(BOOL)loopback replace:(BOOL)replace cycle:(NSInteger)cycle;

开始播放音乐文件及混音。

传入参数

参数名 类型 说明
filePath NSString* 指定需要混音的本地文件的绝对路径。支持音频文件格式有: mp3,aac,m4a,3gp,wav。
loopback BOOL YES: 只有本地可以听到混音或替换后的音频流。
NO: 本地和对方都可以听到混音或替换后的音频流
replace BOOL YES: 只推送设置的本地音频文件,不传输麦克风采集的音频。
NO: 音频文件内容将会和麦克风采集的音频流进行混音。
cycle NSInteger 指定音频文件循环播放的次数。
• >0: 循环的次数。
• -1: 无限循环

返回值

注意

setAudioMixingPosition:

- (int)setAudioMixingPosition:(NSInteger)pos;

设置音频文件的播放位置

传入参数

参数名 类型 说明
pos NSInteger 整数。进度条位置,单位为毫秒。

返回值

注意 该方法可以设置音频文件的播放位置,这样你可以根据实际情况从指定的位置播放音乐文件,无需从头到尾完整播放一个音乐文件。

adjustAudioMixingPlayoutVolume:

- (int)adjustAudioMixingPlayoutVolume:(NSInteger)volume;

调节音乐文件的本地播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。

传入参数

参数名 类型 说明
volume NSInteger 音乐文件播放音量范围为 0~400。
• 0:静音
• 100:原始音量
• 400: 最大可调音量 (自带溢出保护)

返回值

注意

adjustAudioMixingPublishVolume:

- (int)adjustAudioMixingPublishVolume:(NSInteger)volume;

调节音乐文件的远端播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。

传入参数

参数名 类型 说明
volume NSInteger 音乐文件播放音量范围为 0~400。
• 0:静音
• 100:原始音量
• 400: 最大可调音量 (自带溢出保护)

返回值

注意

setVolumeOfEffect:withVolume:

- (int)setVolumeOfEffect:(NSInteger)soundId withVolume:(NSInteger)volume;

调节指定音效文件的文件音量

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect:filePath:loopback:cycle:withVolume: 设置的 soundId 相同。
volume NSInteger 音乐文件播放音量范围为 0~400。默认 100 为原始文件音量

返回值

注意

getEffectVolume:

- (int)getEffectVolume:(NSInteger)soundId;

获取指定音效文件的文件音量

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect:filePath:loopback:cycle:withVolume: 设置的 soundId 相同。

返回值

注意 请在房间内调用该方法。

playEffect:filePath:loopback:cycle:withVolume:

- (int)playEffect:(NSInteger)soundId filePath:(NSString * _Nullable)filePath loopback:(BOOL)loopback cycle:(NSInteger)cycle withVolume:(NSInteger)volume;

开始播放指定音效文件。你可以在该方法中设置音效文件的播放次数、音量大小,以及远端用户是否能听到该音效。

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect:filePath: 将音效加载至内存,确保此处的 soundId 与 preloadEffect:filePath: 设置的 soundId 相同。
filePath NSString* 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav
loopback BOOL • YES: 只有本地可以听到该音效;
• NO: 本地和远端用户都可以听到该音效
cycle NSInteger 指定音频文件循环播放的次数。
• >0:循环的次数。
• -1:无限循环,直至调用 stopEffect: 或 stopAllEffects 后停止。
volume NSInteger 音效文件播放音量范围为 0~400。默认 100 为原始文件音量。

返回值

注意

preloadEffect:filePath:

- (int)preloadEffect:(NSInteger)soundId filePath:(NSString * _Nullable)filePath;

预加载指定音效文件

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。
filePath NSString* 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav。

返回值

注意

unloadEffect:

- (int)unloadEffect:(NSInteger)soundId;

卸载指定音效文件

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。

返回值

注意

pauseEffect:

- (int)pauseEffect:(NSInteger)soundId;

暂停播放指定音效文件

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性

返回值

注意 调用该方法暂停播放指定音效文件,可以调用 resumeEffect: 方法恢复播放。

resumeEffect:

- (int)resumeEffect:(NSInteger)soundId;

恢复播放指定音效文件

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。

返回值

注意

stopEffect:

- (int)stopEffect:(NSInteger)soundId;

停止播放指定音效文件

传入参数

参数名 类型 说明
soundId NSInteger 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect:filePath: 将音效加载至内存,确保此处的 soundId 与 preloadEffect:filePath: 设置的 soundId 相同。

返回值

注意

setEffectsVolume:

- (int)setEffectsVolume:(NSInteger)volume;

调节所有音效文件的文件音量

传入参数

参数名 类型 说明
volume NSInteger 音乐文件播放音量范围为 0~400。默认 100 为原始文件音量。

返回值

注意

unloadAllEffects

- (int)unloadAllEffects;

卸载所有音效文件

返回值

注意

pauseAllEffects

- (int)pauseAllEffects;

暂停所有音效文件的播放

返回值

注意 该方法暂停所有音效文件的播放,可调用 resumeAllEffects 方法恢复播放。

resumeAllEffects

- (int)resumeAllEffects;

恢复所有音效文件的播放

返回值

注意

stopAllEffects

- (int)stopAllEffects;

停止所有音效文件的播放

返回值

注意 该方法停止所有音效文件的播放。

setPublishFallbackOption:

- (int)setPublishFallbackOption:(ByteRTCPublishFallbackOption)option;

设置发布的音视频流回退选项

传入参数

参数名 类型 说明
option ByteRTCPublishFallbackOption 本地发布的音视频流回退选项,详见枚举类型 ByteRTCPublishFallbackOption

返回值

注意

setSubscribeFallbackOption:

- (int)setSubscribeFallbackOption:(ByteRTCSubscribeFallbackOption)option;

设置订阅的音视频流回退选项

传入参数

参数名 类型 说明
option ByteRTCSubscribeFallbackOption 远端订阅的流回退处理选项,详见枚举类型 ByteRTCSubscribeFallbackOption

返回值

注意

setRemoteUserPriority:uid:

- (int)setRemoteUserPriority:(ByteRTCRemoteUserPriority)priority uid:(NSString *_Nonnull)uid;

设置用户优先级

传入参数

参数名 类型 说明
priority ByteRTCRemoteUserPriority 远端用户的优先级, 详见枚举类型 ByteRTCRemoteUserPriority
uid NSString* 远端用户的 ID

返回值

注意

setEncryptType:key:

- (void)setEncryptType:(ByteRTCEncryptType)encrypt_type key:(NSString * _Nonnull)key;

设置传输时使用内置加密的方式

传入参数

参数名 类型 说明
encrypt_type ByteRTCEncryptType 内置加密算法,详见 ByteRTCEncryptType
key NSString* 加密密钥,长度限制为 36 位,超出部分将会被截断

注意

setCustomizeEncryptHandler:

- (void)setCustomizeEncryptHandler:(id<ByteRTCEncryptHandler> _Nullable)handler;

设置自定义加密和解密方式 需要实现对应的加密和解密方法。详情参考 ByteRTCEncryptHandler

传入参数

参数名 类型 说明
handler id 自定义加密 handler,需要实现里面的加密和解密方法

注意

setScreenCapture:Rect:screenCaptureParam:

- (int)setScreenCapture:(BOOL)enable Rect:(CGRect)rect screenCaptureParam:(ByteRTCScreenCaptureParam * _Nonnull)param;

配置外部屏幕采集

传入参数

参数名 类型 说明
enable BOOL YES :开启;
NO :不开启;
rect CGRect 采集区域
param ByteRTCScreenCaptureParam* 采集参数 ByteRTCScreenCaptureParam

返回值 0 :成功;

-1 :失败;

注意 1.屏幕采集分为内部采集和外部采集,本方法属于外部采集。 内部采集:由 SDK 进行屏幕采集和后续所有流程 外部采集:用户负责采集屏幕数据帧,通过接口提供给 SDK 2.调用此方法发布本端屏幕共享流后,用户还需要通过设置定时任务周期性调用 pushScreenCaptureFrame:time:rotation: 方法,将需要发送的屏幕数据推送给 SDK。 3.调用该接口后远端能收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 和 rtcEngine:onStreamAdd: 事件。

pushScreenCaptureFrame:time:rotation:

- (void)pushScreenCaptureFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(int)rotation;

推送外部屏幕采集帧

传入参数

参数名 类型 说明
frame CVPixelBufferRef 该视频帧包含待 SDK 编码的视频数据
pts CMTime 每一帧的时间戳,单位 ms
rotation int 帧的旋转角度包含: 0, 90, 180, 270

注意 1.屏幕采集分为内部采集和外部采集,本方法属于外部采集。

startScreenSharingWithParam:preferredExtension:groupId:

- (int)startScreenSharingWithParam:(ByteRTCScreenCaptureParam *_Nonnull)param preferredExtension:(NSString *_Nullable)extension groupId:(NSString *_Nonnull)groupId API_AVAILABLE(ios(12));

开始内部屏幕采集

传入参数

参数名 类型 说明
param ByteRTCScreenCaptureParam* 采集参数 ByteRTCScreenCaptureParam
extension NSString* 传入 Broadcast Upload Extension 的 Bundle Id,用于在设置中优先展示 Extension
groupId NSString* App 和 Extension 应该归属于同一个 App Group,此处需要传入 Group Id。

返回值 0 :成功;

-1 :失败;

注意 1.屏幕采集分为内部采集和外部采集,本方法属于内部采集。 内部采集:由 SDK 进行屏幕采集和后续所有流程 外部采集:用户负责采集屏幕数据帧,通过接口提供给 SDK 2.调用该接口后远端能收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 和 rtcEngine:onStreamAdd: 事件。 3.内部采集时,外部不需要屏幕采集帧。

API_AVAILABLE

- (void)stopScreenSharing API_AVAILABLE(ios(12));

停止内部屏幕采集

注意 屏幕采集分为内部采集和外部采集,本方法属于内部采集。