方法

引擎管理

方法 描述
sharedInstance 获取 ByteRtcEngineKit 单例对象。
destroy 销毁由 sharedEngineWithAppId:delegate: 创建的引擎实例,并释放所有相关资源。
getSdkVersion 获取 SDK 当前的版本号。
getErrorDescription: 获取 SDK 内各种错误码、警告码的描述文字。
sharedEngineWithAppId:delegate: 创建 RTCEngine 实例。

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

此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个 RTCEngine 实例,来使用 SDK 的其他能力。
initWithAppId:delegate:parameters: 创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
initWithAppId:delegate:monitorDelegate:parameters: 创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
destroyEngine 手动销毁引擎实例对象,如果当前的引擎对象是通过 sharedEngineWithAppId:delegate:
所创建的,则行为与 destroy 保持一致
setBusinessId: 设置业务标识参数。

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

其他

方法 描述
feedbackGrade:type:desc: 通话结束,用户反馈上报

房间管理

方法 描述
setChannelProfile: 设置房间模式。

通过设置房间模式,用户可以选择应用 SDK 针对不同房间模式场景的优化策略。

默认的房间模式为通信模式 ByteChannelProfileCommunication 。

房间模式必须在调用 joinChannelByKey:channelName:info:uid: 加入房间前设置,加入房间后设置不生效。设置用户角色(通过方法 setClientRole: )建议在设置完房间模式后。
setClientRole: 设置用户角色。

用户可通过设置用户角色,控制:1.是否发布音视频流;2.用户自身是否在房间中隐身。用户角色详见 ByteRtcClientRole 枚举类型。

默认用户角色为主播角色 ByteRtc_ClientRole_Broadcaster 。

房间模式(通过调用接口 setChannelProfile: 可设置房间模式)为直播模式、游戏模式、云游戏模式时,设置用户角色生效。房间模式为通信模式时不区分用户角色。
clientRole 获取当前用户角色。
joinChannelByKey:channelName:info:uid: 加入房间。用户调用此方法加入房间,在一个房间内的用户间可以相互通话。

用户调用 sharedEngineWithAppId:delegate: 创建 RTC 引擎后,需调用此方法加入房间实现同其他用户进行音视频通话。如果用户调用此方法加入房间,则后续重复调用此方法均会失败,用户必须调用 leaveChannel: 退出当前房间后,才能加入下一个房间。

用户调用此方法加入房间成功后,会收到 rtcEngine:didJoinedOfUid:elapsed: 回调通知。
leaveChannel: 离开房间。

用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。

调用 joinChannelByKey:channelName:info:uid: 方法加入房间后,在通话结束时必须调用此方法结束通话,否则无法开始下一次通话。无论当前是否在房间中,都可以调用此方法。重复调用此方法不会有负面影响。

此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,SDK 会执行调用此方法时传入的 Block 块。
renewChannelKey: 更新 Token。

Token 有一定的有效期,当 Token 过期时,用户需调用此方法更新房间的 Token 信息。

用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间时,如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:didOccurError: 回调通知,回调错误码为 BRERR_INVALID_TOKEN 。此时需要重新获取 Token ,并调用此方法更新 Token。
enableAutoSubscribe:videoMode: 开启/关闭自动订阅功能。

用户调用此方法设置房间中是否开启自动订阅功能。SDK 默认开启自动订阅功能。

如需关闭自动订阅功能,建议在调用 joinChannelByKey:channelName:info:uid: 方法加入房间前设置完成。
subscribeStream:subscribeConfig: 订阅指定的房间内远端音视频流。

关闭自动订阅功能,使用手动订阅模式时用户调用此方法按需订阅房间中的音视频流。

此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe: 方法关闭自动订阅功能以使用手动订阅模式。

订阅流失败时,SDK 会按失败原因回调 rtcEngine:didOccurError: 通知用户,具体错误可参考错误码 ByteRtcErrorCode 描述。
unSubscribeStream:isScreen: 停止订阅指定的房间内远端音视频流。

关闭自动订阅功能,使用手动订阅模式时用户调用此方法停止订阅已订阅的音视频流。

此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe: 方法关闭自动订阅功能以使用手动订阅模式。

音频管理

方法 描述
enableLocalAudio: 开启/关闭本地音频采集。

调用该方法后,房间中的其他用户会收到 rtcEngine:didLocalAudioEnabled:byUid: 事件回调。
setAudioScenario: 设置音频场景类型。

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

在进房前和进房后设置均可生效。
muteLocalAudioStream: 静音本地音频流
muteRemoteAudioStream:mute: 静音/取消静音指定用户的音频流。
muteAllRemoteAudioStreams: 静音/取消静音所有音频流
setDefaultMuteAllRemoteAudioStreams: 设置是否默认静音所有远端音频流
enableAudioVolumeIndication:smooth: 开启/关闭发言者音量提示。
adjustRecordingSignalVolume: 调节录音音量。
adjustPlaybackSignalVolume: 调节本地播放的所有远端用户音量
setEnableSpeakerphone: 设置音频播放设备为扬声器或者听筒,默认使用扬声器。
音频播放设备发生变化时,会收到 rtcEngine:didAudioRouteChanged: 回调。
isSpeakerphoneEnabled 查询扬声器启用状态
setAudioPerfProfile: 设置音频处理复杂度。对于希望性能占用较低,可设置较低的音频处理复杂度,如果更在意通话质量,可选择设置更高的音频处理复杂度。
加入房间时,会携带本接口传入的机型等级,然后从服务端拉起相应音频配置。如果传入的是 auto,服务端会查询数据库,获得机型等级,再下发配置。
不同复杂度会开关AEC、ANS、AGC算法,调整播放sample rate等, 进行性能和质量的控制。
默认为AUDIO_PERF_PROFILE_AUTO
adjustRemoteAudioVolume:ofUid: 调节远端用户音量,默认值为100

自定义视频采集渲染

方法 描述
setLocalVideoRenderer: 设置本地视频外部渲染器。
setLocalVideoRenderer:forRoomId:forUserId: 设置本地视频外部渲染器。
setRemoteVideoRenderer:forRoomId:forUserId: 设置特定远端用户的外部渲染器。
setRemoteVideoRenderer:forUserId: 设置特定远端用户的外部渲染器。
setupRemoteScreenRenderer:forRoomId:forUserId: 设置远端屏幕共享的外部渲染器。
setupRemoteScreenRenderer:forUserId: 设置远端屏幕共享的外部渲染器。
pushExternalVideoFrame:time: 推送外部视频帧。
pushExternalVideoFrame:time:rotation: 推送外部视频帧。
pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo: 推送外部视频帧。
pushExternalByteVideoFrame: 推送外部视频帧,使用 ByteVideoFrame 进行封装。

视频管理

方法 描述
setVideoProfiles: 设置本地视频属性。
setVideoProfiles:orientationMode: 设置本地视频属性。
setupLocalVideo: 该方法设置本地视频显示信息。
setupRemoteVideo: 设置远端视频显示属性。
setupRemoteScreen: 设置远端屏幕共享视图,即用户ID指定的用户用的屏幕视图显示。调用该接口时需要指定远程共享屏幕流的用户ID,一般可以在进频道前提前设置好。
startPreview 开启视频预览,视频预览默认为关闭状态。
stopPreview 关闭视频预览,视频预览默认为关闭状态。
enableLocalVideo: 该方法开启或关闭本地视频采集。默认为开启状态。

调用该方法后,房间中的其他用户会收到 rtcEngine:didLocalVideoEnabled:byUid: 的回调。
muteLocalVideoStream: 停止/开启本地视频流发送。调用该方法后,房间中的其他用户会收到rtcEngine:didVideoMuted:byUid: 回调
muteRemoteVideoStream:mute: 停止/开启接收指定远端用户的视频流。
muteAllRemoteVideoStreams: 停止/开启接收所有远端用户的视频流。
setDefaultMuteAllRemoteVideoStreams: 设置默认禁止/开启远端用户的视频流。
setLocalVideoMirrorMode: 设置本地视频镜像.该方法用于开启或关闭本地视频镜像,默认值为关闭(ByteVideoMirrorModeDisabled)。
isLocalVideoMirrorOn 获取本地视频镜像状态
switchCamera 切换摄像头。
replaceBackground:withDivideModel: 视频图像分割,替换背景
checkVideoEffectSupport 检查当前版本是否支持视频特效
checkVideoEffectLicense: 视频特效许可证检查
enableVideoEffect: 开启关闭视频特效
setVideoEffectAlgoModelPath: 设置视频特效算法模型路径
setVideoEffectNodes: 设置特效包,支持同时设置多个特效包
addVideoEffectNodes: 增加特效包,支持同时增加多个特效包
removeVideoEffectNodes: 移除特效包,支持同时移除多个特效包
updateVideoEffectNode:nodeKey:nodeValue: 设置特效强度
setVideoEffectColorFilter: 设置颜色滤镜
setVideoEffectColorFilterIntensity: 设置颜色滤镜强度
setScreenCapture:Rect:screenCaptureParam: 配置外部屏幕采集
pushScreenCaptureFrame:time:rotation: 推送外部屏幕采集帧
startScreenSharingWithParam:preferredExtension:groupId: 开始内部屏幕采集
API_AVAILABLE 停止内部屏幕采集

视频数据回调

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

注册观察者后,发送的视频帧里面没有 SEI 信息, 会触发 videoFrameMediaMetaDataAtTime: 回调。

注册观察者后,接收的视频帧里面有 SEI 信息,会触发接收 receiveVideoFrameFromUID:withExtendedData:atTimestamp: 回调。

CDN 推流

方法 描述
enableLiveTranscoding: 开启直播推流转码功能。

此方法用于开启直播推流转码功能,并设置旁路推流的视频视图布局及音频属性等。

直播推流转码功能开启时,会根据设置的视频视图布局和音频属性进行合流转码转成 rtmp 流并推送到设置的 CDN 。

直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过 rtcEngine:TransCodingWithUrl:errorCode: 回调事件通知用户对应的状态事件。
disableLiveTranscoding 关闭直播推流转码功能。
setVideoCompositingLayout: 设置视频流合流布局。

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

云端渲染

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

外部视频

方法 描述
setExternalVideoSource:useTexture:pushMode: 配置外部视频源。

自定义音频采集渲染

方法 描述
setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum: 设置是否启用外部音频采集渲染。
setAudioDeviceObserver: 启动音频外部源采集渲染时,添加音频外部设备事件监控
pushExternalAudioFrame:frameNum: 推送外部音频数据。使用
setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum:
启用自定义音频采集渲染后,可以使用本方法推送外部音频数据。
pullExternalAudioFrame:frameNum: 拉取远端音频数据。使用
setExternalAudioDevice:sampleRate:recordChannelNum:playoutChannelNum:
启用自定义音频采集渲染后,可以使用本方法拉取远端音频数据。

混音

方法 描述
setAudioPlayoutMixStream:sampleRate:channelNum: 启动/停止外部音频流混音, 并设置混音数据格式
getAudioMixingStreamCachedFrameNum 获取SDK当前缓冲数据
pushAudioMixingStreamData:frameNum: 向SDK推送混音的音频数据
getAudioMixingDuration 获取音乐文件时长
getAudioMixingCurrentPosition 获取音乐文件播放进度
stopAudioMixing 停止播放音乐文件及混音
pauseAudioMixing 暂停播放音乐文件
resumeAudioMixing 恢复播放音乐文件
adjustAudioMixingVolume: 调节音乐文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
startAudioMixing:loopback:replace:cycle: 开始播放音乐文件及混音。
setAudioMixingPosition: 设置音频文件的播放位置
adjustAudioMixingPlayoutVolume: 调节音乐文件的本地播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
adjustAudioMixingPublishVolume: 调节音乐文件的远端播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
setVolumeOfEffect:withVolume: 调节指定音效文件的文件音量
getEffectVolume: 获取指定音效文件的文件音量
playEffect:filePath:loopback:cycle:withVolume: 开始播放指定音效文件。你可以在该方法中设置音效文件的播放次数、音量大小,以及远端用户是否能听到该音效。
preloadEffect:filePath: 预加载指定音效文件
unloadEffect: 卸载指定音效文件
pauseEffect: 暂停播放指定音效文件
resumeEffect: 恢复播放指定音效文件
stopEffect: 停止播放指定音效文件
setEffectsVolume: 调节所有音效文件的文件音量
unloadAllEffects 卸载所有音效文件
pauseAllEffects 暂停所有音效文件的播放
resumeAllEffects 恢复所有音效文件的播放
stopAllEffects 停止所有音效文件的播放

音频数据回调

方法 描述
setRecordingAudioFrameParameters:channels: 设置本地麦克风录制的音频数据回调参数
setPlaybackAudioFrameParameters:channels: 设置远端所有用户音频数据混音后的音频数据回调参数
setMixedAudioFrameParameters:channels: 设置本地麦克风录制音频数据和远端所有用户音频数据混音后的音频数据回调参数
setAudioFrameObserver: 设置音频数据回调观察者

流消息

方法 描述
sendRoomMessage: 给房间内的所有其他用户发送广播消息。
sendRoomBinaryMessage: 给房间内的所有其他用户发送广播消息。
sendUserMessage:message: 给房间内指定的用户发送消息,返回这次发送消息的编号。
sendUserBinaryMessage:message: 给房间内指定的用户发送二进制消息,返回这次发送消息的编号。

音视频回退

方法 描述
setPublishFallbackOption: 设置发布的音视频流回退选项
setSubscribeFallbackOption: 设置订阅的音视频流回退选项
setRemoteUserPriority:uid: 设置用户优先级

加密

方法 描述
setEncryptType:key: 设置AES加密算法和加密密钥

有四种内置的加密算法,详见 ByteEncryptType
setCustomizeEncryptHandler: 设置自定义加密和解密方式
需要实现对应的加密和解密方法。详情参考 ByteEncryptHandler

回调

警告码

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

错误码

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

引擎管理

回调 描述
rtcEngine:connectionChangedToState: SDK 与 RTC 服务器的网络连接状态改变时,会收到此回调。
rtcEngine:networkTypeChangedToType: SDK 当前网络连接类型改变回调。当 SDK 的当前网络连接类型发生改变时回调该事件。
rtcEngine:didMediaDeviceStateChanged:device_state: 设备开启、停止状态通知
rtcEngine:networkQuality:txQuality:rxQuality: 通话中用户的媒体流网络上下行质量报告回调。加入房间成功后,每隔 2 秒会触发此回调,通知房间内用户与媒体服务器之间数据交互的网络质量。
rtcEngine:log: SDK 内部日志回调。

SDK 内部运行时,会把日志回调给业务方,方便排查问题。

房间管理

回调 描述
rtcEngine:didJoinChannel:withUid:elapsed: 加入房间成功回调。此回调事件表示本地用户成功加入了指定的房间。

用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间,首次加入房间成功后 SDK 通过此回调事件通知用户加入房间成功。此回调事件在用户调用 joinChannelByKey:channelName:info:uid: 方法加入房间到用户调用 leaveChannel: 方法离开房间期间至多回调一次。
rtcEngine:didRejoinChannel:withUid:elapsed: 重新加入房间成功回调。此回调事件表示本地用户成功重连入房间。

本地用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接。此时 SDK 将会自动重连,并在重连成功通过此回调事件通知用户重连成功。
rtcEngine:didJoinedOfUid:elapsed: 远端用户加入房间回调。

此回调用于提示房间中有新用户加入。如果本地用户已经在房间中,有新的远端用户加入时,SDK 通过此回调方法通知房间中有新用户加入;如果用户加入房间前,房间中已有其他用户,加入房间后用户也会收到这些已在房间中的远端用户的加入房间回调。

回调的具体触发时机如下:

1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 joinChannelByKey:channelName:info:uid: 方法加入房间。

2.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,在断网后重连入房间。

3.远端已在房间中的房间模式为直播、游戏或云游戏模式的静默观众角色的用户,调用 setClientRole: 方法将用户角色切换至主播或观众。

4.本地用户加入房间时,会收到已在房间中的远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户的加入房间回调。
rtcEngine:didOfflineOfUid:reason: 远端用户离开房间回调。

此回调用于提示房间中有远端用户离开。用户离开房间的原因有两个,即用户主动调用 leaveChannel: 方法离开房间和超时掉线。

回调的具体触发时机如下:

1.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,调用 leaveChannel: 方法离开房间。用户离开的原因为 ByteRtc_UserOffline_Quit。

2.远端已在房间中的房间模式为直播、游戏或云游戏模式的主播、观众角色的用户调用 setClientRole: 方法将用户角色切换至静默观众。用户离开的原因为 ByteRtc_UserOffline_Quit。

3.远端的房间模式为通信模式的用户或房间模式为其他模式的主播、观众角色的用户,断网且一直未恢复。用户离开的原因为 ByteRtc_UserOffline_Dropped。
rtcEngine:onAudioFrameSendStateChanged:state: 音频首帧发送状态改变回调
rtcEngine:onVideoFrameSendStateChanged:state: 视频首帧发送状态改变回调
rtcEngine:onScreenVideoFrameSendStateChanged:state: 屏幕共享流视频首帧发送状态改变回调
rtcEngine:onAudioFramePlayStateChanged:state: 音频首帧播放状态改变回调
rtcEngine:onVideoFramePlayStateChanged:state: 视频首帧播放状态改变回调
rtcEngine:onScreenVideoFramePlayStateChanged:state: 屏幕共享流视频首帧播放状态改变回调
rtcEngine:onStreamAdd: 房间内新流发布回调。

房间内的远端用户发布新的音视频流时,本地用户会收到此回调通知。
rtcEngine:didStreamRemoved:stream:reason: 房间内远端流移除回调。

房间内的远端用户停止发布音视频流时,本地用户会收到此回调通知。

音频事件回调

回调 描述
rtcEngine:didAudioMuted:byUid: 远端用户将其本地音频流静音时,房间内其他人会收到这个回调。
该回调由远端用户调用 muteLocalAudioStreammuteLocalAudioStream: 方法触发。
rtcEngine:didLocalAudioEnabled:byUid: 远端用户开启/关闭音频设备采集回调
提示有远端用户已开启/关闭音频设备采集,该回调由远端用户调用 enableLocalAudio: 方法触发
rtcEngine:firstRemoteAudioFrameOfUid:elapsed: 当收到远端流的第一帧音频的时候上报该事件
rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume: 通话音量提示的回调。回调当前房间内每个用户的音量、总音量。
rtcEngine:firstLocalAudioFrame: 当收到本地第一帧音频的时候上报该事件
rtcEngine:didAudioRouteChanged: 音频路由变化时回调该事件
rtcEngine:localAudioStateChanged:error: 本地音频的状态发生改变时,该回调通知当前的本地音频状态。
rtcEngine:remoteAudioStateChanged:state:reason:elapsed: 远端用户音频状态发生改变时,该回调通知当前的远端音频流状态。

视频管理

回调 描述
rtcEngine:didVideoMuted:byUid: 远端用户暂停/重新发送视频回调。房间中远端用户调用 muteLocalVideoStream: 时,本地用户将会收到该回调。
rtcEngine:didLocalVideoEnabled:byUid: 远端用户启用/关闭本地视频回调。房间中远端用户调用 enableLocalVideo: 时,本地用户将会收到该回调。
rtcEngine:firstLocalVideoFrameWithSize:elapsed: 本地首帧视频数据渲染事件回调。调用 joinChannelByKey:channelName:info:uid: 后,渲染本地首帧视频数据前的事件。
rtcEngine:firstRemoteVideoFrameOfUid:size:elapsed: 远端首帧视频数据渲染事件回调。
rtcEngine:videoSizeChangedOfUid:size: 远端视频数据size变化事件。调用 joinChannelByKey:channelName:info:uid: 后,远端视频尺寸变化事件。
rtcEngine:videoSizeChangedOfUid:size:rotation: 远端视频数据 size 变化事件。调用 joinChannelByKey:channelName:info:uid: 后,远端视频数据尺寸变化事件。
rtcEngine:firstRemoteVideoDecodedOfUid:size:elapsed: 远端首帧视频数据解码事件回调。
rtcEngine:firstRemoteScreenFrameOfUid:size:elapsed: 远端首帧屏幕数据渲染事件回调。
rtcEngine:firstRemoteScreenDecodedOfUid:size:elapsed: 远端首帧屏幕数据解码事件回调。
rtcEngine:remoteVideoStateChangedOfUid:state: 远端视频流状态发生改变回调。
rtcEngine:didMirrorStateChanged: 本地视频镜像状态发生改变回调。

流消息

回调 描述
rtcEngine:onRoomMessageReceived:message: 接收到房间内广播消息的回调。
rtcEngine:onRoomBinaryMessageReceived:message: 接收到房间内广播二进制消息的回调。
rtcEngine:onUserMessageReceived:message: 点对点消息回调。接收到同一房间内 uid 所属用户发来消息时触发。
rtcEngine:onUserBinaryMessageReceived:message: 接收到同一房间内 uid 所属用户发来二进制消息的回调。
rtcEngine:onUserMessageSendResult:error: 当调用 sendUserMessage:message: 函数发送消息后,回调此条消息的发送结果(反馈)。
rtcEngine:onRoomMessageSendResult:error: 当调用 sendRoomMessage: 函数发送消息后,回调此条消息的发送结果(反馈)。

数据统计

回调 描述
rtcEngine:reportRtcStats: 房间通话数据回调。

用户加入当前房间成功后,SDK 会周期性(2s)的通过此回调事件通知用户当前房间内的汇总统计信息。
rtcEngine:reportSysStats: 周期性回调,报告当前cpu与memory使用率
rtcEngine:localVideoStats: 发布视频流数据统计回调。

本地用户发布视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcLocalVideoStats 类型的回调参数传递给用户,其中包括发送视频比特率、发送帧率、编码帧率等。
rtcEngine:remoteVideoStats: 订阅视频流数据统计回调。

本地用户订阅视频流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的视频流在此次统计周期内的质量统计信息。统计信息通过 ByteRtcRemoteVideoStats 类型的回调参数传递给用户,其中包括视频宽高、接收带宽、帧率及卡顿等信息。
rtcEngine:localAudioStats: 通话中订阅音频流质量报告回调。包括发送音频比特率,音频丢包率等
rtcEngine:remoteAudioStats: 通话中订阅音频流质量报告回调。包括订阅音频流的发布者的 uid、接收音频比特率、音频丢包率及卡顿信息。
rtcEngine:audioQualityOfUid:quality:delay:lost: 音频质量通知。通知业务方,当前通话中的音频质量。

频道管理

回调 描述
rtcEngine:localVideoStateChanged:error: 本地视频的状态发生改变时,该回调返回当前的本地视频状态。
rtcEngine:remoteVideoStateChanged:state:reason:elapsed: 远端用户视频状态发生改变时,该回调报告当前的远端视频流状态。

混音

回调 描述
rtcEngineLocalAudioMixingDidFinish: 音乐文件混音结束回调。SDK通过此回调通知应用层音乐文件混音结束。
rtcEngineDidAudioEffectFinish:soundId: 音效文件混音结束回调。SDK通过此回调通知应用层音效文件混音结束

CDN 推流

回调 描述
rtcEngine:TransCodingWithUrl:errorCode: 直播推流转码状态回调。

用户调用 enableLiveTranscoding: 方法启动直播推流转码功能后,直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过此回调通知用户对应的状态事件。

回调事件为错误状态事件时,App 需根据功能状态码的处理建议做对应的处理,如通知用户或重试等。

音视频回退

回调 描述
rtcEngine:OnRemoteStreamSwitch: 收到远端流回退或恢复时回调该事件。

自定义音频采集渲染

回调 描述
onAudioDeviceRecordStart 通知上层应用开启音频采集设备
onAudioDeviceRecordStop 通知上层应用关闭音频采集设备
onAudioDevicePlayoutStart 通知上层应用开启音频播放设备
onAudioDevicePlayoutStop 通知上层应用关闭音频播放设备

音频数据回调

回调 描述
onRecordAudioFrame: 返回麦克风录制的音频数据
onPlaybackAudioFrame: 返回远端所有用户混音后的音频数据
onMixedAudioFrame: 返回本地麦克风录制和远端所有用户混音后的音频数据

视频数据回调

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

加密

回调 描述
ByteEngineEncryptRawData: 自定义加密的方法接口

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

通过继承并实现该方法,可以扩展传输过程中的解密方法,
详见 setCustomizeEncryptHandler:

监控

回调 描述
onMonitorLog:withType: 埋点日志回调
isConsole 是否进行控制台输出
onVerboseLogWithLevel:filename:tag:line:functionName:format: 输出更多的调试信息

回调 描述
shouldInitialize 初始化渲染器
shouldStart 启动渲染器
shouldStop 停止渲染器
shouldDispose 释放渲染器
pixelFormat 获取PixelFormat格式
renderPixelBuffer:rotation:extendedData: 输出视频的 PixelBuffer
onLocalScreenFrame: 本地屏幕流的视频帧数据回调
onLocalVideoFrame: 本地视频流的视频帧数据回调
onRemoteScreenFrame:user:room: 远端屏幕流的视频帧数据回调
onRemoteVideoFrame:user:room: 远端视频流的视频帧数据回调