方法

引擎管理

方法 描述
createRTCVideo:delegate:parameters: 创建引擎对象。

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

如果当前线程中已创建了引擎实例,再次调用此方法时,会返回已创建的引擎实例。
getSdkVersion 获取 SDK 当前的版本号。
feedback:desc: 通话结束,将用户反馈的问题上报到 RTC
getErrorDescription: 获取 SDK 内各种错误码、警告码的描述文字。
setBusinessId: 设置业务标识参数

可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
setRuntimeParameters: 设置运行时的参数

房间管理

方法 描述
createRTCRoom: 创建房间
多次调用此方法以创建多个 ByteRTCRoom 实例。分别调用各 ByteRTCRoom 实例中的 joinRoomByToken:userInfo:roomConfig: 方法,同时加入多个房间。多房间模式下,用户可以同时订阅各房间的音视频流。
destroy 销毁房间
setRtcRoomDelegate: 通过设置 ByteRTCRoomDelegate 代理,可以监听此 ByteRTCRoom 对象对应的回调事件。
joinRoomByToken:userInfo:roomConfig: 加入房间。

调用 createRTCRoom: 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
leaveRoom 离开房间。

用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
setUserVisibility: 设置用户可见性。默认可见。
renewToken: 更新 Token。

用户调用 joinRoomByToken:userInfo:roomConfig: 方法加入房间时,
如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo: 回调,
回调错误码为 ByteRTCErrorCode 中的 ByteRTCErrorCodeInvalidToken。
此时需要重新获取 Token,并调用此方法更新 Token。更新 Token 后,SDK 会自动加入房间。

音频管理

方法 描述
getAudioRoute 获取当前使用的音频播放路由。
muteAudioPlayback: 控制本地音频流播放状态:播放/不播放
setCaptureVolume:volume: 调节音频采集音量
setPlaybackVolume: 调节本地播放的所有远端用户混音后的音量。播放音频前或播放音频时,你都可以使用此接口设定播放音量。
setRemoteAudioPlaybackVolume:remoteUid:playVolume: 调节来自远端用户的音频播放音量
enableAudioPropertiesReport: 启用音频信息提示。
startAudioCapture 开启内部音频采集。默认为关闭状态。

内部采集是指:使用 RTC SDK 内置的音频采集机制进行视频采集。
调用该方法开启后,本地用户会收到 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 的回调。

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

内部采集是指:使用 RTC SDK 内置的音频采集机制进行视频采集。
调用该方法,本地用户会收到 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 的回调。

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

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

选择音频场景后,SDK 会自动根据客户端音频采集播放设备和状态,适用通话音量/媒体音量。

本方法在进房前和进房后设置均可生效。
setAudioProfile: 设置音质档位。当所选的 ByteRTCRoomProfile 中的音频参数无法满足你的场景需求时,调用本接口切换的音质档位。
enableExternalSoundCard: 启用匹配外置声卡的音频处理模式
enumerateAudioCaptureDevices 获取音频采集设备列表。如果后续设备有变更,你需要重新调用本接口以获得新的设备列表。
enumerateAudioPlaybackDevices 获取当前系统内音频播放设备列表。你可以在收到 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 了解设备变更后,重新调用本接口以获得新的设备列表。
followSystemCaptureDevice: 设置音频采集路由是否跟随系统。
followSystemPlaybackDevice: 设置音频播放路由是否跟随系统。
getAudioCaptureDevice: 获取当前音频采集设备。
getAudioCaptureDeviceMute: 获取当前音频采集设备是否静音的信息。
getAudioCaptureDeviceVolume: 获取当前音频采集设备音量
getAudioPlaybackDevice: 获取当前音频播放设备。
getAudioPlaybackDeviceMute: 获取当前音频播放设备是否静音的信息。
getAudioPlaybackDeviceVolume: 获取当前音频播放设备音量
initAudioCaptureDeviceForTest: 尝试初始化音频采集设备,以检测设备不存在、权限被拒绝/禁用等异常问题。
initAudioPlaybackDeviceForTest: 尝试初始化音频播放设备,以检测设备不存在、权限被拒绝/禁用等异常问题。
setAudioCaptureDevice: 设置音频采集设备。
setAudioCaptureDeviceMute: 设置当前音频采集设备静音状态,默认为非静音。
setAudioCaptureDeviceVolume: 设置当前音频采集设备音量
setAudioPlaybackDevice: 设置音频播放设备。
setAudioPlaybackDeviceMute: 设置当前音频播放设备静音状态,默认为非静音。
setAudioPlaybackDeviceVolume: 设置当前音频播放设备音量
startAudioDeviceLoopbackTest: 开始音频设备回路测试。

该方法测试音频采集设备和音频播放设备是否能正常工作。一旦测试开始,音频采集设备会采集本地声音并通过音频播放设备播放出来,同时会收到 rtcEngine:onLocalAudioPropertiesReport:。
startAudioDeviceRecordTest: 开始音频采集设备和音频播放设备测试。

建议提前调用 enableAudioPropertiesReport: 注册音量提示回调,测试开始后,音频设备开始采集本地声音,可以通过 rtcEngine:onLocalAudioPropertiesReport: 获取采集音量。
startAudioRecordingDeviceTest: 启动音频采集设备测试。

该方法测试音频采集设备是否能正常工作。启动测试后,会收到 rtcEngine:onLocalAudioPropertiesReport: 回调上报的音量信息。
startPlaybackDeviceTest:interval: 启动音频播放设备测试。

该方法测试播放设备是否能正常工作。SDK 播放指定的音频文件,测试者如果能听到声音,说明播放设备能正常工作。
stopAudioDeviceLoopbackTest 停止音频设备回路测试。
stopAudioDevicePlayTest 停止由调用 startAudioDeviceRecordTest: 开始的音频播放设备测试。

在音频播放设备测试自动结束前,可调用本接口停止音频采集与播放测试。
stopAudioDeviceRecordAndPlayTest 停止采集本地音频,并开始播放采集到的声音。录音播放完毕后,设备测试流程结束。

调用 startAudioDeviceRecordTest: 30s 内调用本接口来停止采集并开始播放此前采集到的声音。
stopAudioRecordingDeviceTest 停止音频采集设备测试。
stopPlaybackDeviceTest 停止音频播放设备测试。
getAudioDeviceManager 创建音频设备管理实例
startScreenAudioCapture: 在屏幕共享时,开始使用 RTC SDK 内部采集方式,采集屏幕音频
stopScreenAudioCapture 在屏幕共享时,停止使用 RTC SDK 内部采集方式,采集屏幕音频。

视频管理

方法 描述
startVideoCapture 立即开启内部视频采集。默认为关闭状态。

内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。

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

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

内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。

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

非隐身用户进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopVideoCapture:uid: 的回调。
setVideoCaptureConfig: 设置 RTC SDK 内部采集时的视频采集参数。

如果你的项目使用了 SDK 内部采集模块,可以通过本接口指定视频采集参数包括模式、分辨率、帧率。
setVideoRotationMode: 设置采集视频的旋转模式。默认以 App 方向为旋转参考系。

接收端渲染视频时,将按照和发送端相同的方式进行旋转。
setLocalVideoCanvas:withCanvas: 设置本地视频渲染时,使用的视图,并设置渲染模式。
updateLocalVideoCanvas:withRenderMode:withBackgroundColor: 修改本地视频渲染模式和背景色。
setRemoteVideoCanvas:withIndex:withCanvas: 渲染来自指定远端用户 uid 的视频流时,设置使用的视图和渲染模式。

如果需要解除视频的绑定视图,把 canvas 设置为空。
updateRemoteStreamVideoCanvas:withUserId:withIndex:withRenderMode:withBackgroundColor: 修改远端视频渲染模式和背景色。
registerFaceDetectionObserver:withInterval: 注册人脸检测结果回调观察者

注册此观察者后,你会周期性收到 onFaceDetectionResult: 回调。
SetVideoEncoderConfig: 视频发布端设置推送多路流时各路流的参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
SetMaxVideoEncoderConfig: 视频发布端设置期望发布的最大分辨率视频流参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。

该接口支持设置一路视频流参数,设置多路参数请使用 SetVideoEncoderConfig:。
getVideoDeviceManager 创建视频设备管理实例

音视频传输

方法 描述
publishStream: 在当前所在房间内发布本地通过摄像头/麦克风采集的媒体流
unpublishStream: 停止将本地摄像头/麦克风采集的媒体流发布到当前所在房间中
pauseAllSubscribedStream: 暂停接收来自远端的媒体流
resumeAllSubscribedStream: 恢复接收来自远端的媒体流
subscribeStream:mediaStreamType: 订阅房间内指定的通过摄像头/麦克风采集的媒体流,或更新对指定远端用户的订阅选项
unSubscribeStream:mediaStreamType: 取消订阅房间内指定的通过摄像头/麦克风采集的媒体流。

该方法对自动订阅和手动订阅模式均适用。
requestRemoteVideoKeyFrame: 在订阅远端视频流之后,向远端请求关键帧
startForwardStreamToRooms: 开始跨房间转发媒体流。
在用户进入房间后调用本接口,实现向多个房间转发媒体流,适用于跨房间连麦等场景。
updateForwardStreamToRooms: 更新跨房间媒体流转发信息。

通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法增加或者减少目标房间,或更新房间密钥。
调用本方法增加或删减房间后,将在本端触发 rtcRoom:onForwardStreamStateChanged: 回调,包含发生了变动的目标房间中媒体流转发状态。
stopForwardStreamToRooms 停止跨房间媒体流转发。
通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法停止向所有目标房间转发媒体流。
pauseForwardStreamToAllRooms 暂停跨房间媒体流转发。
通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法暂停向所有目标房间转发媒体流。
调用本方法暂停向所有目标房间转发后,你可以随时调用 resumeForwardStreamToAllRooms 快速恢复转发。
resumeForwardStreamToAllRooms 恢复跨房间媒体流转发。
调用 pauseForwardStreamToAllRooms 暂停转发之后,调用本方法恢复向所有目标房间转发媒体流。
setMultiDeviceAVSync: 设置发流端音画同步。

当同一用户同时使用两个通话设备分别采集发送音频和视频时,有可能会因两个设备所处的网络环境不一致而导致发布的流不同步,此时你可以在视频发送端调用该接口,SDK 会根据音频流的时间戳自动校准视频流,以保证接收端听到音频和看到视频在时间上的同步性。
startPushPublicStream:withLayout: 发布一路公共流

公共流是指不属于任何房间,也不属于任何用户的媒体流。使用同一 appID 的用户,可以调用 startPlayPublicStream: 获取和播放指定的公共流。
stopPushPublicStream: 停止发布当前用户发布的公共流

关于发布公共流,查看 startPushPublicStream:withLayout:。
updatePublicStreamParam:withLayout: 更新公共流参数

关于发布公共流,查看 startPushPublicStream:withLayout:。
startPlayPublicStream: 订阅指定公共流

无论用户是否在房间内,都可以调用本接口获取和播放指定的公共流。
stopPlayPublicStream: 取消订阅指定公共流

关于订阅公共流,查看 startPlayPublicStream:。
setPublicStreamVideoCanvas:withCanvas: 为指定公共流绑定内部渲染视图。
setPublicStreamVideoSink:withSink:withPixelFormat: 为指定公共流绑定自定义渲染器。详见自定义视频渲染。

音视频处理

方法 描述
setLocalVideoMirrorType: 为采集到的视频流开启镜像
SetVideoWatermark:WithImagePath:WithRtcWatermarkConfig: 在指定视频流上添加水印。
ClearVideoWatermark: 移除指定视频流的水印。
checkVideoEffectLicense: 视频特效许可证检查
setVideoEffectAlgoModelPath: 设置视频特效算法模型路径
enableVideoEffect: 创建/销毁视频特效引擎
setVideoEffectNodes: 设置视频特效素材包
updateVideoEffectNode:nodeKey:nodeValue: 设置特效强度
setVideoEffectColorFilter: 设置颜色滤镜
setVideoEffectColorFilterIntensity: 设置已启用的颜色滤镜强度
enableEffectBeauty: 开启/关闭基础美颜
setBeautyIntensity:withIntensity: 调整基础美颜强度
setBackgroundSticker:source: 将摄像头采集画面中的人像背景替换为指定图片或纯色背景。
若要取消背景特效,将背景贴纸特效素材路径设置为null。
setVoiceChangerType: 设置变声特效类型
setVoiceReverbType: 设置混响特效类型
setLocalVoicePitch: 开启本地语音变调功能,多用于 K 歌场景。

使用该方法,你可以对本地语音的音调进行升调或降调等调整。
getAuthMessage: 从特效 SDK 获取授权消息,用于获取在线许可证。

自定义流处理

方法 描述
setVideoSourceType:WithStreamIndex: 设置向 SDK 输入的视频源
默认使用内部采集。内部采集指:使用 RTC SDK 内置的视频采集机制进行视频采集。
pushExternalVideoFrame:time: 推送外部视频帧。
pushExternalVideoFrame:time:rotation: 推送外部视频帧。
pushExternalVideoFrame:time:rotation:extendedData:supplementaryInfo: 推送外部视频帧。
pushExternalByteVideoFrame: 推送外部视频帧,使用 ByteRTCVideoFrame 进行封装。
setLocalVideoSink:withSink:withPixelFormat: 将本地视频流与自定义渲染器绑定。
setRemoteVideoSink:withSink:withPixelFormat: 将远端视频流与自定义渲染器绑定。
registerRemoteEncodedVideoFrameObserver: 注册远端编码后视频数据回調。

完成注册后,当 SDK 监测到远端编码后视频帧时,会触发 onRemoteEncodedVideoFrame:withEncodedVideoFrame: 回调
setVideoDecoderConfig:withVideoDecoderConfig: 在订阅远端视频流之前,设置远端视频数据解码方式
setAudioSourceType: 切换音频采集方式
setAudioRenderType: 切换音频渲染方式
pushExternalAudioFrame: 推送自定义采集的音频数据到 RTC SDK。
pullExternalAudioFrame: 拉取音频数据,用于自定义渲染。
registerLocalVideoProcessor:withConfig: 设置自定义视频前处理器。

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

注册完成后,你可以调用 enableAudioProcessor:audioFormat:,对本地采集或接收到的远端音频进行处理。
enableAudioProcessor:audioFormat: 获取本地采集的音频帧或接收到的远端音频帧,进行自定义处理。
disableAudioProcessor: 关闭自定义音频处理。
setAudioFrameObserver: 注册音频数据回调观察者。
enableAudioFrameCallback:format: 开启音频回调
disableAudioFrameCallback: 关闭音频回调
registerLocalEncodedVideoFrameObserver: 注册本地视频帧监测器。

无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame:Frame: 回调给用户
setExternalVideoEncoderEventHandler: 注册自定义编码帧推送事件回调
pushExternalEncodedVideoFrame:withVideoIndex:withEncodedVideoFrame: 推送自定义编码后的视频流

网络管理

方法 描述
enableSimulcastMode: 该方法设置视频流发布端是否开启发布多路编码参数不同的视频流的模式。
setRemoteVideoConfig:remoteVideoConfig: 设置期望订阅的远端视频流的参数。
setPublishFallbackOption: 设置发布的音视频流的回退选项。

你可以调用该接口设置网络不佳或设备性能不足时从大流起进行降级处理,以保证通话质量。
setSubscribeFallbackOption: 设置订阅的音视频流的回退选项。

你可调用该接口设置网络不佳或设备性能不足时允许订阅流进行降级或只订阅音频流,以保证通话流畅。
setRemoteUserPriority:InRoomId:uid: 设置用户优先级
startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth: 开始通话前网络探测
stopNetworkDetection 停止通话前网络探测
startEchoTest:playDelay: 开启音视频回路测试。

在进房前,用户可调用该接口对音视频通话全链路进行检测,包括对音视频设备以及用户上下行网络的检测,从而帮助用户判断是否可以正常发布和接收音视频流。

开始检测后,SDK 会录制你声音或视频。如果你在设置的延时范围内收到了回放,则视为音视频回路测试正常。
stopEchoTest 停止音视频回路测试。

调用 startEchoTest:playDelay: 开启音视频回路检测后,你必须调用该方法停止检测。

消息

方法 描述
sendRoomMessage: 给房间内的所有其他用户发送文本消息。
sendRoomBinaryMessage: 给房间内的所有其他用户发送二进制消息。
sendUserMessage:message:config: 给房间内指定的用户发送文本消息(P2P)。
sendUserBinaryMessage:message:config: 给房间内指定的用户发送二进制消息(P2P)。
login:uid: 必须先登录,才能发送房间外点对点消息和向应用服务器发送消息

在调用本接口登录后,如果想要登出,需要调用 logout
logout 调用本接口登出后,无法调用房间外消息以及端到服务器消息相关的方法或收到相关回调。
updateLoginToken: 更新用户用于登录的 Token

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

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

客户端调用 sendServerMessage: 或 sendServerBinaryMessage: 发送消息给应用服务器之前,必须需要设置有效签名和应用服务器地址。
getPeerOnlineStatus: 查询对端用户或本端用户的登录状态
sendUserMessageOutsideRoom:message:config: 给房间外指定的用户发送文本消息(P2P)
sendUserBinaryMessageOutsideRoom:message:config: 给房间外指定的用户发送二进制消息(P2P)
sendServerMessage: 客户端给应用服务器发送文本消息(P2Server)
sendServerBinaryMessage: 客户端给应用服务器发送二进制消息(P2Server)
sendStreamSyncInfo:config: 发送音频流同步信息。将消息通过音频流发送到远端,并实现与音频流同步,该接口调用成功后,远端用户会收到 rtcEngine:onStreamSyncInfoReceived:streamType:data: 回调。
sendSEIMessage:andMessage:andRepeatCount: 在视频通信时,通过视频帧发送 SEI 数据。

CDN 推流

方法 描述
startLiveTranscoding:transcoding:observer: 新增转推直播任务,并设置合流的图片、视频视图布局和音频属性。

同一个任务中转推多路直播流时,SDK 会先将多路流合成一路流,然后再进行转推。
stopLiveTranscoding: 停止转推直播,会收到 onStreamMixingEvent:taskId:error:mixType: 回调。

关于启动转推直播,参看 startLiveTranscoding:transcoding:observer:。
updateLiveTranscoding:transcoding: 更新转推直播参数,会收到 onStreamMixingEvent:taskId:error:mixType: 回调。

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

混音

方法 描述
enableAudioMixingFrame:type: 启动 PCM 音频数据混音。

要实现多个 PCM 音频数据混音,多次调用本方法,并传入不同的 id。
disableAudioMixingFrame: 关闭 PCM 混音
pushAudioMixingFrame:audioFrame: 推送 PCM 音频帧数据用于混音
getAudioMixingManager 混音管理接口创建
startAudioMixing:filePath:config: 开始播放音频文件。

可以通过传入不同的 mixId 和 filepath 多次调用本方法,以实现同时播放多个混音文件,实现混音叠加。
stopAudioMixing: 停止播放音频文件及混音
pauseAudioMixing: 暂停播放音频文件
resumeAudioMixing: 恢复播放音频文件
setAudioMixingVolume:volume:type: 调节混音的音量大小,包括音频文件混音和 PCM 混音。
enableVocalInstrumentBalance: 开启/关闭音量均衡功能。

开启音量均衡功能后,人声的响度会调整为 -16lufs。如果已调用 setAudioMixingLoudness:loudness: 传入了混音音乐的原始响度,此音乐播放时,响度会调整为 -20lufs。
setAudioMixingLoudness:loudness: 如果你需要使用 enableVocalInstrumentBalance: 对混音音频文件/PCM 音频数据进行音量调整,你必须通过此接口传入其原始响度。
enablePlaybackDucking: 打开/关闭音量闪避功能,适用于“一起看”等场景。

开启该功能后,当检测到远端人声时,本地的媒体播放音量会自动减弱,从而保证远端人声的清晰可辨;当远端人声消失时,本地媒体音量会恢复到闪避前的音量水平。
setAudioMixingPitch:pitch: 开启本地播放音乐文件变调功能,多用于 K 歌场景。

使用该方法,你可以对本地播放音乐文件的音调进行升调或降调等调整。
getAudioMixingCurrentPosition: 获取音频文件播放进度
setAudioMixingPosition:position: 设置音频文件的起始播放位置
getAudioTrackCount: 获取当前音频文件的音轨索引
selectAudioTrack:audioTrackIndex: 指定当前音频文件的播放音轨
setAudioMixingPlaybackSpeed:speed: 设置混音时音频文件的播放速度
setAudioMixingDualMonoMode:mode: 设置当前音频文件的声道模式
setAudioMixingProgressInterval:interval: 设置混音时音频文件播放进度回调的间隔
preloadAudioMixing:filePath: 预加载指定音乐文件到内存中,以避免频繁播放同一文件时的重复加载,减少 CPU 占用。
unloadAudioMixing: 卸载指定音频文件
getAudioMixingDuration: 获取音频文件时长

屏幕分享

方法 描述
updateScreenCapture: 更新内部屏幕采集时采集的媒体类型。
stopScreenCapture 在屏幕共享时,停止使用 RTC SDK 内部采集方式采集屏幕音视频。
publishScreen: 在当前所在房间内发布本地屏幕共享音视频流
unpublishScreen: 停止将本地屏幕共享音视频流发布到当前所在房间中
setScreenAudioSourceType: 在屏幕共享时,设置屏幕音频的采集方式(内部采集/自定义采集)
setScreenAudioStreamIndex: 在屏幕共享时,设置屏幕音频流和麦克风采集到的音频流的混流方式
SetScreenVideoEncoderConfig: 为发布的屏幕共享视频流设置期望的编码参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
pushScreenAudioFrame: 使用自定义采集方式,采集屏幕共享时的屏幕音频时,将音频帧推送至 RTC SDK 处进行编码等处理。
pushScreenCaptureFrame:time:rotation: 推送外部屏幕采集帧
subscribeScreen:mediaStreamType: 订阅房间内指定的远端屏幕共享音视频流,或更新对指定远端用户的订阅选项
unSubscribeScreen:mediaStreamType: 取消订阅房间内指定的远端屏幕共享音视频流。

该方法对自动订阅和手动订阅模式均适用。

安全与加密

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

高级功能

方法 描述
startFileRecording:withRecordingConfig:type: 该方法将通话过程中的音视频数据录制到本地的文件中。
stopFileRecording: 停止本地录制
getSpatialAudio 获取空间音频接口实例。
getRangeAudio 获取范围语音接口实例。
startASR:handler: 开启自动语音识别服务。该方法将识别后的用户语音转化成文字,并通过 onMessage: 事件回调给用户。
stopASR 关闭语音识别服务
enableCloudRending: 按照传入的布局信息开启云端渲染。
updateCloudRending: 按照传入的布局信息更新云端渲染。
disableCloudRending 停止云端渲染。
getScreenCaptureSourceList 获取共享对象(应用窗口和桌面)列表。
getScreenCaptureSourceThumbnail:sourceId:maxWidth:maxHeight: 获取屏幕采集对象缩略图
getWindowAppIcon:width:height: 获取应用窗体所属应用的图标。
startScreenCaptureSourceInfo:captureParameters: 采集屏幕视频流,用于共享。屏幕视频流包括:屏幕上显示的内容,或应用窗口中显示的内容。
stopScreenVideoCapture 停止屏幕视频流采集。
UpdateScreenCaptureFilterConfig: 通过 RTC SDK 提供的采集模块采集屏幕视频流时,设置需要过滤的窗口。
updateScreenCaptureHighlightConfig: 内部屏幕流采集时,更新边框高亮设置。默认展示边框。
UpdateScreenCaptureMouseCursor: 内部屏幕流采集时,更新对鼠标的处理设置。默认采集鼠标。
updateScreenCaptureRegion: 内部屏幕流采集时,更新采集区域。

回调

引擎管理

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

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

SDK 运行时出现了网络或媒体相关的错误,且无法自动恢复时触发此回调。
onTokenWillExpire: Token 过期前 30 秒将触发该回调。

调用 renewToken: 更新 Token。否则 Token 过期后,用户将被移出房间无法继续进行音视频通话。
rtcEngine:onHttpProxyState: HTTP 代理连接状态改变时,收到该回调。
rtcEngine:onHttpsProxyState: HTTPS 代理连接状态改变时,收到该回调。
rtcEngine:onSocks5ProxyState:cmd:proxy_address:local_address:remote_address: SOCKS5 代理状态改变时,收到该回调。

房间管理

回调 描述
rtcRoom:onRoomStateChanged:withUid:state:extraInfo: 房间状态改变回调,加入房间、离开房间、发生房间相关的警告或错误时会收到此回调。
rtcEngine:onCreateRoomStateChanged:errorCode: 创建房间失败回调。
rtcRoom:onLeaveRoomWithStats: 离开房间成功回调。

用户调用 leaveRoom 方法后,SDK 会停止所有的发布订阅流,并释放所有通话相关的音视频资源。SDK 完成所有的资源释放后通过此回调通知用户。
rtcRoom:onUserJoined:elapsed: 远端可见用户加入房间,或房内隐身用户切换为可见的回调。

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

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

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

4. 新进房用户会收到进房前已在房内的主播角色用户的进房回调通知。
rtcRoom:onUserLeave:reason: 远端用户离开房间,或切至不可见时,本地用户会收到此事件
rtcRoom:onRoomStats: 房间内通话统计信息回调。

用户进房开始通话后,每 2s 收到一次本回调。

音频管理

回调 描述
rtcEngine:onAudioDeviceWarning:deviceType:deviceWarning: 音频设备警告回调。音频设备包括音频采集设备和音频渲染设备。
rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 音频设备状态回调。提示音频采集、音频播放等设备的状态。
rtcEngine:onLocalAudioPropertiesReport: 调用 enableAudioPropertiesReport: 后,根据设置的 interval 值,你会周期性地收到此回调,了解本地音频的相关信息。

本地音频包括使用 RTC SDK 内部机制采集的麦克风音频和屏幕音频。
rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume: 远端用户进房后,本地调用 enableAudioPropertiesReport: ,根据设置的 interval 值,本地会周期性地收到此回调,了解订阅的远端用户的音频信息。

远端用户的音频包括使用 RTC SDK 内部机制/自定义机制采集的麦克风音频和屏幕音频。
rtcEngine:onActiveSpeaker:uid: 调用 enableAudioPropertiesReport:  后,根据设置的 config.interval,你会周期性地收到此回调,获取房间内的最活跃用户信息。
rtcEngine:onUserStartAudioCapture:uid: 房间内的可见用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。
rtcEngine:onUserStopAudioCapture:uid: 房间内的可见用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。
rtcEngine:onStreamSyncInfoReceived:streamType:data: 音频流同步信息回调。可以通过此回调,在远端用户调用 sendStreamSyncInfo:config: 发送音频流同步消息后,收到远端发送的音频流同步信息。
rtcRoom:onAudioStreamBanned:isBanned: 通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户音频流的发送时,触发此回调。
rtcEngine:onAudioPlaybackDeviceTestVolume: 回调音频设备测试时的播放音量

视频管理

回调 描述
rtcEngine:onUserStartVideoCapture:uid: 房间内的可见用户调用 startVideoCapture 开启内部视频采集时,房间中其他用户会收到此回调。
rtcEngine:onUserStopVideoCapture:uid: 房间内的可见用户调用 stopVideoCapture 关闭内部视频采集时,房间内其他用户会收到此回调。
rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 视频设备状态回调。提示摄像头视频采集、屏幕视频采集等设备的状态。
rtcEngine:onVideoDeviceWarning:deviceType:deviceWarning: 视频设备警告回调。视频设备包括视频采集设备。
onFaceDetectionResult: 特效 SDK 进行人脸检测结果的回调。

调用 registerFaceDetectionObserver:withInterval: 注册了 ByteRTCFaceDetectionObserver ,并使用 RTC SDK 中包含的特效 SDK 进行视频特效处理时,你会收到此回调。

音视频传输

回调 描述
rtcRoom:onStreamStateChanged:withUid:state:extraInfo: 流状态改变回调,发生流相关的警告或错误时会收到此回调。
rtcRoom:onAVSyncStateChange: 发布端调用 setMultiDeviceAVSync: 后音视频同步状态发生改变时,会收到此回调。
rtcEngine:onAudioFrameSendStateChanged:rtcUser:state: 音频首帧发送状态改变时,收到此回调。
rtcEngine:onVideoFrameSendStateChanged:rtcUser:state: 视频首帧发送状态改变时,收到此回调
rtcEngine:onAudioFramePlayStateChanged:rtcUser:state: 音频首帧播放状态改变时,收到此回调
rtcEngine:onVideoFramePlayStateChanged:rtcUser:state: 视频首帧播放状态改变时,收到此回调
rtcRoom:onUserPublishStream:type: 房间内新增远端摄像头/麦克风采集的媒体流流的回调。
rtcRoom:onUserUnpublishStream:type:reason: 房间内远端摄像头/麦克风采集的媒体流移除的回调。
rtcRoom:onForwardStreamStateChanged: 跨房间媒体流转发状态和错误回调
rtcRoom:onForwardStreamEvent: 跨房间媒体流转发事件回调
rtcEngine:reportSysStats: 报告当前设备 cpu 与 memory 使用率,每 2s 触发一次。
rtcRoom:onLocalStreamStats: 本地流数据统计以及网络质量回调。

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

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

本地用户订阅流成功后,SDK 会周期性(2s)的通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onNetworkQuality:remoteQualities: 网络质量回调
rtcEngine:networkTypeChangedToType: SDK 当前网络连接类型改变回调。
rtcEngine:connectionChangedToState: SDK 与信令服务器连接状态改变回调。连接状态改变时触发。
rtcRoom:onStreamSubscribed:userId:subscribeConfig: 关于订阅媒体流状态改变的回调
rtcEngine:onLocalAudioStateChanged:error: 本地音频流的状态发生改变时,收到此回调。
rtcEngine:onRemoteAudioStateChanged:state:reason: 订阅的远端音频流状态发生改变时,收到此回调。
rtcEngine:onFirstLocalAudioFrame: 本地采集到第一帧音频帧时,收到该回调。
rtcEngine:onFirstRemoteAudioFrame: 当收到远端流的第一帧音频的时候上报该事件
rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError: 本地视频流的状态发生改变时,收到该事件。
rtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason: 远端视频流的状态发生改变时,房间内订阅此流的用户会收到该事件。
rtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo: 第一帧本地采集的视频/屏幕共享画面在本地视图渲染完成时,收到此回调。
rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: SDK 内部渲染成功远端视频流首帧后,收到此回调。
rtcEngine:onRemoteVideoSizeChanged:withFrameInfo: 远端视频大小或旋转信息发生变化时,房间内订阅此视频流的用户会收到此回调。
rtcEngine:onLocalVideoSizeChanged:withFrameInfo: 本地视频大小或旋转信息发生变化时,收到此回调。
rtcEngine:remoteVideoStateChangedOfUid:state: 远端视频流状态发生改变回调。
rtcEngine:onFirstRemoteVideoFrameDecoded:withFrameInfo: SDK 接收并解码远端视频流首帧后,收到此回调。
rtcRoom:onVideoStreamBanned:isBanned: 通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。
rtcEngine:onPushPublicStreamResult:publiscStreamId:errorCode: 公共流发布结果回调。

调用 startPushPublicStream:withLayout:

接口或直接在服务端启动推公共流功能后,你会通过此回调收到启动结果和推流过程中的错误。
rtcEngine:onPlayPublicStreamResult:errorCode: 订阅公共流的结果回调

调用 startPlayPublicStream: 接口拉公共流后,你会通过此回调收到启动结果和拉流过程中的错误。
rtcEngine:onPublicStreamSEIMessageReceived:andMessage: 回调公共流中包含的 SEI 信息

通过 startPlayPublicStream: 开始播放公共流后,可以通过本回调获取公共流中包含的 SEI 信息。
rtcEngine:onFirstPublicStreamVideoFrameDecoded:withFrameInfo: 公共流的首帧视频解码成功

关于订阅公共流,详见 startPlayPublicStream:。
rtcEngine:onFirstPublicStreamAudioFrame: 公共流的音频首帧解码成功

关于订阅公共流,详见 startPlayPublicStream:。

自定义流处理

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

收到该回调后,你即可调用 pushExternalEncodedVideoFrame:withVideoIndex:withEncodedVideoFrame: 向 SDK 推送自定义编码视频帧
onStop: 当收到该回调时,你需停止向 SDK 推送自定义编码视频帧
onRateUpdate:withVideoIndex:withFps:withBitRate: 当自定义编码流的帧率或码率发生变化时,触发该回调
onRequestKeyFrame:withVideoIndex: 提示流发布端需重新生成关键帧的回调
onLocalEncodedVideoFrame:Frame: 调用 registerLocalEncodedVideoFrameObserver: 后,SDK 每次使用内部采集,采集到一帧视频帧,或收到一帧外部视频帧时,都会回调该事件。
onRemoteEncodedVideoFrame:withEncodedVideoFrame: 调用 registerRemoteEncodedVideoFrameObserver: 后,SDK 监测到远端编码后视频数据时,触发该回调
onLocalVideoFrame: 本地视频流的视频帧数据回调
onLocalScreenFrame: 本地屏幕流的视频帧数据回调
onRemoteVideoFrame:user:room: 远端视频流的视频帧数据回调
onRemoteScreenFrame:user:room: 远端屏幕流的视频帧数据回调
onRecordAudioFrame: 返回麦克风录制的音频数据
onPlaybackAudioFrame: 返回订阅的所有远端用户混音后的音频数据
onRemoteUserAudioFrame:audioFrame: 返回远端单个用户的音频数据
onMixedAudioFrame: 返回本地麦克风录制和订阅的所有远端用户混音后的音频数据
processVideoFrame: 获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor:withConfig: 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。

网络管理

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

本地开启发布性能回退,因设备性能/网络原因,造成发布性能回退/恢复时,收到此回调。
rtcEngine:OnSimulcastSubscribeFallback: 音视频流因网络环境变化等原因发生回退,或从回退中恢复时,触发该回调。
rtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter: 通话前网络探测结果。

成功调用 startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth: 接口开始探测后,会在 3s 内首次收到该回调,之后每 2s 收到一次该回调。
rtcEngine:onNetworkDetectionStopped: 通话前网络探测结束

以下情况将停止探测并收到本一次本回调:

1. 当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;
2. 当收到远端/本端音频首帧后,停止探测;
3. 当探测超过3分钟后,停止探测;
4. 当探测链路断开一定时间之后,停止探测。
rtcEngine:onSEIMessageReceived:andMessage: 收到通过调用 sendSEIMessage:andMessage:andRepeatCount: 带有 SEI 消息的视频帧时,收到此回调
rtcEngine:onEchoTestResult: 关于音视频回路测试结果的回调。

消息

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

CDN 推流

回调 描述
onStreamMixingEvent:taskId:error:mixType: 转推直播状态回调
isSupportClientPushStream 是否具有推流能力。

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

+ true:具备推流能力
onMixingAudioFrame:taskId: 端云一体合流音频 PCM 回调
onMixingVideoFrame:taskId: 端云一体合流视频 YUV 回调
onMixingDataFrame:taskId: 端云一体合流视频 SEI 数据

混音

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

屏幕分享

回调 描述
rtcRoom:onUserPublishScreen:type: 房间内新增远端屏幕共享音视频流的回调。
rtcRoom:onUserUnpublishScreen:type:reason: 房间内远端屏幕共享音视频流移除的回调。
rtcEngine:onScreenVideoFrameSendStateChanged:rtcUser:state: 屏幕共享流视频首帧发送状态改变时,收到此回调
rtcEngine:onScreenVideoFramePlayStateChanged:rtcUser:state: 屏幕共享流视频首帧播放状态改变时,收到此回调

安全与加密

回调 描述
rtcEngine:onCloudProxyConnected: 调用 startCloudProxy: 开启云代理,SDK 首次成功连接云代理服务器时,回调此事件。
ByteRTCEncryptRawData: 自定义加密。

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

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

高级功能

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

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

该回调由 startFileRecording:withRecordingConfig:type: 触发,录制状态正常时,系统每秒钟都会通过该回调提示录制进度。
onRangeAudioInfo: 关于当前范围语音衰减系数的回调。

手动订阅的场景下,房间内任一用户调用 updatePosition: 更新自身位置或调用 updateReceiveRange: 更新语音接收范围时,该用户与房间内其他用户的相对距离都会发生改变,据此计算的衰减系数也会发生改变,并通过该回调通知用户。

调用 setAttenuationModel:coefficient: 更新音量衰减模式时,衰减系数将发生变化,通过该回调通知用户。

你可以通过关注该回调中包含的远端用户的衰减系数决定是否订阅该远端用户的流。