方法

引擎管理

方法 描述
sharedInstance 获取 ByteRtcEngineKit 单例对象。
destroy 销毁由 sharedEngineWithAppId:delegate: 所创建引擎实例,并释放所有相关资源
getSdkVersion 获取 SDK 当前的版本号
getErrorDescription: 获取SDK内各种错误码、警告码的描述文字
sharedEngineWithAppId:delegate: 创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
initWithAppId:delegate:parameters: 创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
destroyEngine 手动销毁引擎实例对象,如果当前的引擎对象是通过 sharedEngineWithAppId:delegate:
所创建的,则行为与 destroy 保持一致

视频管理

方法 描述
setupLocalVideo: 该方法设置本地视频显示信息。
setLocalVideoMirrorMode: 设置本地视频镜像.该方法用于开启或关闭本地视频镜像,默认值为关闭(ByteVideoMirrorModeDisabled)。
GetLocalVideoMirrorMode 获得当前本地镜像状态
removeLocalVideo 解除绑定本地视频画布
setupRemoteVideo: 该方法绑定远程用户和显示视图,即设定 uid 指定的用户用哪个视图显示。
removeRemoteVideo: 去除特定远端视频。
removeAllRemoteVideo 去除所有远端视频。
setupRemoteScreen: 该方法绑定远端屏幕视图,即设定用户 id 指定的用户用哪个屏幕视图显示。调用该接口时需要指定远程共享屏幕流的用户 id,一般可以在进频道前提前设置好。
removeRemoteScreen: 去除特定远端屏幕。
removeAllRemoteScreen 去除所有远端屏幕。
setVideoProfiles: 该方法设置SimulCast发布的一组视频属性,每个属性对应一套视频参数,如分辨率、帧率、码率等。
enableVideo 该方法用于打开视频模块。
disableVideo 该方法用于关闭视频模块。
enableLocalVideo: 该方法开启或关闭本地视频采集。
startPreview 开启视频预览。
stopPreview 关闭视频预览,停止本地视频预览。
muteLocalVideoStream: 停止/开启本地视频流发送。调用该方法后,房间中的其他用户会收到didVideoMuted的回调。
muteAllRemoteVideoStreams: 停止/开启接收所有远端用户的视频流。
muteRemoteVideoStream:mute: 停止/开启接收指定远端用户的视频流。
publishScreen:frameRate: 发布本地共享屏幕流, 调用该方法后需要周期性调用 pushScreenFramepushScreenFrame: ,将要发送的屏幕数据送到 SDK 。
unpublishScreen 取消共享本地屏幕流。
pushScreenFrame: 推送共享桌面的视频帧。
replaceBackground:withDivideModel: 视频图像分割,替换背景
disableBackground 禁用视频图像分割,替换背景
switchCamera 切换摄像头。
setVideoResolution:andFrameRate:bitrate: 设置本地视频属性。
setExternalVideoSource: 设置外部视频输入源

房间管理

方法 描述
joinChannelByKey:channelName:info:uid: 加入房间。
用户调用此方法加入房间,在一个房间内的用户可以相互通话。如果房间还未创建,将会自动为用户创建对应的房间。如果已在房间中,用户必
须调用 leaveChannel: 退出当前房间后,才能加入下一个房间。
setClientRole:withKey: 设置用户角色。
在加入房间前,用户可调用此方法设置用户角色(默认为主播)。加入房间后,用户也可通过此方法切换用户角色。
leaveChannel: 离开房间。
调用 joinChannelByKey:channelName:info:uid: 方法加入房间后,在通话结束时必须调用此方法结束通话,否则无法开始下一次通话。不管
当前是否在通话中,都可以调用此方法。此方法会将通话相关的所有资源释放掉。由于此方法是异步操作,调用返回时并没有真正退出房间。
真正退出房间后,会触发执行调用接口时传入的 Block。通信模式下的用户和其他房间模式下的主播、观众离开房间后,远端用户会收到
rtcEngine:didOfflineOfUid:reason: 回调通知。
enableAutoSubscribe: 开启/关闭自动订阅(手动订阅)功能。
此方法用于设置该房间中是否开启自动订阅(手动订阅)功能。
unsubscribe: 停止订阅房间内指定的远端音视频流。
subscribeStream:info: 订阅指定的房间内远端音视频流。
enableAutoPublish: 开启/关闭自动发布(手动发布)功能。
此方法用于设置该房间中是否开启自动发布(手动发布)功能。
publish 发布本端音视频流到当前房间中。
unpublish 停止向当前房间发布本端音视频流。
setChannelProfile: 设置频道模式。
该方法用于设置房间频道模式。SDK 会针对不用的频道模式应用对应的优化策略。

音频管理

方法 描述
enableAudio 打开音频模块。
disableAudio 关闭音频模块。
enableLocalAudio: 开启/关闭本地音频采集。
muteLocalAudioStream: 静音本地音频流
muteRemoteAudioStream:mute: 静音/取消静音指定用户的音频流。
muteAllRemoteAudioStreams: 静音/取消静音所有音频流
enableAudioVolumeIndication:smooth: 开启/关闭发言者音量提示。
enableAudioVolumeIndication:smooth: 开启/关闭发言者音量提示。

频道管理

方法 描述
renewChannelKey: 更新 Token。
此方法用于更新 Token。Token 有一定的有效期,App 使用过期的 Token 调用 joinChannelByKey:channelName:info:uid: 会
导致加入房间失败,并收到 rtcEngine:didOccurError: 回调通知,回调错误码为 BRERR_INVALID_TOKEN 。
此时需要重新获取 Token ,然后调用此方法更新 Token。
setPublishFallbackOption: 设置弱网条件下发布的音视频流回退选项
setDeviceId: 设置设备ID。

混音

方法 描述
getAudioMixingDuration 获取音乐文件时长
getAudioMixingCurrentPosition 获取音乐文件播放进度
stopAudioMixing 停止播放音乐文件及混音
pauseAudioMixing 暂停播放音乐文件
resumeAudioMixing 恢复播放音乐文件
adjustAudioMixingVolume: 调节音乐文件的文件音量。
startAudioMixing:loopback:replace:cycle: 开始播放音乐文件及混音。
setAudioMixingPosition: 设置音频文件的播放位置
adjustAudioMixingPlayoutVolume: 调节音乐文件的本地播放音量
adjustAudioMixingPublishVolume: 调节音乐文件的远端播放音量
resumeEffect: 恢复播放指定音效文件
setEffectsVolume: 调节所有音效文件的文件音量
unloadAllEffects 卸载所有音效文件
pauseAllEffects 暂停所有音效文件的播放
resumeAllEffects 恢复所有音效文件的播放
stopAllEffects 停止所有音效文件的播放

音效

方法 描述
setVolumeOfEffect:withVolume: 调节指定音效文件的文件音量
getEffectVolume: 获取指定音效文件的文件音量
playEffect:filePath:loopback:cycle:withVolume: 开始播放指定音效文件。你可以在该方法中设置音效文件的播放次数、音量大小,以及远端用户是否能听到该音效。
preloadEffect:filePath: 预加载指定音效文件
unloadEffect: 卸载指定音效文件
pauseEffect: 暂停播放指定音效文件
stopEffect: 停止播放指定音效文件

其他

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

视频数据回调

方法 描述
setMediaMetadataObserver: 注册 metadata 观察者,用于接收或发送 metadata。
底层通过视频帧中添加 SEI 数据实现该功能。

加密

方法 描述
setEncryptType:key: 设置AES加密算法和加密密钥,有四种内置的加密算法
setCustomizeEncryptHandler: 设置自定义加密,需要实现对应的加密/解密方法,详情参考
ByteEncryptHandler

云端渲染

方法 描述
enableCloudRending: 按照传入的布局信息开启云端渲染。
updateCloudRending: 按照传入的布局信息更新云端渲染。
disableCloudRending 停止云端渲染。

方法 描述
shouldInitialize 通知外部渲染器实现,当前需要进行渲染器初始化工作
shouldStart 通知外部渲染器实现,当前需要准备开始渲染
shouldStop 通知外部渲染器实现,当前需要准备停止渲染
shouldDispose 通知外部渲染器实现,当前需要进行渲染器销毁工作
pixelFormat 指定外部渲染器接收的视频帧格式类型
renderPixelBuffer:rotation:extendedData: 外部渲染视频帧数据回调接口

回调

警告码

回调 描述
rtcEngine:didOccurWarning: 发生警告回调。

错误码

回调 描述
rtcEngine:didOccurError: 发生错误回调。

网络连接

回调 描述
rtcEngineConnectionDidInterrupted: SDK 与信令服务器连接中断回调。
rtcEngineConnectionDidLost: SDK 与信令服务器连接断开回调。
rtcEngine:networkTypeChangedToType: SDK 当前网络连接类型改变回调。
rtcEngine:networkQuality:txQuality:rxQuality: 通话中用户的媒体流网络上下行质量报告回调。

房间管理

回调 描述
rtcEngine:didJoinChannel:withUid:elapsed: 加入房间回调。
该回调方法表示该用户成功加入了指定的房间。
rtcEngine:didRejoinChannel:withUid:elapsed: 重新加入房间成功。
该回调方法表示该用户成功重连入指定的房间。有时候由于网络状况异常,SDK 可能会失去和服务器的连接,此时 SDK 会自动重试
连接,重连成功后会通过此回调方法通知用户。
rtcEngine:didJoinedOfUid:elapsed: 远端用户加入当前房间回调。
1.频道模式为通信模式。如果本端用户已经在房间中,有新的远端用户加入时,SDK 通过此回调方法通知房间中有新用户加入;如果
用户加入房间前,房间中已有其他用户,新加入的用户也会收到这些已有用户的加入房间回调。
2.频道模式为直播、游戏或云游戏模式。则只会回调用户角色为主播或观众加入房间。
rtcEngine:didOfflineOfUid:reason: 远端用户离开当前房间回调。
提示本端用户有远端用户离开了房间。用户离开房间的原因有两个,即用户主动调用 leaveChannel: 方法离开
房间和超时掉线。
rtcEngine:didStreamRemoved: 房间内远端流移除回调。
房间内的远端用户停止发布音视频流时,本端用户会收到此回调通知。
rtcEngine:didStreamAdded: 房间内新流发布回调。
房间内的远端用户发布新的音视频流时,本端用户会收到此回调通知。

频道管理

回调 描述
rtcEngine:didStreamSizeChange:width:height:rotation: 视频size变化回调。

视频管理

回调 描述
rtcEngine:firstLocalVideoFrameWithSize:elapsed: 本地首帧视频数据渲染事件回调。调用 joinChannelByKey:channelName:info:uid:后,渲染本地首帧视频数据前的事件。
rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed: 远端首帧视频数据渲染事件回调。
rtcEngine:firstLocalScreenFrameWithSize:elapsed: 本地首帧屏幕数据渲染事件回调。调用 joinChannelByKey:channelName:info:uid: 后,渲染本地首帧屏幕数据前的事件。
rtcEngine:firstRemoteScreenFrameOfUid:size:elapsed: 远端首帧屏幕数据渲染事件回调。
rtcEngine:didVideoMuted:byUid: 远端用户暂停/重新发送视频回调。房间中远端用户调用muteLocalVideoStream:YES或muteLocalVideoStream:NO时,本地用户将会收到该回调。
rtcEngine:didVideoEnabled:byUid: 远端用户启用/关闭视频回调。房间中远端用户调用enableVideo/disableVideo时,本地用户将会收到该回调。
rtcEngine:didLocalVideoEnabled:byUid: 远端用户启用/关闭本地视频回调。房间中远端用户调用enableLocalVideo时,本地用户将会收到该回调。
rtcEngine:firstRemoteVideoDecodedOfUid:size:elapsed: 远端首帧视频数据解码事件回调。
rtcEngine:reportRtcStats: 当前通话数据统计回调。该回调在通话或直播中每两秒触发一次。

音频管理

回调 描述
rtcEngine:firstLocalAudioFrame: 当收到本地第一帧音频的时候上报该事件
rtcEngine:firstRemoteAudioFrameOfUid:elapsed: 当收到远端流的第一帧音频的时候上报该事件
rtcEngine:didAudioMuted:byUid: 远端用户音频静音回调。
提示有远端用户已将其本地音频流静音(或取消静音),该回调由远端用户调用 muteLocalAudioStreammuteLocalAudioStream:,本地用户将会收到该回调。
rtcEngine:didAudioEnabled:byUid: 远端用户启用/关闭音频回调。房间中远端用户调用enableAudio/disableAudio时,本地用户将会收到该回调。
rtcEngine:didLocalAudioEnabled:byUid: 远端用户开启/关闭音频设备采集回调
提示有远端用户已开启/关闭音频设备采集,该回调由远端用户调用 enableLocalAudioenableLocalAudio: 方法触发
rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume: 通话音量提示的回调。回调当前房间内每个用户的音量、总音量。
rtcEngine:audioQualityOfUid:quality:delay:lost: 用户的音频质量回调。每两秒钟更新一次。

视频数据回调

回调 描述
videoFrameMediaMetaDataAtTime: 当SDK准备发送一个视频帧时,会回调该接口,向你询问是否需要在该视频帧中添加 metadata
receiveVideoFrameFromUID:withExtendedData:atTimestamp: 当SDK收到的视频帧包含 medatada 时,会回调该接口

加密

回调 描述
ByteEngineEncryptRawData: 自定义加密的方法接口,通过继承并实现该方法,可以扩展传输过程中的加密方法,
详见 setCustomizeEncryptHandler:
ByteEngineDecryptRawData: 自定义解密的方法接口,通过继承并实现该方法,可以扩展传输过程中的解密方法,
详见 setCustomizeEncryptHandler: