ByteRtcEngineKit

@interface ByteRtcEngineKit : NSObject

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

静态函数

返回 名称
ByteRtcEngineKit* sharedInstance
void destroy
NSString* getSdkVersion
NSString* getErrorDescription:

成员函数

返回 名称
instancetype sharedEngineWithAppId:delegate:
instancetype sharedEngineWithAppId:delegate:monitorDelegate:
id initWithAppId:delegate:parameters:
id initWithAppId:delegate:monitorDelegate:parameters:
void destroyEngine
int setChannelProfile:
BOOL setClientRole:
ByteRtcClientRole clientRole
int joinChannelByKey:channelName:info:uid:
int leaveChannel:
int renewChannelKey:
int enableLocalAudio:
int muteLocalAudioStream:
int muteRemoteAudioStream:mute:
int muteAllRemoteAudioStreams:
void setDefaultMuteAllRemoteAudioStreams:
int enableAudioVolumeIndication:smooth:
int adjustRecordingSignalVolume:
int adjustPlaybackSignalVolume:
int setLocalVideoRenderer:
int setLocalVideoRenderer:forRoomId:forUserId:
int setRemoteVideoRenderer:forRoomId:forUserId:
int setRemoteVideoRenderer:forUserId:
int setupRemoteScreenRenderer:forRoomId:forUserId:
int setupRemoteScreenRenderer:forUserId:
VideoStreamState setVideoProfiles:
VideoStreamState setVideoProfiles:orientationMode:
int setupLocalVideo:
int setupRemoteVideo:
int setupRemoteScreen:
int startPreview
int stopPreview
int enableLocalVideo:
int muteLocalVideoStream:
int muteRemoteVideoStream:mute:
int muteAllRemoteVideoStreams:
void setDefaultMuteAllRemoteVideoStreams:
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:
void subscribeStream:subscribeConfig:
void unSubscribeStream:isScreen:
int setEnableSpeakerphone:
BOOL isSpeakerphoneEnabled
int enableLiveTranscoding:
int disableLiveTranscoding
int setVideoCompositingLayout:
int enableCloudRending:
int updateCloudRending:
int disableCloudRending
void setExternalVideoSource:useTexture:pushMode:
BOOL pushExternalVideoFrame:time:
BOOL pushExternalVideoFrame:time:rotation:
BOOL pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo:
BOOL pushExternalByteVideoFrame:
BOOL setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum:
BOOL setAudioPlayoutMixStream:sampleRate:channelNum:
int getAudioMixingStreamCachedFrameNum
BOOL pushAudioMixingStreamData:frameNum:
BOOL setAudioDeviceObserver:
BOOL setRecordingAudioFrameParameters:channels:
BOOL setPlaybackAudioFrameParameters:channels:
BOOL setMixedAudioFrameParameters:channels:
BOOL setAudioFrameObserver:
BOOL pushExternalAudioFrame:frameNum:
BOOL pullExternalAudioFrame:frameNum:
void setAudioPerfProfile:
int setBusinessId:
int adjustRemoteAudioVolume:ofUid:
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

函数说明

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:didOccurWarning: 和 rtcEngine:didOccurError: 回调获得的值,
具体可以参考 ByteRtcWarningCode 和 ByteRtcErrorCode 。

返回值

描述文字。

sharedEngineWithAppId:delegate:

+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRtcEngineDelegate> _Nullable)delegate;

创建 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;

创建 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* 用以覆盖全局参数,详情可见 setParameters

返回值

可用的 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;

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

传入参数

参数名 类型 说明
appId NSString* 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC
中进行音视频通话完全独立,无法互通。
delegate id SDK 回调给应用层的 delegate,详见 ByteRtcEngineDelegate
parameters NSDictionary* 用以覆盖全局参数,详情可见 setParameters
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 时自动触发销毁逻辑

setChannelProfile:

- (int)setChannelProfile:(ByteChannelProfile)profile;

设置房间模式。
通过设置房间模式,用户可以选择应用 SDK 针对不同房间模式场景的优化策略。
默认的房间模式为通信模式 ByteChannelProfileCommunication 。
房间模式必须在调用 joinChannelByKey:channelName:info:uid: 加入房间前设置,加入房间后设置不生效。设置用户角色(通过方法 setClientRole: )建议在设置完房间模式后。

传入参数

参数名 类型 说明
profile ByteChannelProfile 房间模式,详见 ByteChannelProfile 枚举类型。

返回值

方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败

注意

setClientRole:

- (BOOL)setClientRole:(ByteRtcClientRole)role;

设置用户角色。
用户可通过设置用户角色,控制:1.是否发布音视频流;2.用户自身是否在房间中隐身。用户角色详见 ByteRtcClientRole 枚举类型。
默认用户角色为主播角色 ByteRtc_ClientRole_Broadcaster 。
房间模式(通过调用接口 setChannelProfile: 可设置房间模式)为直播模式、游戏模式、云游戏模式时,设置用户角色生效。房间模式为通信模式时不区分用户角色。

传入参数

参数名 类型 说明
role ByteRtcClientRole 用户角色,详见 ByteRtcClientRole 枚举类型。

返回值

方法调用结果。
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

clientRole

- (ByteRtcClientRole)clientRole;

获取当前用户角色。

返回值

当前用户角色,详见 ByteRtcClientRole 枚举类型。

joinChannelByKey:channelName:info:uid:

- (int)joinChannelByKey:(NSString * _Nullable)token channelName:(NSString * _Nonnull)roomId info:(NSString * _Nullable)info uid:(NSString * _Nonnull)userId;

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

传入参数

参数名 类型 说明
token NSString* 动态密钥,用于对登录用户进行鉴权验证。
进入房间需要携带 Token。测试时可使用控制台生成临时 Token ,正式上线需要使用密钥 SDK 在您的服务端生成并下发 Token 。
roomId NSString* 房间ID ,用户调用此接口加入的房间的房间ID 。
房间ID 为最大长度为128字节的非空字符串,支持的字符集范围为:
1. 26个大写字母 A ~ Z 。
2. 26个小写字母 a ~ z 。
3. 10个数字 0 ~ 9 。
4. 下划线"_", at符"@", 减号"-"。
info NSString* 预留参数。
userId NSString* 用户ID ,用户调用此接口加入的房间时使用的用户ID 。
用户ID 为最大长度为128字节的非空字符串,支持的字符集范围为:
1. 26个大写字母 A ~ Z 。
2. 26个小写字母 a ~ z 。
3. 10个数字 0 ~ 9 。
4. 下划线"_", at符"@", 减号"-"。

返回值

方法调用结果。
+ 0: 成功
+ -1: roomId 为空,失败
+ -2: userId 为空,失败

注意

leaveChannel:

- (int)leaveChannel:(void(^ _Nullable)(ByteRtcStats * _Nonnull stat))leaveChannelBlock;

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

传入参数

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

返回值

方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败

注意

renewChannelKey:

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

更新 Token。
Token 有一定的有效期,当 Token 过期时,用户需调用此方法更新房间的 Token 信息。
用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间时,如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:didOccurError: 回调通知,回调错误码为 BRERR_INVALID_TOKEN 。此时需要重新获取 Token ,并调用此方法更新 Token。

传入参数

参数名 类型 说明
token NSString* 更新的动态密钥。Token 用于对登录用户进行鉴权验证。

返回值

方法调用结果。
+ 0: 方法调用成功。
+ <0: 方法调用失败。

注意

enableLocalAudio:

- (int)enableLocalAudio:(BOOL)enabled;

开启/关闭本地音频采集。
调用该方法后,房间中的其他用户会收到 rtcEngine:didLocalAudioEnabled:byUid: 事件回调。

传入参数

参数名 类型 说明
enabled BOOL YES:开启本地音频采集(默认); NO:关闭本地音频采集

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

muteLocalAudioStream:

- (int)muteLocalAudioStream:(BOOL)mute;

静音本地音频流

传入参数

参数名 类型 说明
mute BOOL YES: 静音本地音频流;NO: 关闭静音本地音频流(默认)

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

muteRemoteAudioStream:mute:

- (int)muteRemoteAudioStream:(NSString * _Nonnull)uid mute:(BOOL)mute;

静音/取消静音指定用户的音频流。

传入参数

参数名 类型 说明
uid NSString* 指定远端用户的ID
mute BOOL YES:静音指定用户音频流;NO:取消对指定用户音频流的静音

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

muteAllRemoteAudioStreams:

- (int)muteAllRemoteAudioStreams:(BOOL)mute;

静音/取消静音所有音频流

传入参数

参数名 类型 说明
mute BOOL YES: 静音所有音频流;NO: 取消静音所有音频流

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

本方法只控制本地是否静音远端音频流,并不能控制远端音频设备的采集发送功能

setDefaultMuteAllRemoteAudioStreams:

- (void)setDefaultMuteAllRemoteAudioStreams:(BOOL)mute;

设置是否默认静音所有远端音频流

传入参数

参数名 类型 说明
mute BOOL YES: 默认静音所有远端音频流;NO: 默认取消静音所有远端音频流(默认)

注意

enableAudioVolumeIndication:smooth:

- (int)enableAudioVolumeIndication:(NSInteger)interval smooth:(NSInteger)smooth;

开启/关闭发言者音量提示。

传入参数

参数名 类型 说明
interval NSInteger 指定音量提示的时间间隔; <=0: 禁用音量提示功能;>0 : 提示间隔,单位为毫秒(ms)。建议设置到大于 200 毫秒。少于 10 毫秒时,行为未定义。
smooth NSInteger 该参数未使用

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

开启或禁用发言者音量提示功能。功能开启时以一定时间间隔通过音量提示回调 tcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume:rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume: 通知房间内用户的音量。

adjustRecordingSignalVolume:

- (int)adjustRecordingSignalVolume:(NSInteger)volume;

调节录音音量。

传入参数

参数名 类型 说明
volume NSInteger 录音音量,可在 0~400 范围内进行调节
• 0:静音
• 100:原始音量
• 400: 最大可为原始音量的 4 倍(自带溢出保护)

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

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

adjustPlaybackSignalVolume:

- (int)adjustPlaybackSignalVolume:(NSInteger)volume;

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

传入参数

参数名 类型 说明
volume NSInteger 播放音量,可在 0~400 范围内进行调节
• 0:静音
• 100:原始音量
• 400: 最大可为原始音量的 4 倍(自带溢出保护)

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

注意

setLocalVideoRenderer:

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

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

传入参数

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

返回值

setLocalVideoRenderer:forRoomId:forUserId:

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

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

传入参数

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

返回值

setRemoteVideoRenderer:forRoomId:forUserId:

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

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

传入参数

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

返回值

setRemoteVideoRenderer:forUserId:

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

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

传入参数

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

返回值

setupRemoteScreenRenderer:forRoomId:forUserId:

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

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

传入参数

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

返回值

注意

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

setupRemoteScreenRenderer:forUserId:

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

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

传入参数

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

返回值

注意

在应用开发中,通常在应用收到 firstRemoteScreenFrameOfUidrtcEngine:firstRemoteScreenFrameOfUid:size:elapsed: 事件后调用该方法进行远端视频设置

setVideoProfiles:

- (VideoStreamState)setVideoProfiles:(NSArray <VideoStreamDescription *> * _Nullable)videoStreamDescriptions;

设置本地视频属性。

传入参数

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

返回值

setVideoProfiles:orientationMode:

- (VideoStreamState)setVideoProfiles:(NSArray <VideoStreamDescription *> * _Nullable)videoStreamDescriptions orientationMode:(ByteVideoOutputOrientationMode)mode;

设置本地视频属性。

传入参数

参数名 类型 说明
videoStreamDescriptions NSArray * 设置的视频尺寸,视频帧率,视频码率,详见 VideoStreamDescription。
mode ByteVideoOutputOrientationMode 旋转模式,具体参照 ByteVideoOutputOrientationMode 定义 (目前仅支持ByteVideoOutputOrientationModeAdaptative)

返回值

setupLocalVideo:

- (int)setupLocalVideo:(ByteRtcVideoCanvas * _Nullable)local;

该方法设置本地视频显示信息。

传入参数

参数名 类型 说明
local ByteRtcVideoCanvas* 视频属性

返回值

注意

应用程序通过调用此接口绑定本地视频流的显示视窗 (view),并设置视频显示模式。在应用程序开发中,通常在初始化后调用该方法进行本地视频设置,然后再加入频道。退出频道后,绑定仍然有效,如果需要解除绑定,可以指定空 (NULL) View 调用 setupLocalVideosetupLocalVideo:。

setupRemoteVideo:

- (int)setupRemoteVideo:(ByteRtcVideoCanvas * _Nonnull)remote;

设置远端视频显示属性。

传入参数

参数名 类型 说明
remote ByteRtcVideoCanvas* 视频属性

返回值

注意

该方法绑定远程用户和显示视图,即设定 uid 指定的用户用哪个视图显示。调用该接口时需要指定远程视频的 uid,一般可以在进频道前提前设置好。如果应用程序不能事先知道对方的 uid,可以在 APP 收到 rtcEngine:didJoinedOfUid:elapsed: 事件时设置。 如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 rtcEngine:didJoinedOfUid:elapsed: 事件。 APP 不应给它绑定视图(因为它不会发送视频流),如果 APP 不能识别哑客户端,可以在 firstRemoteVideoFrameOfUidrtcEngine:firstRemoteVideoFrameOfUid:size:elapsed: 事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。 退出频道后,SDK 会把远程用户的绑定关系清除掉。

setupRemoteScreen:

- (int)setupRemoteScreen:(ByteRtcVideoCanvas * _Nonnull)screen;

设置远端屏幕共享视图,即用户ID指定的用户用的屏幕视图显示。调用该接口时需要指定远程共享屏幕流的用户ID,一般可以在进频道前提前设置好。

传入参数

参数名 类型 说明
screen ByteRtcVideoCanvas* 视频属性

返回值

注意

在应用开发中,通常在应用收到 firstRemoteScreenFrameOfUidrtcEngine:firstRemoteScreenFrameOfUid:size:elapsed: 事件后调用该方法进行远端视频设置

startPreview

- (int)startPreview;

开启视频预览,视频预览默认为关闭状态。

返回值

注意

stopPreview

- (int)stopPreview;

关闭视频预览,视频预览默认为关闭状态。

返回值

注意

enableLocalVideo:

- (int)enableLocalVideo:(BOOL)enabled;

该方法开启或关闭本地视频采集。默认为开启状态。
调用该方法后,房间中的其他用户会收到 rtcEngine:didLocalVideoEnabled:byUid: 的回调。

传入参数

参数名 类型 说明
enabled BOOL 是否开启本地视频采集
• YES:开启本地视频采集
• NO:关闭本地视频采集

返回值

注意

muteLocalVideoStream:

- (int)muteLocalVideoStream:(BOOL)mute;

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

传入参数

参数名 类型 说明
mute BOOL YES:开启本地视频发送;NO:关闭本地视频发送

返回值

muteRemoteVideoStream:mute:

- (int)muteRemoteVideoStream:(NSString * _Nonnull)uid mute:(BOOL)mute;

停止/开启接收指定远端用户的视频流。

传入参数

参数名 类型 说明
uid NSString* 指定用户的用户ID
mute BOOL YES:停止指定的远端视频流;NO:开启指定的远端视频流

返回值

muteAllRemoteVideoStreams:

- (int)muteAllRemoteVideoStreams:(BOOL)mute;

停止/开启接收所有远端用户的视频流。

传入参数

参数名 类型 说明
mute BOOL YES:停止接收远端视频流;NO:开启接收远端视频流

返回值

setDefaultMuteAllRemoteVideoStreams:

- (void)setDefaultMuteAllRemoteVideoStreams:(BOOL)mute;

设置默认禁止/开启远端用户的视频流。

传入参数

参数名 类型 说明
mute BOOL YES:默认禁止远端用户的视频流;NO:默认开启远端用户的视频流

注意

设置的默认静音仅影响未来到达的视频流,对已订阅的远端流无影响

setLocalVideoMirrorMode:

- (int)setLocalVideoMirrorMode:(ByteVideoMirrorMode) mode;

设置本地视频镜像.该方法用于开启或关闭本地视频镜像,默认值为关闭(ByteVideoMirrorModeDisabled)。

传入参数

参数名 类型 说明
mode ByteVideoMirrorMode 视频镜像模式,类型为枚举类型 ByteVideoMirrorMode

返回值

isLocalVideoMirrorOn

- (bool)isLocalVideoMirrorOn;

获取本地视频镜像状态

返回值

当前镜像状态
+ true:镜像为打开状态
+ false:镜像为关闭状态

switchCamera

- (int)switchCamera;

切换摄像头。

返回值

replaceBackground:withDivideModel:

- (int) replaceBackground:(BackgroundMode)mode withDivideModel:(DivideModel)divideModel;

视频图像分割,替换背景

传入参数

参数名 类型 说明
mode BackgroundMode 背景模式,用于设置预制背景,是否虚化等 详见 BackgroundMode
divideModel DivideModel 选择使用哪种分割模型, 分割模型类型详见 DivideModel

返回值

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: 关闭

返回值

0: 成功 !0: 失败。

注意

checkVideoEffectLicensecheckVideoEffectLicense:setVideoEffectAlgoModelPathsetVideoEffectAlgoModelPath:后调用此方法

setVideoEffectAlgoModelPath:

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

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

传入参数

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

setVideoEffectNodes:

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

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

传入参数

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

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* 需要设置的键名称
nodeValue float 要设置的强度值。取值范围[0,1] ,超出范围时设置无效

注意

nodeKey 的取值请参考特效包的参数说明文件

setVideoEffectColorFilter:

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

设置颜色滤镜

传入参数

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

setVideoEffectColorFilterIntensity:

- (void) setVideoEffectColorFilterIntensity:(float) intensity;

设置颜色滤镜强度

传入参数

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

setMediaMetadataObserver:

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

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

传入参数

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

返回值

注意

enableAutoSubscribe:

- (BOOL)enableAutoSubscribe:(BOOL)autoSubscribe;

开启/关闭自动订阅功能。
用户调用此方法设置房间中是否开启自动订阅功能。SDK 默认开启自动订阅功能。
如需关闭自动订阅功能,建议在调用 joinChannelByKey:channelName:info:uid: 方法加入房间前设置完成。

传入参数

参数名 类型 说明
autoSubscribe BOOL 开启/关闭自动订阅功能。
• true: 开启自动订阅功能。
• false: 关闭自动订阅功能。

返回值

方法执行结果。
+ YES: 方法调用成功。
+ NO: 方法调用失败。

注意

subscribeStream:subscribeConfig:

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

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

传入参数

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

注意

unSubscribeStream:isScreen:

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

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

传入参数

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

注意

setEnableSpeakerphone:

- (int)setEnableSpeakerphone:(BOOL)enableSpeaker;

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

传入参数

参数名 类型 说明
enable BOOL 是否切换语音路由到扬声器。
• true: 没有连接耳机或者蓝牙设备时,音频播放切换到扬声器。
• false: 没有连接耳机或者蓝牙设备时,音频播放切换到听筒。

返回值

方法调用结果
+ 0: 方法调用成功
+ <0: 方法调用失败

注意

isSpeakerphoneEnabled

- (BOOL)isSpeakerphoneEnabled;

查询扬声器启用状态

返回值

扬声器开启状态
+ YES: 扬声器已开启,语音会输出到扬声器
+ NO: 扬声器未开启,语音会输出到非扬声器(听筒,耳机等)

enableLiveTranscoding:

- (int)enableLiveTranscoding:(ByteRtcLiveTranscoding * _Nonnull)transcoding;

开启直播推流转码功能。
此方法用于开启直播推流转码功能,并设置旁路推流的视频视图布局及音频属性等。
直播推流转码功能开启时,会根据设置的视频视图布局和音频属性进行合流转码转成 rtmp 流并推送到设置的 CDN 。
直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过 rtcEngine:TransCodingWithUrl:errorCode: 回调事件通知用户对应的状态事件。

传入参数

参数名 类型 说明
transcoding ByteRtcLiveTranscoding* 推流转码配置属性,详见 ByteRtcLiveTranscoding 类型。

返回值

方法调用结果。
+ 0:方法调用成功
+ <0:方法调用失败

注意

disableLiveTranscoding

- (int)disableLiveTranscoding;

关闭直播推流转码功能。

返回值

方法调用结果。
+ 0:方法调用成功
+ <0:方法调用失败

setVideoCompositingLayout:

- (int)setVideoCompositingLayout:(ByteRtcVideoCompositingLayout * _Nonnull)layout;

设置视频流合流布局。
此方法用于在直播推流转码功能开启时,更新旁路推流的视频合流布局属性。调用此方法前,用户需通过调用 enableLiveTranscoding: 方法开启直播推流转码功能。如果未开启直播推流转码功能,则调用此方法不生效。

传入参数

参数名 类型 说明
layout ByteRtcVideoCompositingLayout* 视频合流布局属性,详见 ByteRtcLiveTranscoding 类型。

返回值

方法调用结果。
+ 0:方法调用成功
+ <0:方法调用失败

enableCloudRending:

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

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

传入参数

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

返回值

方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败

updateCloudRending:

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

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

传入参数

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

返回值

方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败

disableCloudRending

- (int)disableCloudRending;

停止云端渲染。

返回值

方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败

setExternalVideoSource:useTexture:pushMode:

- (void)setExternalVideoSource:(BOOL)enable useTexture:(BOOL)useTexture pushMode:(BOOL)pushMode;

配置外部视频源。

传入参数

参数名 类型 说明
enable BOOL 是否使用外部源。YES: 使用外部源;NO: 不使用外部源(默认)
useTexture BOOL 是否使用 Texture 作为输入。YES:使用 Texture 作为输入; NO:不适用 Texture 作为输入
pushMode BOOL 外部视频源是否需要调用 pushExternalVideoFramepushExternalVideoFrame: 将视频帧主动推送给 SDK。YES:使用 push 模式; NO:不使用 push 模式

注意

如果使用了外部源,请在调用 startPreview 之前调用此 API。

pushExternalVideoFrame:time:

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

推送外部视频帧。

传入参数

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

返回值

注意

使用外部推送视频帧,调用 setExternalVideoSource 开启外部视频源功能,详见setExternalVideoSource:useTexture:pushMode:

pushExternalVideoFrame:time:rotation:

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

推送外部视频帧。

传入参数

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

返回值

注意

使用外部推送视频帧,调用 setExternalVideoSource 开启外部视频源功能,详见setExternalVideoSource:useTexture:pushMode:

pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo:

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

推送外部视频帧。

传入参数

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

返回值

pushExternalByteVideoFrame:

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

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

传入参数

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

返回值

setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum:

- (BOOL)setExternalAudioDevice:(BOOL) enable sampleRate:(int) sampleRate recordChannelNum:(int) recordChannelNum playoutChannelNum:(int) playoutChannelNum;

设置是否启用外部音频采集渲染。

传入参数

参数名 类型 说明
enable BOOL • YES: 启用自定义音频采集渲染
• NO: 不启用自定义音频采集渲染
sampleRate int 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000
recordChannelNum int 外部音频采集通道数,支持单通道(1)和双通道(2)
playoutChannelNum int 外部音频渲染通道数,支持单通道(1)和双通道(2)

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

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 个采样点。

返回值

注意

setAudioDeviceObserver:

- (BOOL)setAudioDeviceObserver:(_Nullable id<ByteAudioDeviceObserver>) audioDeviceObserver;

启动音频外部源采集渲染时,添加音频外部设备事件监控

传入参数

参数名 类型 说明
audioDeviceObserver id 音频设备事件监控,详见:ByteAudioDeviceObserver

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

setRecordingAudioFrameParameters:channels:

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

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

传入参数

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

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

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

setPlaybackAudioFrameParameters:channels:

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

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

传入参数

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

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

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

setMixedAudioFrameParameters:channels:

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

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

传入参数

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

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

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

setAudioFrameObserver:

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

设置音频数据回调观察者

传入参数

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

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

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

pushExternalAudioFrame:frameNum:

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

推送外部音频数据。使用 setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum: 启用自定义音频采集渲染后,可以使用本方法推送外部音频数据。

传入参数

参数名 类型 说明
audioFrame void* pcm 数据,内存大小应该为 frameNum
frameNum int 采样点数量,应该为 setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum: 中设置的 SampleRate / 100。
当设置采样率为48000时, 每次应该推送480个采样点

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

pullExternalAudioFrame:frameNum:

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

拉取远端音频数据。使用 setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum: 启用自定义音频采集渲染后,可以使用本方法拉取远端音频数据。

传入参数

参数名 类型 说明
audioFrame void* pcm 数据,内存大小应该为 frameNum
frameNum int 采样点数量,应该为 setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum: 中设置的 SampleRate / 100。
当设置采样率为48000时, 每次应该推送480个采样点

返回值

方法调用结果
+ YES: 方法调用成功
+ NO: 方法调用失败

注意

setAudioPerfProfile:

- (void)setAudioPerfProfile:(AudioPerfProfile) profile;

设置音频处理复杂度。对于希望性能占用较低,可设置较低的音频处理复杂度,如果更在意通话质量,可选择设置更高的音频处理复杂度。 加入房间时,会携带本接口传入的机型等级,然后从服务端拉起相应音频配置。如果传入的是 auto,服务端会查询数据库,获得机型等级,再下发配置。 不同复杂度会开关AEC、ANS、AGC算法,调整播放sample rate等, 进行性能和质量的控制。 默认为AUDIO_PERF_PROFILE_AUTO

传入参数

参数名 类型 说明
profile AudioPerfProfile 机型等级, 详见枚举类 AudioPerfProfile

注意

setBusinessId:

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

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

传入参数

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

返回值

注意

adjustRemoteAudioVolume:ofUid:

- (int)adjustRemoteAudioVolume:(int)volume ofUid:(NSString* _Nonnull)uid;

调节远端用户音量,默认值为100

传入参数

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

返回值

方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败

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:(BytePublishFallbackOption)option;

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

传入参数

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

返回值

注意

setSubscribeFallbackOption:

- (int)setSubscribeFallbackOption:(ByteSubscribeFallbackOption)option;

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

传入参数

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

返回值

注意

setRemoteUserPriority:uid:

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

设置用户优先级

传入参数

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

返回值

注意

setEncryptType:key:

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

设置AES加密算法和加密密钥
有四种内置的加密算法,详见 ByteEncryptType

传入参数

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

注意

setCustomizeEncryptHandler:

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

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

传入参数

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

注意

setScreenCapture:Rect:screenCaptureParam:

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

配置外部屏幕采集

传入参数

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

返回值

0 :成功; -1 :失败;

注意

1.屏幕采集分为内部采集和外部采集,本方法属于外部采集。 内部采集:由 SDK 进行屏幕采集和后续所有流程 外部采集:用户负责采集屏幕数据帧,通过接口提供给 SDK 2.调用此方法发布本端屏幕共享流后,用户还需要通过设置定时任务周期性调用 pushScreenCaptureFrame:time:rotation: 方法,将需要发送的屏幕数据推送给 SDK。 3.调用该接口后远端能收到 rtcEngine:firstRemoteScreenFrameOfUid:size:elapsed: 和 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:(ScreenCaptureParam *_Nonnull)param preferredExtension:(NSString *_Nullable)extension groupId:(NSString *_Nonnull)groupId API_AVAILABLE(ios(12));

开始内部屏幕采集

传入参数

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

返回值

0 :成功; -1 :失败;

注意

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

API_AVAILABLE

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

停止内部屏幕采集

返回值

0 :成功; -1 :失败;

注意

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

ByteRemoteStreamSwitchEvent

@interface ByteRemoteStreamSwitchEvent : NSObject

远端用户流切换的信息

成员变量

类型 名称
NSString* uid
BOOL isScreen
NSInteger beforeVideoIndex
NSInteger afterVideoIndex
BOOL beforeVideoEnabled
BOOL afterVideoEnabled
ByteFallbackOrRecoverReason reason

变量说明

uid

@property (nonatomic, copy) NSString * _Nonnull uid;

远端用户ID

isScreen

@property (nonatomic, assign) BOOL isScreen;

流是否是屏幕流

beforeVideoIndex

@property (nonatomic, assign) NSInteger beforeVideoIndex;

流切换前订阅视频流的分辨率对应的索引

afterVideoIndex

@property (nonatomic, assign) NSInteger afterVideoIndex;

流切换后订阅视频流的分辨率对应的索引

beforeVideoEnabled

@property (nonatomic, assign) BOOL beforeVideoEnabled;

流切换前是否有视频流

afterVideoEnabled

@property (nonatomic, assign) BOOL afterVideoEnabled;

流切换后是否有视频流

reason

@property (nonatomic, assign) ByteFallbackOrRecoverReason reason;

流切换原因