方法

引擎管理

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

如果当前线程中未创建引擎实例,那么你必须先使用此方法,以使用 RTC 提供的各种音视频能力。

如果当前线程中已创建了引擎实例,再次调用此方法时,会创建另一个独立的引擎实例。
destroyEngine 手动销毁引擎实例对象,如果当前的引擎对象是通过 initWithAppId:delegate:parameters:
所创建的,则行为与 destroy 保持一致
setBusinessId: 设置业务标识参数。

可通过 businessId 区分不同的业务场景(角色/策略等)。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能。
feedbackTypes:desc: 通话结束,将用户反馈的问题上报到 RTC

房间管理

方法 描述
setUserVisibility: 设置用户可见性。默认为可见。

通过对用户可见性进行设置,可以控制用户在房间内的行为:

+ 能否发布音视频流;

+ 用户自身是否在房间中隐身。
publish 将本端音视频流发布到此房间。
unpublish 在当前所在房间内停止发布本地音视频流。
joinRoomByKey:roomId:userInfo:rtcRoomConfig: 创建/加入房间:房间不存在时即创建房间;房间存在时,未加入房间的用户可加入这个房间。

同一个房间内的用户间可以相互通话。

进房后重复调用无效,用户必须调用 leaveRoom 退出当前房间后,才能加入下一个房间。
leaveRoom 离开房间。

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

用户调用 joinRoomByKey:roomId:userInfo:rtcRoomConfig: 方法加入房间时,
如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调,
回调错误码为 ByteRTCErrorCode 中的 ByteRTCErrorCodeInvalidToken
此时需要重新获取 Token,并调用此方法更新 Token。更新 Token 后,SDK 会自动加入房间。
pauseAllSubscribedStream: 暂停接收来自远端的媒体流
resumeAllSubscribedStream: 恢复接收来自远端的媒体流
subscribeUserStream:streamType:mediaType:videoConfig: 订阅房间内指定的远端音视频流。

无论是否开启自动订阅,你都可以调用此方法按需订阅房间中的音视频流。

该方法也可用于更新已经订阅的流的属性、媒体类型等配置。
leaveRoom 离开房间。

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

音频管理

方法 描述
startAudioCapture 开启内部音频采集。默认为关闭状态。

进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。

进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartAudioCapture: 的回调。
stopAudioCapture 关闭内部音频采集。默认为关闭状态。

进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。

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

你可以根据你的应用所在场景,选择合适的音频场景类型。

选择音频场景后,RTC 会自动根据客户端音频路由和发布订阅状态,适用通话音量/媒体音量。

本方法在进房前和进房后设置均可生效。
setAudioProfile: 设置音质档位。你应根据业务场景需要选择适合的音质档位。
setCaptureVolume:volume: 调节音频采集音量
setPlaybackVolume: 调节本地播放的所有远端用户混音后的音量。
enableAudioPropertiesReport: 启用音量提示。
setEarMonitorMode: 开启/关闭耳返功能
setEarMonitorVolume: 设置耳返的音量
setAudioPlaybackDevice: 设置音频播放设备为扬声器或者听筒,默认使用扬声器。

音频播放设备发生变化时,会收到 rtcEngine:onAudioPlaybackDeviceChanged: 回调。
setRemoteAudioPlaybackVolume:volume: 调节来自指定远端用户的音频播放音量,默认为 100。
getPositionAudioRender 获取位置音频接口实例,包括范围语音、空间语音等和位置相关的音频接口。
sendStreamSyncInfo:config: 发送音频流同步信息。将消息通过音频流发送到远端,并实现与音频流同步,该接口调用成功后,远端用户会收到 rtcEngine:onStreamSyncInfoReceived:streamType:data: 回调。
enableAudioSpatialRender: 开启或关闭空间音频效果。
updatePosition: 更新自己的位置坐标。
updateSelfOrientation: 更新自己的朝向。本地朝向的设置只影响本地听到的音频效果,不影响本地发出的音频效果。

视频管理

方法 描述
setVideoEncoderConfig:config: 启动推送多路视频流,设置推送多路流时的各路视频参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
setVideoCaptureConfig: 设置 RTC SDK 内部采集时的视频采集参数。

如果你的项目使用了 SDK 内部采集模块,可以通过本接口指定视频采集参数包括分辨率、帧率。
setLocalVideoCanvas:withCanvas: 设置本地视频渲染时,使用的视图,并设置渲染模式。

你应在加入房间前,绑定本地视图。退出房间后,此设置仍然有效。
如果需要解除绑定,你可以调用本方法传入空视图。
setRemoteVideoCanvas:withIndex:withCanvas: 渲染来自指定远端用户 uid 的视频流时,设置使用的视图和渲染模式。

如果需要解除视频的绑定视图,把 canvas 设置为空。
startVideoCapture 开启内部视频采集。默认为关闭状态。

调用该方法后,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。

进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartVideoCapture: 的回调。
stopVideoCapture 关闭内部视频采集。默认为关闭状态。

调用该方法后,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。

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

无论你使用内部视频采集,还是自定义视频采集,你都应使用此接口启动发送本地视频流。

调用该方法后,房间中的其他用户会收到 rtcEngine:onUserMuteVideo:withMuteState: 的回调。
setLocalVideoMirrorType: 为本地采集到的视频流开启镜像
switchCamera: 切换视频内部采集时使用的前置/后置摄像头

调用此接口后,在本地会触发 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 回调。
setCameraZoomRatio: 设置当前使用的摄像头(前置/后置)的变焦倍数
getCameraZoomMaxRatio 获取当前使用的摄像头(前置/后置)的最大变焦倍数
isCameraZoomSupported 检测当前使用的摄像头(前置/后置),是否支持变焦(数码/光学变焦)。
isCameraTorchSupported 检测当前使用的摄像头(前置/后置),是否支持闪光灯。
setCameraTorch: 打开/关闭当前使用的摄像头(前置/后置)的闪光灯
sendSEIMessage:andMessage:andRepeatCount: 在视频通信时,通过视频帧发送 SEI 数据。
setVideoSourceType:WithStreamIndex: 设置向 SDK 输入的视频源
setExternalVideoEncoderEventHandler: 注册自定义编码帧推送事件回调
pushExternalEncodedVideoFrame:withVideoIndex:withEncodedVideoFrame: 推送自定义编码后的视频流
setVideoDecoderConfig:withVideoDecoderConfig: 在订阅远端视频流之前,设置远端视频数据解码方式
requestRemoteVideoKeyFrame: 在订阅远端视频流之后,向远端请求关键帧
registerRemoteEncodedVideoFrameObserver: 注册远端编码后视频数据回調。

完成注册后,当 SDK 监测到远端编码后视频帧时,会触发 onRemoteEncodedVideoFrame:withEncodedVideoFrame: 回调

屏幕共享

方法 描述
publishScreen 发布本地屏幕共享流。
unpublishScreen 取消发布屏幕流
pushScreenCaptureFrame:time:rotation: 推送外部屏幕采集帧
startScreenSharingWithPreferredExtension:groupId: 开始内部屏幕采集
stopScreenSharing 停止内部屏幕采集
setScreenAudioSourceType: 在屏幕共享时,设置屏幕音频的采集方式(内部采集/自定义采集)
setScreenAudioStreamIndex: 在屏幕共享时,设置屏幕音频流和麦克风采集到的音频流的混流方式
pushScreenAudioFrame: 使用自定义采集方式,采集屏幕共享时的屏幕音频时,将音频帧推送至 RTC SDK 处进行编码等处理。

实时消息通信

方法 描述
sendRoomMessage: 给房间内的所有其他用户发送文本消息。
sendRoomBinaryMessage: 给房间内的所有其他用户发送二进制消息。
sendUserMessage:message: 给房间内指定的用户发送文本消息(P2P)。
sendUserBinaryMessage:message: 给房间内指定的用户发送二进制消息(P2P)。
login:uid: 必须先登录注册一个 uid,才能发送房间外消息和向业务服务器发送消息
logout 调用本接口登出后,无法调用房间外消息以及端到服务器消息相关的方法或收到相关回调。
updateLoginToken: 更新用户用于登录的 Token

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

调用 login:uid: 方法登录时,如果使用了过期的 Token 将导致登录失败,并会收到 rtcEngine:onLoginResult:errorCode:elapsed: 回调通知,错误码为 ByteRTCLoginErrorCodeInvalidToken。此时需要重新获取 Token,并调用此方法更新 Token。
setServerParams:url: 设置业务服务器参数

客户端调用 sendServerMessage: 或 sendServerBinaryMessage: 发送消息给业务服务器之前,必须需要设置有效签名和业务服务器地址。
getPeerOnlineStatus: 查询对端用户或本端用户的登录状态
sendUserMessageOutsideRoom:message: 给房间外指定的用户发送文本消息(P2P)
sendUserBinaryMessageOutsideRoom:message: 给房间外指定的用户发送二进制消息(P2P)
sendServerMessage: 客户端给业务服务器发送文本消息(P2Server)
sendServerBinaryMessage: 客户端给业务服务器发送二进制消息(P2Server)

混音

方法 描述
startAudioMixing:filePath:config: 开始播放音频文件及混音
stopAudioMixing: 停止播放音频文件及混音
pauseAudioMixing: 暂停播放音频文件
resumeAudioMixing: 恢复播放音频文件
preloadAudioMixing:filePath: 预加载指定音频文件到内存中
unloadAudioMixing: 卸载指定音频文件
setAudioMixingVolume:volume:type: 调节音频文件在本地和远端播放的音量大小
getAudioMixingDuration: 获取音频文件时长
getAudioMixingCurrentPosition: 获取音频文件播放进度
setAudioMixingPosition:position: 设置音频文件的播放位置
setAudioMixingDualMonoMode:mode: 设置当前音频文件的声道模式
enableAudioMixingFrame: 启动外部音频流混音
disableAudioMixingFrame 关闭外部音频流混音
pushAudioMixingFrame: 向 SDK 推送外部音频帧数据
getAudioMixingManager 混音管理接口创建

美声特效管理

方法 描述
setVoiceChangerType: 设置变声特效类型
setVoiceReverbType: 设置混响特效类型

媒体流管理

方法 描述
muteLocalAudio: 控制本地音频流的发送状态:发送/不发送。

使用此方法后,房间中的其他用户会收到回调 rtcEngine:onUserMuteAudio:muteState:。

自定义视频采集渲染

方法 描述
setLocalVideoSink:withSink:withPixelFormat: 将本地视频流与自定义渲染器绑定。
setRemoteVideoSink:withSink:withPixelFormat: 将远端视频流与自定义渲染器绑定。
pushExternalVideoFrame:time: 推送外部视频帧。
pushExternalVideoFrame:time:rotation: 推送外部视频帧。
pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo: 推送外部视频帧。
pushExternalByteVideoFrame: 推送外部视频帧,使用 ByteRTCVideoFrame 进行封装。

视频特效

方法 描述
checkVideoEffectLicense: 视频特效许可证检查
enableVideoEffect: 创建/销毁视频特效引擎
setVideoEffectAlgoModelPath: 设置视频特效算法模型路径
setVideoEffectNodes: 设置视频特效素材包,支持同时设置多个素材包
updateVideoEffectNode:nodeKey:nodeValue: 设置特效强度
setVideoEffectColorFilter: 设置颜色滤镜
setVideoEffectColorFilterIntensity: 设置已启用的颜色滤镜强度

视频处理

方法 描述
registerLocalVideoProcessor:withConfig: 设置自定义视频前处理器。

使用这个视频前处理器,你能够调用 processVideoFrame: 对 RTC SDK 采集得到的视频帧进行前处理,并将处理后的视频帧用于 RTC 音视频通信。

视频数据回调

方法 描述
registerLocalEncodedVideoFrameObserver: 注册本地视频帧监测器。

无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame:Frame: 回调给用户

转推直播

方法 描述
startLiveTranscoding:observer: 开启转推直播,并设置合流的视频视图布局和音频属性。
stopLiveTranscoding 停止转推直播。
updateLiveTranscoding: 更新转推直播参数。

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

云端渲染

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

自定义音频采集渲染

方法 描述
enableExternalAudioDevice:playbackFormat: 启用自定义音频采集渲染
disableExternalAudioDevice 禁用已开启的自定义音频采集渲染,将音频采集渲染由自定义模块切换至内部模块。
pushExternalAudioFrame: 推送外部音频数据。
pullExternalAudioFrame: 拉取外部音频数据。

音频数据回调

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

音频处理

方法 描述
registerLocalAudioProcessor:format: 设置自定义音频处理器。

使用该处理器,你可以调用 processAudioFrame: 对 RTC SDK 采集得到的音频帧进行自定义处理,并将处理后的音频帧用于 RTC 音视频通信。

SDK 只持有 processor 的弱引用,你应保证其生命周期。

音视频回退

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

加密

方法 描述
setEncryptType:key: 设置传输时使用内置加密的方式
setCustomizeEncryptHandler: 设置自定义加密和解密方式
需要实现对应的加密和解密方法。详情参考 ByteRTCEncryptHandler

多房间

方法 描述
createRtcRoom: 创建并获取一个 ByteRTCRoom 对象
destroy 销毁房间
getRoomId 获取房间 ID
setRtcRoomDelegate: 设置 ByteRTCRoomDelegate 代理。

通过设置事件句柄,可以监听此 ByteRTCRoom 对象对应的回调事件。
joinRoomByToken:userInfo:roomConfig: 加入房间。

调用 createRtcRoom: 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
setUserVisibility: 设置用户可见性。默认为可见。

通过对用户可见性进行设置,可以控制用户在房间内的行为:

+ 能否发布音视频流;

+ 用户自身是否在房间中隐身。
clientRole 获取当前用户角色。
renewToken: 更新 Token。

用户调用 joinRoomByToken:userInfo:roomConfig: 方法加入房间时,
如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调,
回调错误码为 ByteRTCErrorCode 中的 ByteRTCErrorCodeInvalidToken。
此时需要重新获取 Token,并调用此方法更新 Token。更新 Token 后,SDK 会自动加入房间。
publish 将本端音视频流发布到此房间。
unpublish 停止将本端音视频流发布到此房间。
publishScreen: 发布本地屏幕视频流到此房间。(外部采集)

调用此方法后,你还需要周期性调用 pushScreenCaptureFrame:time:rotation: 方法,
将需要发送的屏幕数据推送给 SDK。
unpublishScreen 停止发布本地屏幕共享流到房间。
subscribeUserStream:streamType:mediaType:videoConfig: 订阅房间内指定的远端音视频流。

无论是自动订阅还是手动订阅模式,你都可以调用此方法按需订阅房间中的音视频流。

该方法也可用于更新已经订阅的流的属性、媒体类型等配置。
pauseAllSubscribedStream: 暂停接收来自远端的媒体流
resumeAllSubscribedStream: 恢复接收来自远端的媒体流
startLiveTranscoding:observer: 开启转推直播,并设置视频视图布局、音频属性等参数
stopLiveTranscoding 停止转推直播。
updateLiveTranscoding: 更新转推直播参数。

启用转推直播功能后,你可以使用此方法更新合流转推功能配置参数。
sendUserMessage:message: 给房间内指定的用户发送文本消息(P2P)。
sendUserBinaryMessage:message: 给房间内指定的用户发送二进制消息(P2P)。
sendRoomMessage: 给房间内的所有其他用户发送文本消息。
sendRoomBinaryMessage: 给房间内的所有其他用户发送二进制消息。

语音识别服务

方法 描述
startASR:handler: 开启自动语音识别服务。该方法将识别后的用户语音转化成文字,并通过 onMessage: 事件回调给用户。
stopASR 关闭语音识别服务

本地录制

方法 描述
startFileRecording:withRecordingConfig: 该方法将通话过程中的音视频数据录制到本地的文件中。
stopFileRecording: 停止本地录制

通话前网络探测

方法 描述
startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth: 开始通话前网络探测
stopNetworkDetection 停止通话前网络探测

回调

回调 描述
onLocalScreenFrame: 本地屏幕流的视频帧数据回调
onLocalVideoFrame: 本地视频流的视频帧数据回调
onRemoteScreenFrame:user:room: 远端屏幕流的视频帧数据回调
onRemoteVideoFrame:user:room: 远端视频流的视频帧数据回调
onStreamMixingEvent:eventData:error:mixType: 转推直播状态回调
rtcEngine:onLeaveRoomWithStats: 离开房间成功回调。

用户调用 leaveRoom 方法后,SDK 会停止所有的发布订阅流,并释放所有通话相关的音视频资源。SDK 完成所有的资源释放后通过此回调通知用户。

视频处理

回调 描述
processVideoFrame: 获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor:withConfig: 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。

视频数据回调

回调 描述
onLocalEncodedVideoFrame:Frame: 调用 registerLocalEncodedVideoFrameObserver: 后,SDK 收到本地视频帧信息时,回调该事件
onRemoteEncodedVideoFrame:withEncodedVideoFrame: 调用 registerRemoteEncodedVideoFrameObserver: 后,SDK 监测到远端编码后视频数据时,触发该回调

视频管理

回调 描述
onStart: 提示自定义编码帧可以开始推送的回调。

收到该回调后,你即可调用 pushExternalEncodedVideoFrame:withVideoIndex:withEncodedVideoFrame: 向 SDK 推送自定义编码视频帧
onStop: 当收到该回调时,你需停止向 SDK 推送自定义编码视频帧
onRateUpdate:withVideoIndex:withFps:withBitRate: 当自定义编码流的帧率或码率发生变化时,触发该回调
onRequestKeyFrame:withVideoIndex: 调用 requestRemoteVideoKeyFrame: 请求远端关键帧时,会触发该回调
rtcEngine:onUserMuteVideo:withMuteState: 房间内用户调用 muteLocalVideo: 暂停/恢复发送视频流时,房间内其他用户会收到此回调。
rtcEngine:onUserStartVideoCapture: 房间中用户调用 startVideoCapture 时,房间中其他用户会收到此回调。
rtcEngine:onUserStopVideoCapture: 房间中远端用户调用 stopVideoCapture 时,本地用户将会收到该回调。
rtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo: 第一帧本地采集的视频/屏幕共享画面在本地视图渲染完成时,收到此回调。
rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 第一帧远端视频流在视图上渲染成功后,收到此回调。
rtcEngine:onRemoteVideoSizeChanged:withFrameInfo: 远端视频大小或旋转信息发生变化时,房间内订阅此视频流的用户会收到此回调。
rtcEngine:onLocalVideoSizeChanged:withFrameInfo: 本地视频大小或旋转信息发生变化时,收到此回调。
rtcEngine:remoteVideoStateChangedOfUid:state: 远端视频流状态发生改变回调。
rtcEngine:onVideoStreamBanned:isBanned: 通过调用服务端 MuteUser/UnmuteUser 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。
rtcEngine:onSEIMessageReceived:andMessage: 收到通过调用 sendSEIMessage:andMessage:andRepeatCount: 带有 SEI 消息的视频帧时,收到此回调
rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError: 本地视频流的状态发生改变时,收到该事件。
rtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason: 远端视频流的状态发生改变时,房间内订阅此流的用户会收到该事件。
rtcRoom:onVideoStreamBanned:isBanned: 通过调用服务端 MuteUser/UnmuteUser 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。

转推直播

回调 描述
isSupportClientPushStream 是否具有推流能力。

+ false:不具备推流能力(默认值)

+ true:具备推流能力
onMixingAudioFrame: 端云一体合流音频 PCM 回调
onMixingVideoFrame: 端云一体合流视频 YUV 回调
onMixingDataFrame: 端云一体合流视频 SEI 数据
rtcEngine:onLiveTranscodingResult:errorCode: 转推直播错误回调。

调用 startLiveTranscoding:observer: 接口或直接在服务端启动转推直播功能后,你会通过此回调收到启动结果和推流过程中的错误。

警告码

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

SDK 运行时出现了警告。SDK 通常会自动恢复,警告信息可以忽略。

错误码

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

SDK 运行时出现了网络或媒体相关的错误,且无法自动恢复时触发此回调。

引擎管理

回调 描述
rtcEngine:connectionChangedToState: SDK 与信令服务器连接状态改变回调。连接状态改变时触发。
rtcEngine:networkTypeChangedToType: SDK 当前网络连接类型改变回调。
rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 媒体设备状态回调。媒体设备包括音频采集设备、音频渲染设备、视频采集设备三种类型。

房间管理

回调 描述
rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 首次加入房间/重连加入房间的回调,表示用户调用 joinRoomByKey:roomId:userInfo:rtcRoomConfig:
的结果,根据错误码判断成功/失败以及区别是否为重连。
rtcEngine:onUserJoined:elapsed: 远端可见用户加入房间,或房内隐身用户切换为可见的回调。

1. 远端用户调用 setUserVisibility: 方法将自身设为可见后加入房间时,房间内其他用户将收到该事件。

2. 远端可见用户断网后重新连入房间时,房间内其他用户将收到该事件。

3. 房间内隐身远端用户调用 setUserVisibility: 方法切换至可见时,房间内其他用户将收到该事件。

4. 新进房用户会收到进房前已在房内的主播角色用户的进房回调通知。
rtcEngine:onUserLeave:reason: 远端可见用户离开房间,或从可见切换为隐身的回调。

发生以下情形时,房间内其他用户会收到此事件:

1.远端可见用户调用 leaveRoom 方法离开房间时;

2.远端可见用户调用 setUserVisibility: 方法切换至隐身;

3.远端可见用户断网,且一直未恢复。
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:onUserMuteAudio:muteState: 房间内某用户调用 muteLocalAudio:
改变本地音频发送状态时,房间内其他用户会收到此回调。

音频事件回调

回调 描述
rtcEngine:onUserStartAudioCapture: 房间内的用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。
rtcEngine:onUserStopAudioCapture: 房间内的用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。
rtcEngine:onFirstRemoteAudioFrame: 当收到远端流的第一帧音频的时候上报该事件
rtcEngine:onFirstLocalAudioFrame: 本地采集到第一帧音频帧时,收到该回调。
rtcEngine:onAudioStreamBanned:isBanned: 通过调用服务端 MuteUser/UnmuteUser 方法禁用/解禁指定房间内指定用户视音频流的发送时,触发此回调。
rtcEngine:onAudioPlaybackDeviceChanged: 音频播放设备变化时,收到该回调。
rtcEngine:onLocalAudioStateChanged:error: 本地音频流的状态发生改变时,收到此回调。
rtcEngine:onRemoteAudioStateChanged:state:reason: 订阅的远端音频流状态发生改变时,收到此回调。
rtcRoom:onAudioStreamBanned:isBanned: 通过调用服务端 MuteUser/UnmuteUser 方法禁用/解禁指定房间内指定用户视音频流的发送时,触发此回调。

音频管理

回调 描述
rtcEngine:onLocalAudioPropertiesReport: 调用 enableAudioPropertiesReport: 后,根据设置的 interval 值,你会周期性地收到此回调,了解本地音频的相关信息。
rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume: 远端用户进房后,本地调用 enableAudioPropertiesReport: ,根据设置的 interval 值,本地会周期性地收到此回调,了解订阅的远端用户的音频信息。
rtcEngine:onStreamSyncInfoReceived:streamType:data: 音频流同步信息回调。可以通过此回调,在远端用户调用 sendStreamSyncInfo:config: 发送音频流同步消息后,收到远端发送的音频流同步信息。

实时消息通信

回调 描述
rtcEngine:onRoomMessageReceived:message: 收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtcEngine:onRoomBinaryMessageReceived:message: 收到房间中调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtcEngine:onUserMessageReceived:message: 收到来自房间中其他用户通过 sendUserMessage:message: 发来的文本消息时(P2P),会收到此回调。
rtcEngine:onUserBinaryMessageReceived:message: 收到来自房间中其他用户通过 sendUserBinaryMessage:message: 发来的二进制消息时,会收到此回调。
rtcEngine:onUserMessageSendResult:error: 向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
rtcEngine:onRoomMessageSendResult:error: 向房间内所有用户群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。
rtcEngine:onLoginResult:errorCode:elapsed: 登录结果回调
rtcEngineOnLogout: 登出结果回调
rtcEngine:onServerParamsSetResult: 设置业务服务器参数的返回结果
rtcEngine:onGetPeerOnlineStatus:status: 查询对端或本端用户登录状态的返回结果
rtcEngine:onUserMessageReceivedOutsideRoom:message: 收到房间外用户调用 sendUserMessageOutsideRoom:message: 发来的文本消息时,会收到此回调
rtcEngine:onUserBinaryMessageReceivedOutsideRoom:message: 收到房间外用户调用 sendUserBinaryMessageOutsideRoom:message: 发来的二进制消息时,会收到此回调。
rtcEngine:onUserMessageSendResultOutsideRoom:error: 给房间外指定的用户发送消息的回调
rtcEngine:onServerMessageSendResult:error: 给业务服务器发送消息的回调

数据统计

回调 描述
rtcEngine:onRoomStats: 房间内通话统计信息回调。

用户进房开始通话后,每 2s 收到一次本回调。
rtcEngine:reportSysStats: 报告当前设备 cpu 与 memory 使用率,每 2s 触发一次。
rtcEngine:onLocalStreamStats: 本地流数据统计以及网络质量回调。

本地用户发布流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的流在此次统计周期内的质量统计信息。

统计信息通过 ByteRTCLocalStreamStats 类型的回调参数传递给用户,其中包括发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcEngine:onRemoteStreamStats: 本地订阅的远端音/视频流数据统计以及网络质量回调。

本地用户订阅流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。

通话前网络探测

回调 描述
rtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter: 通话前网络探测结果
成功调用 startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth: 接口开始探测后,会每 2s 收到一次此回调。
rtcEngine:onNetworkDetectionStopped: 通话前网络探测结束
以下情况将停止探测并收到本一次本回调:

1. 当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;
2. 当收到远端/本端音频首帧后,停止探测;
3. 当探测超过3分钟后,停止探测;
4. 当探测链路断开一定时间之后,停止探测。

混音

回调 描述
rtcEngine:onAudioMixingStateChanged:state:error: 音频混音文件播放状态改变时回调

音视频回退

回调 描述
rtcEngine:onPerformanceAlarmsWithMode:roomId:reason:sourceWantedData: 本地未开启发布性能回退,检测到设备性能不足时,收到此回调。

本地开启发布性能回退,因设备性能/网络原因,造成发布性能回退/恢复时,收到此回调。
rtcEngine:OnSimulcastSubscribeFallback: 因发布/订阅性能回退或退出回退状态,订阅的音视频流,发生流的切换时,收到该回调。

网络代理

回调 描述
rtcEngine:onHttpProxyState: HTTP 代理连接状态改变时,收到该回调。
rtcEngine:onHttpsProxyState: HTTPS 代理连接状态改变时,收到该回调。
rtcEngine:onSocks5ProxyState:cmd:proxy_address:local_address:remote_address: SOCKS5 代理状态改变时,收到该回调。

本地录制

回调 描述
rtcEngine:onRecordingStateUpdate:state:error_code:recording_info: 获取本地录制状态回调。

该回调由 startFileRecording:withRecordingConfig: 或 stopFileRecording: 触发。
rtcEngine:onRecordingProgressUpdate:process:recording_info: 本地录制进度回调。

该回调由 startFileRecording:withRecordingConfig: 触发,录制状态正常时,系统每秒钟都会通过该回调提示录制进度。

音频数据回调

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

加密

回调 描述
ByteRTCEncryptRawData: 自定义加密。

使用设定的自定义加密方式,对传输前的音视频帧数据进行加密。
ByteRTCDecryptRawData: 自定义解密。

对自定义加密后的音视频帧数据进行解密。关于自定义加密,参看 ByteRTCEncryptRawData:。

监控

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

多房间

回调 描述
rtcRoom:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 首次加入房间/重连加入房间的回调。根据错误码判断成功/失败以及区别是否为重连。
rtcRoom:onRoomWarning: 发生警告回调。

SDK 运行时出现了警告。SDK 通常会自动恢复,警告信息可以忽略。
rtcRoom:onRoomError: 发生错误回调。

SDK 运行时出现了错误。SDK 通常无法自动恢复,应用需要采取行动。
rtcRoom:onRoomStats: 房间内通话统计信息回调。

用户进房开始通话后,每 2s 收到一次本回调。
rtcRoom:onLocalStreamStats: 本地流数据统计以及网络质量回调。

本地用户发布流成功后,SDK 会周期性(2s)的通过此回调事件通知用户发布的流在此次统计周期内的质量统计信息。

统计信息通过 ByteRTCLocalStreamStats 类型的回调参数传递给用户,其中包括发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onRemoteStreamStats: 本地订阅的远端音/视频流数据统计以及网络质量回调。

本地用户订阅流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onUserJoined:elapsed: 远端可见用户加入房间,或房内隐身用户切换为可见的回调。

1. 远端用户调用 setUserVisibility: 方法将自身设为可见后加入房间时,房间内其他用户将收到该事件。

2. 远端可见用户断网后重新连入房间时,房间内其他用户将收到该事件。

3. 房间内隐身远端用户调用 setUserVisibility: 方法切换至可见时,房间内其他用户将收到该事件。

4. 新进房用户会收到进房前已在房内的主播角色用户的进房回调通知。
rtcRoom:onUserLeave:reason: 远端可见用户离开房间,或从可见切换为隐身的回调。

发生以下情形时,房间内其他用户会收到此事件:

1.远端可见用户调用 leaveRoom 方法离开房间时;

2.远端可见用户调用 setUserVisibility: 方法切换至隐身;

3.远端可见用户断网,且一直未恢复。
rtcRoom:onUserMuteAudio:muteState: 房间内某用户调用 muteLocalAudio:
改变本地音频发送状态时,房间内其他用户会收到此回调。
rtcRoom:onUserStartAudioCapture: 房间内的用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。
rtcRoom:onUserStopAudioCapture: 房间内的用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。
rtcRoom:onFirstLocalAudioFrame: 本地采集到第一帧音频帧时,收到该回调。
rtcRoom:onFirstRemoteAudioFrame: 当收到远端流的第一帧音频的时候上报该事件
rtcRoom:onStreamAdd: 以下情况会触发此回调:

+ 房间内的用户发布新的音视频流时,房间内的其他用户会收到此回调通知。

+ 房间内的用户原音视频流被移出后,又重新发布音视频流时,房间内的其他用户会收到此回调通知。

+ 用户刚加入房间时,会收到此回调,包含房间中所有已发布的流。
rtcRoom:didStreamRemoved:stream:reason: 房间内的远端用户停止发布音视频流时,本地用户会收到此回调通知。
rtcRoom:onRoomMessageReceived:message: 收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtcRoom:onRoomBinaryMessageReceived:message: 收到房间中调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtcRoom:onUserMessageReceived:message: 收到来自房间中其他用户通过 sendUserMessage:message: 发来的文本消息时(P2P),会收到此回调。
rtcRoom:onUserBinaryMessageReceived:message: 收到来自房间中其他用户通过 sendUserBinaryMessage:message: 发来的二进制消息时,会收到此回调。
rtcRoom:onUserMessageSendResult:error: 向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
rtcRoom:onRoomMessageSendResult:error: 向房间内所有用户群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。
rtcRoom:onLiveTranscodingResult:errorCode: 合流转推错误回调。

调用 startLiveTranscoding:observer: 接口或直接在服务端启动合流转推功能后,你会通过此回调收到启动结果和推流过程中的错误。
rtcRoom:onFirstLocalVideoFrameCaptured:withFrameInfo: 第一帧本地采集的视频/屏幕共享画面在本地视图渲染完成时,收到此回调。
rtcRoom:onLocalVideoSizeChanged:withFrameInfo: 本地视频大小或旋转信息发生变化时,收到此回调。
rtcRoom:onRemoteVideoSizeChanged:withFrameInfo: 远端视频大小或旋转配置发生改变时,房间内订阅此视频流的用户会收到此回调。
rtcRoom:onFirstRemoteVideoFrameRendered:withFrameInfo: 第一帧远端视频流在视图上渲染成功后,收到此回调。
rtcRoom:onUserMuteVideo:withMuteState: 房间内用户调用 muteLocalVideo: 暂停/恢复发送视频流时,房间内其他用户会收到此回调。
rtcRoom:onUserStartVideoCapture: 房间中用户调用 startVideoCapture 时,房间中其他用户会收到此回调。
rtcRoom:onUserStopVideoCapture: 房间中远端用户调用 stopVideoCapture 时,本地用户将会收到该回调。
rtcRoom:onLocalAudioStateChanged:error: 本地音频流的状态发生改变时,收到此回调。
rtcRoom:onRemoteAudioStateChanged:state:reason: 订阅的远端音频流状态发生改变时,收到此回调。
rtcRoom:onLocalVideoStateChanged:withStreamState:withStreamError: 本地视频流的状态发生改变时,收到该事件。
rtcRoom:onRemoteVideoStateChanged:withVideoState:withVideoStateReason: 远端视频流的状态发生改变时,房间内订阅此流的用户会收到该事件。
rtcRoom:onAudioFrameSendStateChanged:state: 音频首帧发送状态改变时,收到此回调。
rtcRoom:onVideoFrameSendStateChanged:state: 视频首帧发送状态改变时,收到此回调
rtcRoom:onScreenVideoFrameSendStateChanged:state: 屏幕共享流视频首帧发送状态改变时,收到此回调
rtcRoom:onAudioFramePlayStateChanged:state: 音频首帧播放状态改变时,收到此回调
rtcRoom:onVideoFramePlayStateChanged:state: 视频首帧播放状态改变时,收到此回调