You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
iOS 3.60.107
概览
复制全文
下载 pdf
概览

引擎管理

方法描述
createRTCEngine:delegate:创建引擎对象。
如果当前进程中未创建引擎实例,那么你必须先使用此方法,以使用 RTC 提供的各种音视频能力。
如果当前进程中已创建了引擎实例,再次调用此方法时,会返回已创建的引擎实例。
setRuntimeParameters:设置运行时的参数
getNativeHandle获取 C++ 层 IRTCEngine 句柄。
feedback:info:通话结束,将用户反馈的问题上报到 RTC。
setBusinessId:设置业务标识参数
可通过 businessId 区分不同的业务场景。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。
setLogConfig:配置 SDK 本地日志参数,包括日志级别、存储路径、日志文件最大占用的总空间、日志文件名前缀。
getSDKVersion获取 SDK 当前的版本号。
destroyRTCEngine销毁由 createRTCEngine:delegate: 所创建的引擎实例,并释放所有相关资源。
回调描述
rtcEngine:onWarning:发生警告回调。
SDK 运行时出现了警告。SDK 通常会自动恢复,警告信息可以忽略。
onSubscribePrivilegeTokenWillExpire:Token 订阅权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 订阅权限有效期。
onTokenWillExpire:当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 进房权限。
onSubscribePrivilegeTokenWillExpire:Token 订阅权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 订阅权限有效期。
onPublishPrivilegeTokenWillExpire:Token 发布权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 发布权限。
onTokenWillExpire:当 SDK 检测到 Token 的进房权限将在 30 秒内过期时,触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 进房权限。
rtcEngine:log:SDK 内部日志回调。
SDK 内部运行时,会把日志回调给业务方,方便排查问题。
onPublishPrivilegeTokenWillExpire:Token 发布权限过期前 30 秒将触发该回调。
收到该回调后,你需调用 updateToken: 更新 Token 发布权限。
rtcEngine:onSysStats:报告当前设备 cpu 与 memory 使用率,每 2s 触发一次。
rtcEngine:onError:发生错误回调。
SDK 运行时出现了网络或媒体相关的错误,且无法自动恢复时触发此回调。
你可能需要干预。

房间管理

RTC 房间

方法描述
createRTCRoom:创建 RTC 房间实例。调用此方法后,你仍需调用 joinRoom 方法才能真正加入房间。
joinRoom:userInfo:userVisibility:roomConfig:加入 RTC 房间,与房间内其他用户进行音视频通话。
updateToken:更新 RTC 房间的 Token,用于维持连接。
leaveRoom离开 RTC 房间,结束通话并释放所有相关资源。
destroy销毁通过 createRTCRoom: 创建的房间实例。
setUserVisibility:设置本端用户在房间内的可见性。默认为可见。
setRoomExtraInfo:value:设置或更新房间的附加信息,可用于实现业务逻辑。
getCallId获取当前通话的 ID。
setLiveMode:设置直播房间的场景类型。
setRTCRoomDelegate:设置房间事件的回调代理,用于监听房间相关的事件。
回调描述
rtcRoom:onRoomStateChanged:withUid:state:extraInfo:房间状态改变时触发,例如成功加入房间、异常退出、发生错误等。
rtcRoom:onLeaveRoom:调用 leaveRoom 成功离开房间后触发。
rtcRoom:onUserJoined:远端用户加入房间或从不可见切换为可见时触发。
rtcRoom:onUserLeave:reason:远端用户离开房间或从可见切换为不可见时触发。
rtcRoom:onStreamAdd:房间内有用户发布新的音视频流时触发。
rtcRoom:onRoomStats:通话中房间的统计信息回调,每 2 秒触发一次。
rtcRoom:onUserVisibilityChanged:errorCode:调用 setUserVisibility 设置用户可见性后的结果回调。
rtcRoom:onSetRoomExtraInfoResult:result:调用 setRoomExtraInfo 设置房间附加信息后的结果回调。
rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:房间附加信息发生更新时触发。

RTS 房间

方法描述
createRTSRoom:创建 RTS 房间实例。调用此方法后,你仍需调用 joinRTSRoom 方法才能真正加入房间。
joinRTSRoom:userInfo:加入 RTS 房间,进行实时消息通信。
leaveRoom离开 RTS 房间,结束实时消息通信并释放资源。
destroy销毁通过 createRTSRoom 创建的房间实例。
sendRoomMessage:向房间内所有其他用户发送文本消息。
updateToken:更新 RTS 房间的 Token,用于维持连接。
setLiveMode:设置直播房间的场景类型。
setRTCRoomDelegateRts:设置 RTS 房间事件的回调代理,用于监听房间相关的事件。
回调描述
rtsRoom:onRoomStateChanged:withUid:state:extraInfo:RTS 房间状态改变时触发,例如成功加入房间、异常退出、发生错误等。
rtsRoom:onLeaveRoom:调用 leaveRoom 成功离开 RTS 房间后触发。
rtsRoom:onUserJoined:远端用户加入 RTS 房间时触发。
rtsRoom:onUserLeave:reason:远端用户离开 RTS 房间时触发。

游戏房间

方法描述
createGameRoom:roomConfig:创建游戏房间实例。调用此方法后,你仍需调用 joinRoom 方法才能真正加入房间。
joinRoom:userInfo:加入游戏房间,与房间内其他用户进行音频通话。
leaveRoom离开游戏房间,结束通话并释放所有相关资源。
destroy销毁通过 createGameRoom 创建的房间实例。
updateToken:更新游戏房间的 Token,用于维持通话连接。
setRTCGameRoomDelegate:设置游戏房间事件的回调代理,用于监听房间相关的事件。
回调描述
rtcRoom:onRoomStateChanged:withUid:state:extraInfo:游戏房间状态改变时触发,例如成功加入房间、异常退出、发生错误等。
rtcRoom:onLeaveRoom:调用 leaveRoom 成功离开游戏房间后触发。
rtcRoom:onUserJoined:远端用户加入游戏房间时触发。
rtcRoom:onUserLeave:reason:远端用户离开游戏房间时触发。
rtcRoom:onStreamAdd:房间内有用户发布新的音视频流时触发。
rtcRoom:onRoomStats:通话中房间的统计信息回调,每 2 秒触发一次。
rtcRoom:onUserVisibilityChanged:errorCode:设置用户可见性结果的回调。
rtcRoom:onSetRoomExtraInfoResult:result:发送附加信息结果回调。
rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:房间附加信息发生更新时触发。

音频管理

方法描述
setAudioSelectionConfig:设置本端发布流在音频选路中的优先级。
setRemoteRoomAudioPlaybackVolume:调节某个房间内所有远端用户的音频播放音量。
stopHardwareEchoDetection停止通话前回声检测
startHardwareEchoDetection:开启通话前回声检测
setDefaultAudioRoute:将默认的音频播放设备设置为听筒或扬声器。
enableExternalSoundCard:启用匹配外置声卡的音频处理模式
getAudioRoute获取当前使用的音频播放路由。
setAudioRoute:强制切换当前的音频播放路由。默认使用 setDefaultAudioRoute: 中设置的音频路由。
音频播放路由发生变化时,会收到 rtcEngine:onAudioRouteChanged: 回调。
enablePlaybackDucking:打开/关闭音量闪避功能,适用于在 RTC 通话过程中会同时播放短视频或音乐的场景,如“一起看”等。
开启该功能后,当检测到远端人声时,RTC 本地的媒体播放音量会自动减弱,从而保证远端人声的清晰可辨;当远端人声消失时,RTC 的本地媒体音量会恢复到闪避前的音量水平。
enableVocalInstrumentBalance:开启/关闭音量均衡功能。
开启音量均衡功能后,人声的响度会调整为 -16lufs。如果已调用 setAudioMixingLoudness:loudness: 传入了混音音乐的原始响度,此音乐播放时,响度会调整为 -20lufs。
setBluetoothMode:在纯媒体音频场景下,切换 iOS 设备与耳机之间的蓝牙传输协议。
setRemoteAudioPlaybackVolume:volume:调节本端播放收到的远端流时的音量。你必须在进房后进行设置。流的发布状态改变不影响设置生效。
enableAudioPropertiesReport:启用音频信息提示。启用后,你可以收到 rtcEngine:onLocalAudioPropertiesReport:,rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:,和 rtcEngine:onActiveSpeaker:uid:。
setPlaybackVolume:调节本地播放的所有远端用户音频混音后的音量,混音内容包括远端人声、音乐、音效等。
播放音频前或播放音频时,你都可以使用此接口设定播放音量。
setScreenCaptureVolume:调节屏幕共享时采集的音频音量。
只改变音频数据的音量信息,不影响麦克风采集的音量,也不会改变本端音频设备本身的音量。
setCaptureVolume:调节音频采集音量
muteScreenAudioCapture:静音/取消静音屏幕共享时采集的音频。
调用此方法后,SDK 将发送静音数据来代替真实的屏幕音频数据,不影响本端音频设备的采集状态和 SDK 音频流的采集发布状态。
muteAudioCapture:设置是否将采集到的音频信号静音,而不改变本端硬件采集状态。
setAudioProfile:设置音质档位。
当所选的 ByteRTCRoomProfile 中的音频参数无法满足你的场景需求时,调用本接口切换的音质档位。
setAudioScenario:设置音频场景类型。
选择音频场景后,SDK 会自动根据场景切换对应的音量模式(通话音量/媒体音量)和该场景下的最佳音频配置。
stopAudioCapture关闭内部音频采集。默认为关闭状态。
内部采集是指:使用 RTC SDK 内置的音频采集机制进行音频采集。
调用该方法,本地用户会收到 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopAudioCapture:info: 的回调。
startAudioCapture开启内部音频采集。默认为关闭状态。
内部采集是指:使用 RTC SDK 内置的音频采集机制进行音频采集。
调用该方法开启后,本地用户会收到 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartAudioCapture:info: 的回调。
updateRemotePosition:positionInfo:设置房间内某一远端用户在本地用户自建的空间音频坐标系中的发声位置和发声朝向,以实现本地用户预期的空间音频收听效果。
setRemoteRoomAudioPlaybackVolume:调节某个游戏房间内所有远端用户的音频播放音量。
enableAudioReceive:enable:是否订阅指定用户的音频流。
enableAudioSend:开始或停止发送音频流。调用此接口不影响音频采集。同游戏房间其他用户会收到相应的回调。
enableSpeakerphone:加入游戏房间后,开启或关闭扬声器。
enableMicrophone:加入游戏房间后,调用该接口开启或关闭麦克风。同游戏房间其他用户会收到回调 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:。
回调描述
rtcEngine:onUserStartAudioCapture:info:房间内的可见用户调用 startAudioCapture 开启音频采集时,房间内其他用户会收到此回调。
rtcRoom:onAudioStreamBanned:isBanned:通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户音频流的发送时,触发此回调。
rtcRoom:onAudioStreamBanned:isBanned:通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户音频流的发送时,触发此回调。
rtcEngine:onHardwareEchoDetectionResult:通话前回声检测结果回调。
rtcEngine:onLocalAudioStateChanged:state:error:本地音频流的状态发生改变时,收到此回调。
rtcEngine:onStreamSyncInfoReceived:info:streamType:data:音频流同步信息回调。可以通过此回调,在远端用户调用 sendStreamSyncInfo:config: 发送音频流同步消息后,收到远端发送的音频流同步信息。
rtcEngine:onAudioRouteChanged:音频播放路由变化时,收到该回调。
rtcEngine:onAudioDeviceWarning:deviceType:deviceWarning:音频设备警告回调。音频设备包括音频采集设备和音频渲染设备。
rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:音频设备状态回调。提示音频采集、音频播放等设备的状态。
rtcEngine:onActiveSpeaker:uid:调用 enableAudioPropertiesReport:  后,根据设置的 config.interval,你会周期性地收到此回调,获取房间内的最活跃用户信息。
rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:远端用户进房后,本地调用 enableAudioPropertiesReport: ,根据设置的 interval 值,本地会周期性地收到此回调,了解订阅的远端用户的瞬时音频信息。
远端用户的音频包括使用 RTC SDK 内部机制/自定义机制采集的麦克风音频和屏幕音频。
rtcEngine:onLocalAudioPropertiesReport:调用 enableAudioPropertiesReport: 后,根据设置的 interval 值,你会周期性地收到此回调,了解本地音频的瞬时相关信息。
本地音频包括使用 RTC SDK 内部机制采集的麦克风音频,屏幕音频和本地混音音频信息。
rtcEngine:onUserStopAudioCapture:info:房间内的可见用户调用 stopAudioCapture 关闭音频采集时,房间内其他用户会收到此回调。

视频管理

方法描述
setVideoCaptureRotation:设置本端采集的视频帧的旋转角度。
当摄像头倒置或者倾斜安装时,可调用本接口进行调整。对于手机等普通设备,可调用 setVideoRotationMode: 实现旋转。
setRemoteVideoConfig:remoteVideoConfig:设置期望订阅的远端视频流的参数。
setRemoteSimulcastStreamType:streamType:设置期望订阅的远端视频流类型。
updateRemoteStreamVideoCanvas:withRenderMode:withBackgroundColor:修改远端视频帧的渲染设置,包括渲染模式和背景颜色。
setCameraAdaptiveMinimumFrameRate:设置内部采集适用动态帧率时,帧率的最小值。
enableCameraAutoExposureFaceMode:启用或禁用内部采集时人脸自动曝光模式。此模式会改善强逆光下,脸部过暗的问题;但也会导致 ROI 以外区域过亮/过暗的问题。
setCameraExposureCompensation:设置当前使用的摄像头的曝光补偿。
setCameraExposurePosition:设置当前使用的摄像头的曝光点。
isCameraExposurePositionSupported检查当前使用的摄像头是否支持手动设置曝光点。
setCameraFocusPosition:设置当前使用的摄像头的对焦点。
isCameraFocusPositionSupported检查当前使用的摄像头是否支持手动对焦。
setCameraTorch:打开/关闭当前使用的摄像头(前置/后置)的闪光灯
isCameraTorchSupported检测当前使用的摄像头(前置/后置),是否支持闪光灯。
isCameraZoomSupported检测当前使用的摄像头(前置/后置),是否支持变焦(数码/光学变焦)。
getCameraZoomMaxRatio获取当前使用的摄像头(前置/后置)的最大变焦倍数
setCameraZoomRatio:设置当前使用的摄像头(前置/后置)的变焦倍数
switchCamera:切换视频内部采集时使用的前置/后置摄像头
调用此接口后,在本地会触发 rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 回调。
setVideoRotationMode:设置采集视频的旋转模式。默认以 App 方向为旋转参考系。
接收端渲染视频时,将按照和发送端相同的方式进行旋转。
stopVideoCapture立即关闭内部视频采集。默认为关闭状态。
内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。
调用该方法后,本地用户会收到 rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopVideoCapture:info: 的回调。
startVideoCapture立即开启内部视频采集。默认为关闭状态。
内部视频采集指:使用 RTC SDK 内置视频采集模块,进行采集。
调用该方法后,本地用户会收到 rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 的回调。
非隐身用户进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartVideoCapture:info: 的回调。
updateRemoteStreamVideoCanvas:withRemoteVideoRenderConfig:使用 SDK 内部渲染时,修改远端视频帧的渲染设置,包括渲染模式、背景颜色和旋转角度。
setRemoteVideoCanvas:withCanvas:渲染来自指定远端用户 uid 的视频流时,设置使用的视图和渲染模式。
如果需要解除视频的绑定视图,把 canvas.view 设置为空。(canvas 中其他参数不能为空。)
updateLocalVideoCanvas:withBackgroundColor:修改本地视频渲染模式和背景色。
setLocalVideoCanvas:设置本地视频渲染时使用的视图,并设置渲染模式。
setVideoCaptureConfig:设置 RTC SDK 内部采集时的视频采集参数。
如果你的项目使用了 SDK 内部采集模块,可以通过本接口指定视频采集参数包括模式、分辨率、帧率。
disableAlphaChannelVideoEncode关闭外部采集视频帧的 Alpha 通道编码功能。
enableAlphaChannelVideoEncode:开启自定义采集视频帧的 Alpha 通道编码功能。
适用于需要分离推流端视频主体与背景,且在拉流端可自定义渲染背景的场景。
setVideoEncoderConfig:发布端设置期望发布的最大分辨率视频流参数,包括分辨率、帧率、码率、网络不佳时的回退策略等(包含摄像头和屏幕的编码配置)。
回调描述
rtcEngine:onUserStartVideoCapture:info:房间内的可见用户调用 startVideoCapture 开启内部视频采集时,房间中其他用户会收到此回调。
onNotifyAppRunning检测到 App 正在进行音视频通话时触发此回调。
onSocketConnectSocket 连接成功时触发此回调
onSocketDisconnectSocket 连接断开时触发此回调
onReceiveMessageFromApp:Socket 收到 App 侧发来的信息时,触发该回调
onQuitFromApp通知 Broadcast Upload Extension 停止采集屏幕并退出。
onFaceDetectResult:特效 SDK 进行人脸检测结果的回调。
调用 enableFaceDetection:withInterval:withModelPath: 注册了 ByteRTCFaceDetectionObserver ,并使用 RTC SDK 中包含的特效 SDK 进行视频特效处理时,你会收到此回调。
rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:本地视频流的状态发生改变时,收到该事件。
rtcEngine:onVideoDeviceWarning:deviceType:deviceWarning:视频设备警告回调。视频设备包括视频采集设备。
rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error:视频设备状态发生改变回调。当设备的视频状态发生改变时,SDK 会触发该回调,提示摄像头视频采集、屏幕视频采集等设备的状态。
rtcEngine:onUserStopVideoCapture:info:房间内的可见用户调用 stopVideoCapture 关闭内部视频采集时,房间内其他用户会收到此回调。
若发布视频数据前未开启采集,房间内所有可见用户会收到此回调。

音视频传输

方法描述
publishStreamAudio:发布/取消发布音频流。
requestRemoteVideoKeyFrame:在订阅远端视频流之后,向远端请求关键帧
setStreamExtraInfo:设置当前推流的流附加信息。
resumeForwardStreamToAllRooms恢复跨房间媒体流转发。
调用 pauseForwardStreamToAllRooms 暂停转发之后,调用本方法恢复向所有目标房间转发媒体流。
stopForwardStreamToRooms停止跨房间媒体流转发。
通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法停止向所有目标房间转发媒体流。
updateForwardStreamToRooms:更新跨房间媒体流转发信息。
通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法增加或者减少目标房间,或更新房间密钥。
调用本方法增加或删减房间后,将在本端触发 rtcRoom:onForwardStreamStateChanged: 回调,包含发生了变动的目标房间中媒体流转发状态。
startForwardStreamToRooms:开始跨房间转发媒体流。
在调用 joinRoom:userInfo:userVisibility:roomConfig: 后调用本接口,实现向多个房间转发媒体流,适用于跨房间连麦等场景。
resumeAllSubscribedStreamAudio恢复接收所有远端音频流。
resumeAllSubscribedStreamVideo恢复接收所有远端视频流。
pauseAllSubscribedStreamAudio暂停接收所有远端音频流。
pauseAllSubscribedStreamVideo暂停接收所有远端视频流。
subscribeAllStreamsAudio:订阅或取消订阅所有远端音频流(通过麦克风采集的)。
subscribeAllStreamsVideo:订阅/取消订阅房间内所有远端视频流(通过摄像头采集的)。
publishStreamVideo:发布/取消发布视频流。
setMultiDeviceAVSync:设置发流端音画同步。
当同一用户同时使用两个通话设备分别采集发送音频和视频时,有可能会因两个设备所处的网络环境不一致而导致发布的流不同步,此时你可以在视频发送端调用该接口,SDK 会根据音频流的时间戳自动校准视频流,以保证接收端听到音频和看到视频在时间上的同步性。
subscribeStreamAudio:subscribe:订阅/取消订阅房间内指定的远端音频流。
pauseForwardStreamToAllRooms暂停跨房间媒体流转发。
通过 startForwardStreamToRooms: 发起媒体流转发后,可调用本方法暂停向所有目标房间转发媒体流。
调用本方法暂停向所有目标房间转发后,你可以随时调用 resumeForwardStreamToAllRooms 快速恢复转发。
subscribeStreamVideo:subscribe:订阅/取消订阅房间内指定的远端视频流。
setDummyCaptureImagePath:摄像头处于关闭状态时,使用静态图片填充本地推送的视频流。
调用 stopVideoCapture 接口时,会开始推静态图片。若要停止发送图片,可传入空字符串或启用内部摄像头采集。
可重复调用该接口来更新图片。
回调描述
rtcRoom:onVideoPublishStateChanged:info:state:reason:本地视频流发布状态改变回调。
rtcRoom:onScreenAudioSubscribeStateChanged:userId:state:reason:屏幕流音频订阅状态发生改变回调。
rtcRoom:onNetworkQuality:remoteQualities:加入房间并发布或订阅流后, 以每 2 秒一次的频率,报告本地用户和已订阅的远端用户的上下行网络质量信息。
rtcRoom:onForwardStreamEvent:跨房间媒体流转发事件回调
rtcRoom:onForwardStreamStateChanged:跨房间媒体流转发状态和错误回调
rtcRoom:onVideoStreamBanned:isBanned:通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。
rtcRoom:onAVSyncEvent:userId:eventCode:发布端调用 setMultiDeviceAVSync: 后音视频同步状态发生错误时,会收到此回调。
rtcRoom:onUserPublishScreenAudio:uid:isPublish:房间内远端屏幕共享的音频流的回调。
rtcRoom:onUserPublishScreenVideo:uid:isPublish:房间内远端屏幕共享的视频流的回调。
rtcRoom:onUserPublishStreamAudio:info:isPublish:房间内远端音频流发布回调。
rtcRoom:onUserPublishStreamVideo:info:isPublish:房间内远端用户发布或取消发布视频流的回调。
rtcRoom:onRemoteStreamStats:info:stats:本地订阅的远端音/视频流数据统计以及网络质量回调。
本地用户订阅流成功后,SDK 会周期性(2s)地通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onLocalStreamStats:info:stats:本地流数据统计以及网络质量回调。
本地用户发布流成功后,SDK 会周期性(2s)地通过此回调事件通知用户发布的流在此次统计周期内的质量统计信息。
统计信息通过 ByteRTCLocalStreamStats 类型的回调参数传递给用户,其中包括发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onScreenVideoSubscribeStateChanged:userId:state:reason:屏幕流视频订阅状态发生改变回调。
rtcRoom:onAudioSubscribeStateChanged:info:state:reason:音频订阅状态发生改变回调。
rtcRoom:onVideoSubscribeStateChanged:info:state:reason:视频订阅状态发生改变回调。
rtcRoom:onScreenAudioPublishStateChanged:userId:state:reason:屏幕流音频发布状态改变回调。
rtcRoom:onScreenVideoPublishStateChanged:userId:state:reason:屏幕流视频发布状态改变回调。
rtcRoom:onAudioPublishStateChanged:info:state:reason:音频发布状态改变回调。
rtcRoom:onVideoPublishStateChanged:info:state:reason:视频发布状态改变回调。
rtcRoom:onAudioSubscribeStateChanged:info:state:reason:音频流订阅状态发生改变回调。
rtcRoom:onAVSyncStateChange:发布端调用 setMultiDeviceAVSync: 后音视频同步状态发生改变时,会收到此回调。
rtcRoom:onStreamStateChanged:withUid:state:extraInfo:音频流状态改变回调,发生流相关的警告或错误时会收到此回调。
rtcRoom:onStreamStateChanged:withUid:state:extraInfo:流状态改变回调,发生流相关的警告或错误时会收到此回调。
rtcRoom:onNetworkQuality:remoteQualities:加入房间并发布或订阅流后, 以每 2 秒一次的频率,报告本地用户和已订阅的远端用户的上下行网络质量信息。
rtcRoom:onForwardStreamEvent:跨房间媒体流转发事件回调
rtcRoom:onForwardStreamStateChanged:跨房间媒体流转发状态和错误回调
rtcRoom:onVideoStreamBanned:isBanned:通过调用服务端 BanUserStream/UnbanUserStream 方法禁用/解禁指定房间内指定用户视频流的发送时,触发此回调。
rtcRoom:onRoomStreamExtraInfoUpdate:info:extraInfo:接收同一房间内,其他用户调用 setStreamExtraInfo: 设置的流附加信息的回调。
rtcRoom:onAVSyncEvent:userId:eventCode:发布端调用 setMultiDeviceAVSync: 后音视频同步状态发生错误时,会收到此回调。
rtcRoom:onUserPublishStreamAudio:info:isPublish:房间内远端用户发布或取消发布音频流的回调。
rtcRoom:onUserPublishStreamVideo:info:isPublish:房间内远端用户发布或取消发布视频流的回调。
rtcRoom:onRemoteStreamStats:info:stats:本地订阅的远端音/视频流数据统计以及网络质量回调。
本地用户订阅流成功后,SDK 会周期性(2s)地通过此回调事件通知用户订阅的流在此次统计周期内的质量统计信息,包括:发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onLocalStreamStats:info:stats:本地流数据统计以及网络质量回调。
本地用户发布流成功后,SDK 会周期性(2s)地通过此回调事件通知用户发布的流在此次统计周期内的质量统计信息。
统计信息通过 ByteRTCLocalStreamStats 类型的回调参数传递给用户,其中包括发送音视频比特率、发送帧率、编码帧率,网络质量等。
rtcRoom:onVideoSubscribeStateChanged:info:state:reason:视频流订阅状态发生改变回调。
rtcRoom:onAudioPublishStateChanged:info:state:reason:本地音频流发布状态改变回调。
rtcEngine:onFirstRemoteAudioFrame:info:订阅端接收并解码远端音频流首帧时,收到此回调。包含以下情况:
  1. 发布端发布音频,包含首次发布和取消后再次发布。
  2. 发布端关闭音频采集后,再次打开采集。使用外部源时,停止推流后再次推流。
  3. 发布端发布音频后,订阅端取消订阅音频后,又再次订阅音频。
rtcRoom:onAVSyncStateChange:发布端调用 setMultiDeviceAVSync: 后音视频同步状态发生改变时,会收到此回调。
rtcEngine:onRemoteVideoStateChanged:info:withVideoState:withVideoStateReason:远端视频流的状态发生改变时,房间内订阅此流的用户会收到该事件。
rtcEngine:onRemoteAudioStateChanged:info:state:reason:订阅的远端音频流状态发生改变时,收到此回调。
rtcEngine:onFirstLocalAudioFrame:发布音频流时,采集到第一帧音频帧,收到该回调。
rtcEngine:onVideoFramePlayStateChanged:info:rtcUser:state:远端视频流的首帧播放状态发生改变时,收到此回调。
rtcEngine:onAudioFramePlayStateChanged:info:rtcUser:state:音频首帧播放状态发生改变时,收到此回调。
rtcEngine:onVideoFrameSendStateChanged:info:rtcUser:state:视频首帧发送状态发生改变时,收到此回调。
rtcEngine:onAudioFrameSendStateChanged:info:rtcUser:state:本地音频首帧发送状态发生改变时,收到此回调。
rtcEngine:onLocalVideoSizeChanged:withFrameInfo:本地视频大小或旋转信息发生改变时,收到此回调。
rtcEngine:onRemoteVideoSizeChanged:info:withFrameInfo:远端视频大小或旋转信息发生改变时,房间内订阅此视频流的用户会收到此回调。
rtcEngine:onFirstRemoteVideoFrameDecoded:info:withFrameInfo:订阅端接收并解码远端视频流首帧后,收到此回调。包含以下情况:
  1. 发布端发布视频,包含首次发布和取消后再次发布。
  2. 发布端关闭视频采集后,再次打开采集。使用外部源时,停止推流后再次推流。
  3. 发布端发布视频后,订阅端取消订阅视频后,又再次订阅视频。
rtcEngine:onFirstRemoteVideoFrameRendered:info:withFrameInfo:SDK 内部渲染成功远端视频流首帧后,收到此回调。包含以下情况:
  1. 发布端首次发布视频
  2. 在 1 条件下,发布端取消发布视频后,再次发布视频
  3. 在 1 条件下,发布端关闭视频采集后,再次打开采集(或使用外部源时,停止推流后再次推流)
  4. 在 1 条件下,订阅端取消订阅视频后,再次订阅视频(调用接口包括 subscribeAllStreamsVideo:pauseAllSubscribedStreamVideo:/resumeAllSubscribedStreamVideo:)
rtcEngine:onFirstLocalVideoFrameCaptured:withFrameInfo:第一帧本地采集的视频/屏幕共享画面在本地视图渲染完成时,收到此回调。

音频处理

方法描述
enableSpatialAudio:开启/关闭空间音频功能。
setLocalVoicePitch:开启本地语音变调功能,多用于 K 歌场景。
使用该方法,你可以对本地语音的音调进行升调或降调等调整。
enableLocalVoiceReverb:开启本地音效混响效果
setLocalVoiceReverbParam:设置本地采集音频的混响效果。包含内部采集和外部采集,但不包含混音音频文件。
setLocalVoiceEqualization:设置本地采集语音的均衡效果。包含内部采集和外部采集,但不包含混音音频文件。
setVoiceReverbType:设置混响特效类型
setVoiceChangerType:设置变声特效类型

视频处理

方法描述
disableFaceDetection关闭人脸识别功能。
enableFaceDetection:withInterval:withModelPath:开启人脸识别功能,并设置人脸检测结果回调观察者。
回调此观察者后,你会周期性收到 onFaceDetectResult: 回调。
disableVirtualBackground关闭虚拟背景。
enableVirtualBackground:withSource:将摄像头采集画面中的人像背景替换为指定图片或纯色背景。
setColorFilterIntensity:设置已启用颜色滤镜的强度。
setColorFilter:设置颜色滤镜。
updateEffectNode:key:value:设置特效强度。
setEffectNodes:设置视频特效素材包。
disableVideoEffect关闭视频特效。
enableVideoEffect开启高级美颜、滤镜等视频特效。
initCVResource:withAlgoModelDir:检查视频特效证书,设置算法模型路径,并初始化特效模块。
getAuthMessage:从特效 SDK 获取授权消息,用于获取在线许可证。
clearVideoWatermark移除指定视频流的水印。
setVideoWatermark:withRtcWatermarkConfig:在指定视频流上添加水印。
stopVideoDigitalZoomControl停止本地摄像头持续数码变焦。
startVideoDigitalZoomControl:开启本地摄像头持续数码变焦,缩放或移动。设置对本地预览画面和发布到远端的视频都生效。
setVideoDigitalZoomControl:控制本地摄像头数码变焦,缩放或移动一次。设置对本地预览画面和发布到远端的视频都生效。
setVideoDigitalZoomConfig:size:设置本地摄像头数码变焦参数,包括缩放倍数,移动步长。
setBeautyIntensity:withIntensity:调整基础美颜强度。
enableEffectBeauty:开启/关闭基础美颜。
getVideoEffectInterface获取视频特效接口。
setVideoOrientation:在自定义视频前处理及编码前,设置 RTC 链路中的视频帧朝向,默认为 Adaptive 模式。
移动端开启视频特效贴纸,或使用自定义视频前处理时,建议固定视频帧朝向为 Portrait 模式。单流转推场景下,建议根据业务需要固定视频帧朝向为 Portrait 或 Landscape 模式。不同模式的具体显示效果参看视频帧朝向。
setRemoteVideoMirrorType:withMirrorType:使用内部渲染时,为远端流开启镜像。
setLocalVideoMirrorType:为采集到的视频流开启镜像

自定义流处理

方法描述
setAudioSourceType:切换音频采集方式
registerRemoteEncodedVideoFrameObserver:注册远端编码后视频数据回调。
完成注册后,当 SDK 监测到远端编码后视频帧时,会触发 onRemoteEncodedVideoFrame:info:withEncodedVideoFrame: 回调
setVideoDecoderConfig:withVideoDecoderConfig:在订阅远端视频流之前,设置远端视频数据解码方式
pushExternalEncodedVideoFrame:withEncodedVideoFrame:推送自定义编码后的视频流
setExternalVideoEncoderEventHandler:注册自定义编码帧推送事件回调
setVideoSourceType:设置向 SDK 输入的视频源,包括屏幕流
默认使用内部采集。内部采集指:使用 RTC SDK 内置的视频采集机制进行视频采集。
pushReferenceAudioPCMData:向 SDK 发送由自定义处理后的 PCM 音频数据,作为回声消除的参考信号
pullExternalAudioFrame:拉取下行音频数据用于自定义音频渲染。
调用该方法后,SDK 会主动拉取待播放的音频数据,包括远端已解码和混音后的音频数据,用于外部播放。
pushExternalAudioFrame:推送自定义采集的音频数据到 RTC SDK。
disableAudioProcessor:关闭自定义音频处理。
enableAudioProcessor:audioFormat:设置并开启指定的音频帧回调,进行自定义处理。
registerAudioProcessor:注册自定义音频处理器。
注册完成后,你可以调用 enableAudioProcessor:audioFormat:,对本地采集到的音频进行处理,RTC SDK 将对处理后的音频进行编码和发送。也可以对接收到的远端音频进行自定义处理,RTC SDK 将对处理后的音频进行渲染。
registerAudioFrameObserver:注册音频数据回调观察者。
disableAudioFrameCallback:关闭音频回调
enableAudioFrameCallback:format:设置并开启指定的音频数据帧回调
pushExternalVideoFrame:推送外部视频帧。
registerLocalEncodedVideoFrameObserver:注册本地视频帧监测器。
无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame:Frame: 回调给用户
registerLocalVideoProcessor:withConfig:设置自定义视频前处理器。
使用这个视频前处理器,你能够调用 processVideoFrame: 对 RTC SDK 采集得到的视频帧进行前处理,并将处理后的视频帧用于 RTC 音视频通信。
setRemoteVideoSink:withSink:withRemoteRenderConfig:将远端视频流与自定义渲染器绑定。你可以通过参数设置返回指定位置和格式的视频帧数据。
setLocalVideoSink:withLocalRenderConfig:将本地视频流与自定义渲染器绑定。你可以通过参数设置返回指定位置和格式的视频帧数据。
setAudioRenderType:切换音频渲染方式
回调描述
onRecordAudioFrame:返回麦克风录制的音频数据
onRemoteEncodedVideoFrame:info:withEncodedVideoFrame:调用 registerRemoteEncodedVideoFrameObserver: 后,SDK 监测到远端编码后视频数据时,触发该回调
onLocalEncodedVideoFrame:Frame:调用 registerLocalEncodedVideoFrameObserver: 后,SDK 每次使用内部采集,采集到一帧视频帧,或收到一帧外部视频帧时,都会回调该事件。
processVideoFrame:获取 RTC SDK 采集得到的视频帧,根据 registerLocalVideoProcessor:withConfig: 设置的视频前处理器,进行视频前处理,最终将处理后的视频帧给到 RTC SDK 用于编码传输。
onActiveVideoLayer:info:withVideoIndex:withActive:作为自定义编码视频流的发送端,你会在视频流可发送状态发生变化时,收到此回调。
你可以根据此回调的提示,仅对可发送的视频流进行编码,以降低本端视频编码性能消耗。此回调会根据多个因素综合判断触发,包括:本端设备性能和本端网络性能,以及按需订阅场景下,远端用户是否订阅。
onRequestKeyFrame:info:withVideoIndex:提示流发布端需重新生成关键帧的回调
onRateUpdate:info:withVideoIndex:withFps:withBitRate:当自定义编码流的帧率或码率发生变化时,触发该回调
onStop:info:当收到该回调时,你需停止向 SDK 推送自定义编码视频帧
onStart:info:提示自定义编码帧可以开始推送的回调。
收到该回调后,你即可调用 pushExternalEncodedVideoFrame:withEncodedVideoFrame: 向 SDK 推送自定义编码视频帧
onProcessScreenAudioFrame:回调屏幕共享的音频帧地址,供自定义音频处理。
onProcessEarMonitorAudioFrame:软件耳返音频数据的回调。你可根据此回调自定义处理音频。
软件耳返音频中包含通过调用 setVoiceReverbType: 和 setVoiceChangerType: 设置的音频特效。
onProcessRemoteUserAudioFrame:info:audioFrame:回调单个远端用户的音频帧地址,供自定义音频处理。
onProcessPlayBackAudioFrame:回调远端音频混音的音频帧地址,供自定义音频处理。
onProcessRecordAudioFrame:回调本地采集的音频帧地址,供自定义音频处理。
onCaptureMixedAudioFrame:返回本地麦克风录制的音频数据,本地 MediaPlayer / EffectPlayer 播放音频文件混音后的音频数据
onMixedAudioFrame:返回本地麦克风录制和订阅的所有远端用户混音后的音频数据
onRemoteUserAudioFrame:info:audioFrame:返回远端单个用户的音频数据
onPlaybackAudioFrame:返回订阅的所有远端用户混音后的音频数据。

网络管理

方法描述
setLocalSimulcastMode:发布端开启大小流(simulcast)功能。
setCellularEnhancement:启用蜂窝网络辅助增强,改善通话质量。
getNetworkTimeInfo通过 NTP 协议,获取网络时间。
stopEchoTest停止音视频回路测试。
调用 startEchoTest:playDelay: 开启音视频回路检测后,你必须调用该方法停止检测。
startEchoTest:playDelay:开启音视频回路测试。
在进房前,用户可调用该接口对音视频通话全链路进行检测,包括对音视频设备以及用户上下行网络的检测,从而帮助用户判断是否可以正常发布和接收音视频流。
开始检测后,SDK 会录制你的声音或视频。如果你在设置的延时范围内收到了回放,则视为音视频回路测试正常。
stopNetworkDetection停止通话前网络探测
startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth:开始通话前网络探测
setRemoteUserPriority:InRoomId:uid:设置用户优先级。
setSubscribeFallbackOption:设置订阅的音视频流的回退选项。
你可调用该接口设置网络不佳或设备性能不足时允许订阅流进行降级或只订阅音频流,以保证通话流畅。
setPublishFallbackOption:设置发布的音视频流的回退选项。
你可以调用该接口设置网络不佳或设备性能不足时从大流起进行降级处理,以保证通话质量。
setLocalSimulcastMode:config:发布端进行大小流(simulcast)设置。
回调描述
rtcEngine:onConnectionStateChanged:SDK 与信令服务器连接状态改变回调。连接状态改变时触发。
rtcEngineOnNetworkTimeSynchronized:首次调用 getNetworkTimeInfo 后,SDK 内部启动网络时间同步,同步完成时会触发此回调。
rtcEngine:onEchoTestResult:关于音视频回路测试结果的回调。
rtcEngine:onSimulcastSubscribeFallback:info:event:音视频流因网络环境变化等原因发生回退,或从回退中恢复时,触发该回调。
rtcEngine:onPerformanceAlarms:info:mode:reason:sourceWantedData:本地未通过 setPublishFallbackOption: 开启发布性能回退,检测到设备性能不足时,收到此回调。
本地通过 setPublishFallbackOption: 开启发布性能回退,因设备性能/网络原因,造成发布性能回退/恢复时,收到此回调。
rtcEngine:onNetworkDetectionStopped:通话前网络探测结束
以下情况将停止探测并收到一次本回调:
  1. 当调用 stopNetworkDetection 接口停止探测后,会收到一次该回调;
  2. 当收到远端/本端音频首帧后,停止探测;
  3. 当探测超过 3 分钟后,停止探测;
  4. 当探测链路断开一定时间之后,停止探测。
rtcEngine:onNetworkDetectionResult:quality:rtt:lostRate:bitrate:jitter:通话前网络探测结果的回调。
成功调用 startNetworkDetection:uplinkBandwidth:downlink:downlinkBandwidth: 接口开始探测后,会在 3s 内首次收到该回调,之后每 2s 收到一次该回调。
rtcEngine:onSEIMessageReceived:info:andMessage:收到通过调用 sendSEIMessage:andRepeatCount:andCountPerFrame: 发送带有 SEI 消息的视频帧时,收到此回调。
rtcEngine:onNetworkTypeChanged:SDK 当前网络连接类型改变回调。

消息

方法描述
sendRoomMessage:给房间内的所有其他用户发送文本消息。
sendRoomBinaryMessage:给房间内的所有其他用户群发二进制消息。
sendRoomMessage:给房间内的所有其他用户群发文本消息。
sendStreamSyncInfo:config:发送音频流同步信息。将消息通过音频流发送到远端,并实现与音频流同步,该接口调用成功后,远端用户会收到 rtcEngine:onStreamSyncInfoReceived:info:streamType:data: 回调。
sendServerBinaryMessage:客户端给应用服务器发送二进制消息(P2Server)。
sendServerMessage:客户端给应用服务器发送文本消息(P2Server)。
sendUserBinaryMessageOutsideRoom:message:config:给房间外指定的用户发送二进制消息(P2P)。
sendUserMessageOutsideRoom:message:config:给房间外指定的用户发送文本消息(P2P)。
getPeerOnlineStatus:查询对端用户或本端用户的登录状态
setServerParams:url:设置应用服务器参数
客户端调用 sendServerMessage: 或 sendServerBinaryMessage: 发送消息给应用服务器之前,必须设置有效签名和应用服务器地址。
updateLoginToken:更新用户用于登录的 Token
Token 有一定的有效期,当 Token 过期时,需调用此方法更新登录的 Token 信息。
调用 login:uid: 方法登录时,如果使用了过期的 Token 将导致登录失败,并会收到 rtcEngine:onLoginResult:errorCode:elapsed: 回调通知,错误码为 ByteRTCLoginErrorCodeInvalidToken。此时需要重新获取 Token,并调用此方法更新 Token。
logout登出 RTS 服务器。
调用本接口登出后,无法调用房间外消息以及端到服务器消息相关的方法或收到相关回调。
login:uid:登录 RTS 服务器。
必须先登录,才能调用 sendUserMessageOutsideRoom:message:config: 和 sendServerMessage: 发送房间外点对点消息和向应用服务器发送消息
在调用本接口登录后,如果想要登出,需要调用 logout
sendLivePushSEIMessage:count:isKeyFrameOnly:allowOverwrite:以 Key-Value 格式通过视频帧发送 SEI 数据。
调用此接口前,必须在调用 setLiveMode: 时将房间模式设置为 kRoomLiveModeSoloHost 开启单人直播模式。
sendSEIMessage:andRepeatCount:andCountPerFrame:通过视频帧发送 SEI 数据。
在视频通话场景下,SEI 数据会随视频帧发送;在语音通话场景下,SDK 会自动生成一路 16px × 16px 的黑帧视频流用来发送 SEI 数据。
sendUserBinaryMessage:message:config:给房间内指定的用户发送点对点二进制消息(P2P)。
sendUserMessage:message:config:给房间内指定的用户发送点对点文本消息(P2P)。
sendRoomBinaryMessage:给房间内的所有其他用户发送二进制消息。
回调描述
rtcEngine:onSEIStreamUpdate:info:eventType:黑帧视频流发布状态回调。
在语音通话场景下,本地用户调用 sendSEIMessage:andRepeatCount:andCountPerFrame: 通过黑帧视频流发送 SEI 数据时,流的发送状态会通过该回调通知远端用户。
你可以通过此回调判断携带 SEI 数据的视频帧为黑帧,从而不对该视频帧进行渲染。
rtsRoom:onUserMessageSendResult:error:向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
rtsRoom:onUserBinaryMessageReceived:uid:message:收到来自房间中其他用户通过 sendUserBinaryMessage:message:config: 发来的点对点二进制消息时,会收到此回调。
rtsRoom:onUserMessageReceived:uid:message:收到来自房间中其他用户通过 sendUserMessage:message:config: 发来的点对点文本消息时,会收到此回调。
rtsRoom:onRoomBinaryMessageReceived:uid:message:收到房间内广播二进制消息的回调。
房间内其他用户调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtsRoom:onRoomMessageReceived:uid:message:收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtsRoom:onUserBinaryMessageReceived:message:收到来自房间中其他用户通过 sendUserBinaryMessage:message:config: 发来的点对点二进制消息时,会收到此回调。
rtsRoom:onUserMessageReceived:message:收到来自房间中其他用户通过 sendUserMessage:message:config: 发来的点对点文本消息时,会收到此回调。
rtsRoom:onRoomMessageSendResult:error:向房间内所有用户群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。
rtsRoom:onRoomBinaryMessageReceived:message:收到房间中调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtsRoom:onRoomMessageReceived:message:收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtcRoom:onRoomMessageSendResult:error:向房间内群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。
rtcRoom:onUserMessageSendResult:error:向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
rtcRoom:onUserBinaryMessageReceived:message:收到来自房间中其他用户发来的点对点二进制消息时,会收到此回调。
rtcRoom:onUserMessageReceived:message:收到来自房间中其他用户发来的点对点文本消息时,会收到此回调。
rtcRoom:onRoomBinaryMessageReceived:message:收到房间内广播二进制消息的回调。
rtcRoom:onRoomMessageReceived:message:广播文本消息回调。
rtcRoom:onRoomMessageSendResult:error:调用 sendRoomMessage: 或 sendRoomBinaryMessage: 向房间内群发文本或二进制消息后,消息发送方会收到该消息发送结果回调。
rtcRoom:onUserMessageSendResult:error:向房间内单个用户发送文本或二进制消息后(P2P),消息发送方会收到该消息发送结果回调。
rtcRoom:onUserBinaryMessageReceived:uid:message:收到来自房间中其他用户通过 sendUserBinaryMessage:message:config: 发来的点对点二进制消息时,会收到此回调。
rtcRoom:onUserMessageReceived:uid:message:收到来自房间中其他用户通过 sendUserMessage:message:config: 发来的点对点文本消息时,会收到此回调。
rtcRoom:onRoomBinaryMessageReceived:uid:message:收到房间内广播二进制消息的回调。
房间内其他用户调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtcRoom:onRoomMessageReceived:uid:message:收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtcRoom:onUserBinaryMessageReceived:message:> 该接口将于 3.64 被 onUserBinaryMessageReceived:uid:message: 代替。
收到来自房间中其他用户通过 sendUserBinaryMessage:message:config: 发来的点对点二进制消息时,会收到此回调。
rtcRoom:onUserMessageReceived:message:> 该接口将于 3.64 被 onUserMessageReceived:uid:message: 代替。
收到来自房间中其他用户通过 sendUserMessage:message:config: 发来的点对点文本消息时,会收到此回调。
rtcRoom:onRoomBinaryMessageReceived:message:> 该接口将于 3.64 被 onRoomBinaryMessageReceived:uid:message: 代替。
收到房间内广播二进制消息的回调。
房间内其他用户调用 sendRoomBinaryMessage: 发送的广播二进制消息时,收到此回调。
rtcRoom:onRoomMessageReceived:message:> 该接口将于 3.64 被 onRoomMessageReceived:uid:message: 代替。
收到房间中调用 sendRoomMessage: 发送的广播文本消息时,收到此回调。
rtcEngine:onServerMessageSendResult:error:message:给应用服务器发送消息的回调。
rtcEngine:onUserMessageSendResultOutsideRoom:error:给房间外指定的用户发送消息的回调
rtcEngine:onUserBinaryMessageReceivedOutsideRoom:uid:message:收到房间外用户调用 sendUserBinaryMessageOutsideRoom:message:config: 发来的二进制消息时,会收到此回调。
rtcEngine:onUserMessageReceivedOutsideRoom:uid:message:收到房间外用户调用 sendUserMessageOutsideRoom:message:config: 发来的文本消息时,会收到此回调
rtcEngine:onUserBinaryMessageReceivedOutsideRoom:message:> 该接口将于 3.64 被 rtcEngine:onUserBinaryMessageReceivedOutsideRoom:uid:message: 代替。
收到房间外用户调用 sendUserBinaryMessageOutsideRoom:message:config: 发来的二进制消息时,会收到此回调。
rtcEngine:onUserMessageReceivedOutsideRoom:message:> 该接口将于 3.64 被 rtcEngine:onUserMessageReceivedOutsideRoom:uid:message: 代替。
收到房间外用户调用 sendUserMessageOutsideRoom:message:config: 发来的文本消息时,会收到此回调
rtcEngine:onGetPeerOnlineStatus:status:查询对端或本端用户登录状态的返回结果
rtcEngine:onServerParamsSetResult:设置应用服务器参数的返回结果
rtcEngine:onLogout:登出结果回调
rtcEngine:onLoginResult:errorCode:elapsed:登录结果回调

推流至 CDN/WTN

方法描述
startPushMixedStream:withPushTargetConfig:withMixedConfig:指定房间中的媒体流,合成后一路流发布到 CDN 或发布一路 WTN 流。
stopPushSingleStream:停止由 startPushSingleStream:singleStream: 启动的单流转推任务。
startPushSingleStream:singleStream:将房间内某一路音视频流,推送到指定的 RTC 房间或 CDN 地址。此过程不涉及编解码。
stopPushMixedStream:withPushTargetType:停止 WTN 流或合流转推 CDN 任务。
updatePushMixedStream:withPushTargetConfig:withMixedConfig:更新推 CDN/WTN 流转推参数,会收到 rtcEngine:onMixedStreamEvent:withMixedStreamInfo:withErrorCode: 回调。
使用 startPushMixedStream:withPushTargetConfig:withMixedConfig: 启用转推直播功能后,使用此方法更新功能配置参数。
subscribeWTNVideoStream:subscribe:订阅/取消订阅指定 WTN 视频流
无论用户是否在房间内,都可以调用本接口订阅/取消订阅指定的 WTN 视频流。
getWTNStream获取 WTN 流对象。
subscribeWTNAudioStream:subscribe:订阅/取消订阅指定 WTN 音频流
无论用户是否在房间内,都可以调用本接口订阅/取消订阅指定的 WTN 音频流。
setWTNRemoteVideoCanvas:withCanvas:为指定 WTN 流绑定内部渲染视图
setWTNRemoteVideoSink:withSink:withConfig:为指定 WTN 流绑定自定义渲染器。详见自定义视频渲染。
setWTNRemoteAudioPlaybackVolume:volume:调节 WTN 流的音频播放音量。
setWTNStreamDelegate:设置 WTN 流回调接口
回调描述
rtcEngine:onMixedStreamEvent:withMixedStreamInfo:withErrorCode:合流转推 CDN / WTN 流状态回调
rtcEngine:onSingleStreamEvent:withTaskId:withErrorCode:单流转推 CDN 状态回调。
onWTNRemoteVideoStats:videoStats:通话中本地设备接收订阅的远端 WTN 视频流的流 ID 以及远端 WTN 视频流统计信息。
onWTNRemoteAudioStats:audioStats:通话中本地设备接收订阅的远端 WTN 音频流的流 ID 以及远端 WTN 音频流统计信息。
onWTNDataMessageReceived:andMessage:andSourceType:回调 WTN 流中包含的数据信息。
通过 subscribeWTNAudioStream:subscribe:/subscribeWTNVideoStream:subscribe: 订阅 WTN 流后,可以通过本回调获取 WTN 流中的数据消息,包括调用 Open API 发送的 SEI 消息和音量回调。
onWTNVideoSubscribeStateChanged:state:reason:WTN 视频流订阅状态变化回调
通过 subscribeWTNVideoStream:subscribe: 订阅 WTN 视频流后,可以通过本回调获取订阅结果。
onWTNAudioSubscribeStateChanged:state:reason:WTN 音频流订阅状态变化回调
通过 subscribeWTNAudioStream:subscribe: 订阅 WTN 音频流后,可以通过本回调获取订阅结果。
onWTNFirstRemoteAudioFrame:WTN 流的首帧音频解码成功
关于订阅 WTN 音频流,详见 subscribeWTNAudioStream:subscribe:。
onWTNFirstRemoteVideoFrameDecoded:withFrameInfo:WTN 流的首帧视频解码成功
关于 订阅 WTN 流,详见 subscribeWTNVideoStream:subscribe:。
onWTNSEIMessageReceived:andChannelId:andMessage:回调 WTN 流中包含的 SEI 信息。
subscribeWTNAudioStream:subscribe:/subscribeWTNVideoStream:subscribe: 接口启动拉 WTN 音频/视频流功能后,通过此回调收到 WTN 流中的 SEI 消息。

混音

方法描述
open:config:打开音乐文件。
一个播放器实例仅能够同时打开一个音乐文件。如果需要同时打开多个音乐文件,请创建多个音乐播放器实例。
要播放 PCM 格式的音频数据,参看 openWithCustomSource:config:。openWithCustomSource 和此 API 互斥。
getMediaPlayer:创建音乐播放器实例。
getAudioEffectPlayer创建音效播放器实例。
setEventHandler:设置回调句柄。
getDuration:获取音效文件时长。
getVolume:获取当前音量。
setVolumeAll:设置所有音效的音量大小,包括音效文件和 PCM 音效。
setVolume:volume:调节指定音效的音量大小,包括音效文件和 PCM 音频。
getPosition:获取音效文件播放进度。
setPosition:position:设置音效文件的起始播放位置。
resumeAll恢复播放所有音效文件。
resume:恢复播放音效文件。
pauseAll暂停播放所有音效文件。
pause:暂停播放音效文件。
unloadAll卸载所有音效文件。
unload:卸载指定音效文件。
preload:filePath:预加载指定音乐文件到内存中,以避免频繁播放同一文件时的重复加载,减少 CPU 占用。
stopAll停止播放所有音效文件。
stop:停止播放音效文件。
start:filePath:config:开始播放音效文件。
可以通过传入不同的 ID 和 filepath 多次调用本方法,以实现同时播放多个音效文件,实现音效叠加。
setEventHandler:设置回调句柄。
pushExternalAudioFrame:推送用于混音的 PCM 音频帧数据
registerAudioFrameObserver:注册回调句柄以在本地音乐文件混音时,收到相关回调。
setLoudness:如果你需要使用 enableVocalInstrumentBalance: 对音频文件/PCM 音频数据设置音量均衡,你必须通过此接口传入其原始响度。
setProgressInterval:设置音频文件混音时,收到 onMediaPlayerPlayingProgress:progress: 的间隔。
setPlaybackSpeed:设置播放速度
selectAudioTrack:指定当前音乐文件的播放音轨
getAudioTrackCount获取当前音乐文件的音轨数
setAudioDualMonoMode:设置当前音乐文件的声道模式
setPosition:设置音乐文件的起始播放位置。
setAudioPitch:开启变调功能,多用于 K 歌场景。
getState获取播放器状态
getPosition获取音乐文件播放进度。
getPlaybackDuration获取混音音乐文件的实际播放时长,单位为毫秒。
getTotalDuration获取音乐文件时长。
getVolume:获取当前音量
setVolume:type:调节指定混音的音量大小,包括音乐文件混音和 PCM 混音。
resume调用 pause 暂停音频播放后,调用本方法恢复播放。
pause调用 open:config:,或 start 开始播放音频文件后,调用本方法暂停播放。
stop调用 open:config:, start, 或 openWithCustomSource:config: 开始播放后,可以调用本方法停止。
openWithCustomSource:config:启动音频裸数据混音。
要播放音乐文件,参看 open:config:。open 与此 API 互斥。
start播放音乐。你仅需要在调用 open:config:,且未开启自动播放时,调用此方法。
回调描述
onFrame:audioFrame:当本地音频文件混音时,回调播放的音频帧。
onSeek:whence:根据设置好的内存音频数据的读取位置和读取偏移量对音频数据进行偏移,以便 SDK 读取和分析音频数据。
在调用 openWithCustomSource:config: 接口传入内存音频数据,或者调用 setPosition:position: 设置了音频数据的起始播放位置后,SDK 会对音频数据进行读取和分析,此时会触发该回调,你需要根据参数中设置的起始读取位置和偏移量进行操作。
onReadData:bufferSize:调用 openWithCustomSource:config: 接口播放用户传入的内存音频数据时,会触发此回调,用户需要写入音频数据。
onMediaPlayerEvent:event:message:播放事件回调。调用 selectAudioTrack: 和 setPosition: 后,会触发此回调。
onMediaPlayerPlayingProgress:progress:播放进度周期性回调。回调周期通过 setProgressInterval: 设置。
onMediaPlayerStateChanged:state:error:播放状态改变时回调。
onAudioEffectPlayerStateChanged:state:error:播放状态改变时回调。
rtcEngine:onAudioMixingPlayingProgress:progress:混音音频文件播放进度回调

屏幕共享

方法描述
setExtensionConfig:设置 Extension 配置项。你必须在使用屏幕内部采集功能前,设置使用的 Extension。
sendScreenCaptureExtensionMessage:向屏幕共享 Extension 发送自定义消息
stopScreenCapture在屏幕共享时,停止使用 RTC SDK 内部采集方式采集屏幕音视频。
updateScreenCapture:更新内部屏幕采集时采集的媒体类型。
startScreenCapture:bundleId:使用 RTC SDK 内部采集模块开始采集屏幕音频流和(或)视频流。
setScreenAudioSourceType:在屏幕共享时,设置屏幕音频的采集方式(内部采集/自定义采集)
pushScreenAudioFrame:使用自定义采集方式,采集屏幕共享时的屏幕音频时,将音频帧推送至 RTC SDK 处进行编码等处理。

安全与加密

方法描述
setEncryptInfo:key:设置传输时使用内置加密的方式。
setLocalProxy:设置本地代理。
stopCloudProxy关闭云代理
startCloudProxy:开启云代理
setCustomizeEncryptHandler:设置自定义加密和解密方式。
回调描述
rtcEngine:onCloudProxyConnected:调用 startCloudProxy: 开启云代理,SDK 首次成功连接云代理服务器时,回调此事件。
onDecryptData:自定义解密。
对自定义加密后的音视频帧数据进行解密。关于自定义加密,参看 onEncryptData:。
onEncryptData:自定义加密。
使用设定的自定义加密方式,对编码后传输前的音视频帧数据进行加密。
暂不支持对原始音视频帧进行加密。
rtcEngine:onLocalProxyStateChanged:withProxyState:withProxyError:本地代理状态发生改变回调。调用 setLocalProxy:{@link #ByteRTCEngin e#setLocalProxy} 设置本地代理后,SDK 会触发此回调,返回代理连接的状态。

字幕翻译服务

方法描述
startSubtitle:识别或翻译房间内所有用户的语音,形成字幕。
调用该方法时,可以在 ByteRTCSubtitleMode 中选择语音识别或翻译模式。如果选择识别模式,语音识别文本会通过 rtcRoom:onSubtitleMessageReceived: 事件回调给你;
如果选择翻译模式,你会同时收到两个 rtcRoom:onSubtitleMessageReceived: 回调,分别包含字幕原文及字幕译文。
调用该方法后,用户会收到 rtcRoom:onSubtitleStateChanged:errorCode:errorMessage: 回调,通知字幕是否开启。
stopSubtitle关闭字幕。
调用该方法后,用户会收到 rtcRoom:onSubtitleStateChanged:errorCode:errorMessage: 回调,通知字幕是否关闭。
回调描述
rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:字幕状态发生改变回调。
当用户调用 startSubtitle: 和 stopSubtitle 使字幕状态发生改变或出现错误时,触发该回调。
rtcRoom:onSubtitleMessageReceived:字幕相关内容回调。
rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:字幕状态发生改变回调。
当用户调用 startSubtitle: 和 stopSubtitle 使字幕状态发生改变或出现错误时,触发该回调。
rtcRoom:onSubtitleMessageReceived:字幕相关内容回调。
当用户调用 startSubtitle: 后会收到此回调,通知字幕的相关信息。

高级功能

方法描述
getRangeAudio获取游戏房间的范围语音接口实例。
setNoAttenuationFlags:添加标签组,用于标记相互之间通话不衰减的用户组。
在同一个 RTC 房间中,如果多个用户的标签组之间有交集,那么,他们之间互相通话时,通话不衰减。
比如,用户身处多个队伍,队伍成员间通话不衰减。那么,可以为每个队伍绑定专属标签,每个用户的标签组包含用户所属各个队伍的标签。
setAttenuationModel:coefficient:设置范围语音的音量衰减模式。
updatePosition:更新本地用户在房间内空间直角坐标系中的位置坐标。
updateReceiveRange:更新本地用户的音频收听范围。
enableRangeAudio:开启/关闭范围语音功能。
范围语音是指,在同一 RTC 房间中设定的音频接收距离范围内,本地用户收听到的远端用户音频音量会随着远端用户的靠近/远离而放大/衰减;若远端用户在房间内的位置超出设定范围,则本地用户无法接收其音频。音频接收范围设置参看 updateReceiveRange:。
getSpatialAudio获取空间音频接口实例。
getRangeAudio获取范围语音接口实例。
takeRemoteSnapshotToFile:filePath:截取远端的视频流画面,生成 JPG 文件,并保存到本地指定路径。
调用该方法后,SDK 会触发回调 rtcEngine:onRemoteSnapshotTakenToFile:info:filePath:width:height:errorCode:taskId: 报告截图是否成功,以及截取的图片信息。
takeRemoteSnapshot:callback:截取远端视频画面,并保存到本地指定路径。
takeLocalSnapshotToFile:截取本地的视频流画面,生成 JPG 文件,并保存到本地指定路径。
调用该方法后,SDK 会触发回调 rtcEngine:onLocalSnapshotTakenToFile:filePath:width:height:errorCode:taskId: 报告截图是否成功,以及截取的图片信息。
takeLocalSnapshot:截取本地视频画面
stopAudioRecording停止音频文件录制
startAudioRecording:开始音频录制,并生成录音文件保存到本地。
stopFileRecording停止本地录制
startFileRecording:type:该方法将通话过程中的音视频数据录制到本地的文件中。
setEarMonitorVolume:设置耳返的音量。
setEarMonitorMode:filter:开启/关闭耳返功能,并控制是否对耳返音频应用本地音频处理。
setEarMonitorMode:开启/关闭耳返功能。
setAnsMode:支持根据业务场景,设置通话中的音频降噪模式。
removeAllRemotePosition移除调用 updateRemotePosition:positionInfo: 为所有远端用户设置的空间音频效果。
removeRemotePosition:移除调用 updateRemotePosition:positionInfo: 为某一远端用户设置的空间音频效果。
updateSelfPosition:设置本地用户在自建空间直角坐标系中的收听坐标和收听朝向,以实现本地用户预期的空间音频收听效果。
disableRemoteOrientation关闭本地用户朝向对本地用户发声效果的影响。
调用此接口后,房间内的其他用户收听本地发声时,声源都在收听者正面。
回调描述
rtcEngine:onExtensionAccessError:msg:当访问插件失败时,收到此回调。
RTC SDK 将一些功能封装成插件。当使用这些功能时,如果插件不存在,功能将无法使用。
onTakeRemoteSnapshotResult:streamId:info:image:errorCode:调用 takeRemoteSnapshot:callback: 截取视频画面时,收到此回调。
onTakeLocalSnapshotResult:videoSource:image:errorCode:调用 takeLocalSnapshot: 截取视频画面时,收到此回调。
rtcEngine:onLocalSnapshotTakenToFile:filePath:width:height:errorCode:taskId:调用 takeLocalSnapshotToFile: 截取视频画面时,会收到此回调报告截图是否成功,以及截取的图片信息。
rtcEngine:onRemoteSnapshotTakenToFile:info:filePath:width:height:errorCode:taskId:调用 takeRemoteSnapshotToFile:filePath: 截取视频画面时,会收到此回调报告截图是否成功,以及截取的图片信息。
rtcEngine:onAudioRecordingStateUpdate:error_code:调用 startAudioRecording: 或者 stopAudioRecording 改变音频文件录制状态时,收到此回调。
rtcEngine:onRecordingProgressUpdate:process:recording_info:本地录制进度回调。
该回调由 startFileRecording:type: 触发,录制状态正常时,系统每秒钟都会通过该回调提示录制进度。
rtcEngine:onRecordingStateUpdate:state:error_code:recording_info:获取本地录制状态回调。
该回调由 startFileRecording:type: 或 stopFileRecording: 触发。
rtcEngine:onLicenseQuotaExceeded:AIGC(AI 音视频互动方案)使用 License 计费的场景下,当 License 配额用尽时,会收到该回调。收到该回调时,AIGC 服务会中止,请及时续费,并且建议离开房间、销毁 SDK。
最近更新时间:2026.08.05 15:06:59
这个页面对您有帮助吗?
有用
有用
无用
无用