创建实例和事件回调
delegate
id<RTCEngineDelegate> delegate
设置 RTC 事件回调
您可以通过RTCEngineDelegate获得来自 SDK 的各类事件通知(比如:错误码,音视频状态参数等)。
sharedEngine()
+ (RTCEngineKit *)sharedEngine
创建 RTCEngineKit 实例(单例模式)。
destroy()
- (void)destroy
销毁 RTCEngineKit 实例(单例模式)。
version()
- (NSString *)version
获取 RTCEngineKit 版本号。
initializeWithConfig:appGroup:delegate:()
- (RTCEngineError)initializeWithConfig:(RTCEngineConfig *)engineConfig appGroup:(NSString *)appGroup delegate:(nullable id <RTCEngineDelegate>)delegate
初始化 RTCEngineKit 服务
RTC 的所有用户都需要初始化 RTCEngineKit 服务之后才可以使用相关的接口,包括加入频道等。
参数
即时通讯相关接口函数
enableImWithToken:delegate:()
- (RTCEngineError)enableImWithToken:(NSString *)token delegate:(nullable id<RTCEngineIMDelegate>)delegate
启用即时通讯
RTC 的所有用户如需使用即时通讯业务,首先调后台接口获取启用即时通讯的鉴权令牌,然后调用该接口开启 SDK 即时通讯服务,方便开发者利用该服务实现,如会前呼叫、通知等业务功能。
参数
disableIm()
- (void)disableIm
停用即时通讯
当您不再需要即时通讯服务时,可通过该接口进行停用。
频道相关接口函数
joinChannelWithToken:()
- (RTCEngineError)joinChannelWithToken:(NSString *)token
加入频道
RTC 的所有用户都需要加入频道才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取频道里其他用户的音视频流。
参数
注意
- 请您尽量保证
joinChannelWithToken与leaveChannel前后配对使用,即保证“先退出前一个频道再进入下一个频道”,否则会导致很多异常问题。
leaveChannel:()
- (void)leaveChannel:(nullable RTCEngineKitFinishBlock)finishBlock离开频道 调用该接口会让用户离开自己所在的频道,并释放摄像头、麦克风、扬声器等设备资源。 等资源释放完毕之后,SDK 会通过
finishBlock回调向您通知。 如果您要再次调用joinChannelWithToken:(),建议等待finishBlock回调到来之后再执行之后的操作,以避免摄像头或麦克风被占用等异常问题。
参数
数据管理相关接口函数
getMySelf()
- (RTCEngineUserModel *)getMySelf
获取当前账户信息
getChannelDetails()
- (RTCEngineChannelModel *)getChannelDetails
获取当前频道数据
findMemberWithUserId:()
- (RTCEngineUserModel *)findMemberWithUserId:(NSString *)userId
查找频道内userId的用户信息
getRemoteUsers()
- (NSArray<RTCEngineUserModel *> *)getRemoteUsers
获取当前频道成员列表
getDrawingHost()
- (NSString *)getDrawingHost
获取画板地址
视频相关接口函数
startLocalPreview:view:()
- (RTCEngineError)startLocalPreview:(BOOL)frontCamera view:(VIEW_CLASS *)view
开启本地摄像头的预览画面
在joinRoomWithRoomId之前调用此函数,SDK 只会开启摄像头,并一直等到您调用joinRoomWithRoomId之后才开始推流。 在joinRoomWithRoomId之后调用此函数,SDK 会开启摄像头并自动开始视频推流。
自2.5.7起,如果frontCamera指定的摄像头无法创建输入或启动后未输出有效视频帧,SDK 会自动尝试另一可用摄像头。业务层无需通过额外调用switchCamera恢复预览;实际采集方向可通过currentCameraDirection获取。
参数
updateLocalView:()
- (RTCEngineError)updateLocalView:(VIEW_CLASS *)view更新本地摄像头的预览画面
stopLocalPreview()
- (RTCEngineError)stopLocalPreview
停止摄像头预览
publishLocalVideo:()
- (RTCEngineError)publishLocalVideo:(BOOL)publish
暂停/恢复发布本地的视频流
该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一频道中的其他用户将无法继续看到自己画面。 该接口等效于start/stopLocalPreview这两个接口,但具有更好的响应速度。 因为start/stopLocalPreview需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。 相比之下,publishLocalVideo只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。 当暂停/恢复发布本地的视频流后,同一频道中的其他用户将会收到onUserUpdate回调通知。
参数
switchCamera()
- (RTCEngineError)switchCamera
切换摄像头
SDK 仅在目标摄像头能够创建输入时执行切换。目标摄像头不可用时保持当前实际采集设备,不会切换到无效输入。
setLocalPreviewMirror:()
- (RTCEngineError)setLocalPreviewMirror:(BOOL)mirror
设置前置摄像头本地预览镜像偏好
仅作用于本地预览画面,不影响推流数据。前置摄像头按 mirror 取值设置镜像,后置摄像头始终不镜像;切换摄像头后 SDK 会自动应用对应策略。
参数
currentCameraDirection()
- (RTCEngineCameraDirection)currentCameraDirection
获取当前摄像头方向
可通过该接口获取当前实际采集使用的摄像头方向。请求的摄像头不可用并发生自动回退时,该接口返回回退后设备的方向。返回值参考 RTCEngineCameraDirection。
setCameraZoomRatio:()
- (RTCEngineError)setCameraZoomRatio:(CGFloat)zoomRatio
设置摄像头的缩放倍数
参数
setCameraFocusPosition:()
- (RTCEngineError)setCameraFocusPosition:(CGPoint)position
设置摄像头的对焦位置
参数
setCameraExposureRatio:()
- (RTCEngineError)setCameraExposureRatio:(CGFloat)exposureRatio
设置摄像头的曝光系数
参数
enableCameraTorch:()
- (RTCEngineError)enableCameraTorch:(BOOL)enabled
设置闪光灯状态
参数
startRemoteView:trackId:view:()
- (RTCEngineError)startRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId view:(VIEW_CLASS *)view
订阅远端用户的视频流,并绑定视频渲染控件
调用该接口可以让 SDK 拉取指定userid的视频流,并渲染到参数view指定的渲染控件上。
参数
updateRemoteView:trackId:view:()
- (RTCEngineError)updateRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId view:(VIEW_CLASS *)view
更新远端用户的视频渲染控件
该接口可用于更新远端视频画面的渲染控件,常被用于切换显示区域的交互场景中。
参数
stopRemoteView:trackId:()
- (RTCEngineError)stopRemoteView:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId停止订阅远端用户的视频流,并释放渲染控件 调用此接口会让 SDK 停止接收该用户的视频流,并释放该路视频流的解码和渲染资源。 参数
stopAllRemoteViewWithUserId:()
- (RTCEngineError)stopAllRemoteViewWithUserId:(NSString *)userId停止订阅指定远端用户的所有视频流,并释放渲染控件 调用此接口会让 SDK 停止接收该用户的所有视频流,并释放该路视频流的解码和渲染资源。 参数
stopAllRemoteView()
- (RTCEngineError)stopAllRemoteView
停止订阅所有远端用户的视频流,并释放全部渲染资源
调用此接口会让 SDK 停止接收所有来自远端的视频流,并释放全部的解码和渲染资源。
startRemoteMixture:()
- (RTCEngineError)startRemoteMixture:(VIEW_CLASS *)view
订阅远端合成画面视频流,并绑定视频渲染控件
调用该接口可以让 SDK 拉取远端合成画面视频流,并渲染到参数view指定的渲染控件上。
参数
stopRemoteMixture()
- (RTCEngineError)stopRemoteMixture停止订阅远端合成画面视频流,并释放渲染控件 调用此接口会让 SDK 停止接收远端合成画面视频流,并释放该路视频流的解码和渲染资源。
startRemoteRetweet:view:()
- (RTCEngineError)startRemoteRetweet:(NSString *)streamName view:(VIEW_CLASS *)view
订阅远端转推音视频流(webrtc 取流),并绑定视频渲染控件
调用该接口可以让 SDK 通过 webrtc 订阅由外部传入流名的远端转推流,单条连接同时接收音视频,并将画面渲染到参数view指定的渲染控件上。该接口以原始流名作为流标识,转推流不作为远端用户视频数据上报,其接收状态通过 onReceiveRetweetStreamStatusChange:status: 单独通知。
注:转推取流目前仅支持 wangsu 流媒体供应商。
参数
stopRemoteRetweet:()
- (RTCEngineError)stopRemoteRetweet:(NSString *)streamName
停止订阅远端转推音视频流,并释放渲染控件
调用此接口会让 SDK 停止接收指定流名的远端转推流,并释放该路音视频流的连接、解码和渲染资源。
参数
视频渲染接口函数
installRenderModule:authDataSize:logLevel:()
- (RTCEngineError)installRenderModule:(char *)authData authDataSize:(int)authDataSize logLevel:(RTCEngineLogLevel)logLevel
装载视频渲染组件
RTC 所有用户在使用 SDK 提供的美颜、滤镜等视频处理功能时,首先需要调用此函数加载视频渲染资源以及初始化视频渲染实例 。
参数
uninstallRenderModule()
- (void)uninstallRenderModule
卸载视频渲染组件
视频渲染组件不再使用时,需要调用此方法释放视频渲染资源 。
enabledBeauty:()
- (RTCEngineError)enabledBeauty:(BOOL)enabled
美颜功能开关
调用installRenderModule:()方法加载视频渲染组件之后,可以通过该方法设置视频美颜功能的开关 。
参数
setBlurLevel:()
- (void)setBlurLevel:(float)blurLevel
设置磨皮等级
参数
getBlurLevel()
- (float)getBlurLevel
获取当前磨皮等级
setWhiteLevel:()
- (void)setWhiteLevel:(float)whiteLevel
设置美白等级
参数
getWhiteLevel()
- (float)getWhiteLevel
获取当前美白等级
setRedLevel:()
- (void)setRedLevel:(float)redLevel
设置红润等级
参数
getRedLevel()
- (float)getRedLevel
获取当前红润等级
setSharpenLevel:()
- (void)setSharpenLevel:(float)sharpenLevel
设置锐化等级
参数
getSharpenLevel()
- (float)getSharpenLevel
获取当前锐化等级
setFilterLevel:()
- (void)setFilterLevel:(float)filterLevel
设置滤镜等级
参数
getFilterLevel()
- (float)getFilterLevel
获取当前滤镜等级
setFilterName:()
- (void)setFilterName:(NSString *)filterName
设置滤镜效果
参数
getFilterName()
- (float)getFilterName
获取当前滤镜效果
音频相关接口函数
enabledSendAudio()
- (RTCEngineError)enabledSendAudio:(BOOL)enabled
暂停/恢复发布本地的音频流
参数
setAudioPriorityWithUserId:enabled:()
- (RTCEngineError)setAudioPriorityWithUserId:(NSString *)userId enabled:(BOOL)enabled
设置音频优先策略
可通过该接口保证成员下行状态不佳时,优先保证音频的接收效果。
参数
enabledAudioSpeaker:()
- (RTCEngineError)enabledAudioSpeaker:(BOOL)enabled
设置远端音频播放状态
可通过该接口开启或关闭远端音频播放,不会切换扬声器、听筒或外设路由。
参数
enabledAudioModule:()
- (RTCEngineError)enabledAudioModule:(BOOL)enabled
设置本端音频单元启停
自2.5.9起支持。录像直播等本端不采集、不接收 RTC 音频的纯本地播放场景,关闭音频单元可释放底层语音处理单元(VPIO),避免本地播放器(如 AVPlayer)的播放音量被压低;返回该类场景后需将其恢复为自动管理。SDK 每次进房会自动复位为自动管理,避免上一会话的手动停用状态跨会话泄漏。
参数
enabledSpeechTrans:()
- (RTCEngineError)enabledSpeechTrans:(BOOL)enabled
设置语音转写状态
可通过该接口设置语音转写是否开启。
参数
switchAudioRoute:()
- (RTCEngineError)switchAudioRoute:(RTCAudioRoute)audioRoute
切换音频路由
可通过该接口显式请求切换扬声器、听筒、蓝牙耳机或有线耳机。显式选择扬声器或听筒后,SDK 会优先保留该选择;未显式选择内置路由时,自2.5.8起,音频会话重配后 SDK 会主动恢复可用外设,同时存在蓝牙和有线耳机时优先使用蓝牙耳机。
接口返回成功表示系统调用已受理,最终实际路由以 currentAudioRoute 和 onAudioRouteChange:previousRoute: 回调为准。
参数
currentAudioRoute()
- (RTCAudioRoute)currentAudioRoute
获取系统当前实际音频路由
可通过该接口获取系统当前实际使用的音频播放设备,如扬声器、听筒、蓝牙或有线耳机。
headphoneDeviceAvailable()
- (BOOL)headphoneDeviceAvailable
判断是否存在有线耳机设备
可通过该接口判断是否存在有线耳机设备。
bluetoothDeviceAvailable()
- (BOOL)bluetoothDeviceAvailable
判断是否存在蓝牙耳机设备
可通过该接口判断是否存在蓝牙耳机设备。
流媒体相关接口函数
setStreamMediaConfig:()
- (void)setStreamMediaConfig:(RTCEngineMediaConfig *)config
设置流媒体配置参数
可通过该接口设置视频编码、音频编码、视频帧率、视频码流等参数。
参数
setNetworkQosParam:()
- (void)setNetworkQosParam:(RTCEngineNetworkQosParam *)param
设置网络质量控制参数
可通过该接口设置延迟自适应档位、延时抗抖动等级、码率自适应开关、网络自适应开关等参数。
参数
setRemoteDebugParam:()
- (void)setRemoteDebugParam:(RTCEngineDebugParam *)param
设置远程调试参数
可通过该接口设置远程调试地址、音视频流保存状态等调试参数。
参数
共享屏幕相关接口函数
broadcastStartedWithAppGroup:delegate:()
- (void)broadcastStartedWithAppGroup:(NSString *)appGroup delegate:(id<RTCScreenDelegate>)delegate
扩展程序开启屏幕共享,并绑定代理回调
此方法在扩展程序SampleHandler中使用
参数
stopScreenRecord()
- (void)stopScreenRecord
宿主程序关闭屏幕共享
此方法在宿主程序中使用,用于用户主动关闭屏幕共享使用。
sendSampleBuffer:withType:()
- (void)sendSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType
扩展程序发送共享屏幕帧数据
此方法在扩展程序SampleHandler中使用
参数
publishScreenViewCaptureWithPixelBuffer:displayAngle:()
- (void)publishScreenViewCaptureWithPixelBuffer:(CVPixelBufferRef)pixelBuffer displayAngle:(int)displayAngle
发布视图录制的共享流,即:用户可以通过该接口送入与屏幕共享共用轨道的视频流数据。
参数
enabledViewCaptureShare:()
- (RTCEngineError)enabledViewCaptureShare:(BOOL)enabled
设置视图采集共享,该接口用来通知SDK,当前共享屏幕轨道推送的是屏幕采集流还是视图录制流;在调用publishScreenViewCaptureWithPixelBuffer:displayAngle:()之前需先调该接口进行SDK标记。
参数
发布自定义流相关接口函数
startCustomStreamWithStreamModel:()
- (RTCEngineError)startCustomStreamWithStreamModel:(RTCEngineStreamModel *)streamModel
启动自定义流,该接口需要指明发布的轨道、分辨率、码流等基础码流信息,需要注意的是:只有调用该接口申明的轨道才可以通过发布自定义码流接口进行自定义推流,当程序结束自定义推流后需要调用关闭自定义流接口关闭对应轨道。
参数
stopCustomStreamWithTrackId:()
- (RTCEngineError)stopCustomStreamWithTrackId:(RTCTrackIdentifierFlags)trackId
关闭自定义流,该接口需要指明关闭的轨道标识,需要注意的是:当程序结束自定义推流时需要调用该方法关闭对应的轨道。
参数
publishCustomStreamWithStreamData:()
- (RTCEngineError)publishCustomStreamWithStreamData:(constunsignedchar *)streamData bitslen:(int)bitslen pts:(uint32_t)pts dts:(uint32_t)dts trackId:(RTCTrackIdentifierFlags)trackId mediaType:(RTCMediaType)mediaType
发布自定义码流,可以通过该接口向启动自定义流接口中声明的轨道ID推送自定义码流数据。
参数
网络测速相关接口函数
startSpeedTest:()
- (RTCEngineError)startSpeedTest:(RTCSpeedTestParams *)params
开始进行网速测试(加入频道前使用)
参数
注意
- 请在进入频道前进行网速测试,在频道中网速测试会影响正常的音视频传输效果,而且由于干扰过多,网速测试结果也不准确。
- 同一时间只允许一项网速测试任务运行。
stopSpeedTest()
- (void)stopSpeedTest
停止网络测速