Skip to main content

创建实例和事件回调

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 的所有用户都需要加入频道才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取频道里其他用户的音视频流。 参数 注意
  • 请您尽量保证joinChannelWithTokenleaveChannel前后配对使用,即保证“先退出前一个频道再进入下一个频道”,否则会导致很多异常问题。

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 会主动恢复可用外设,同时存在蓝牙和有线耳机时优先使用蓝牙耳机。 接口返回成功表示系统调用已受理,最终实际路由以 currentAudioRouteonAudioRouteChange: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 停止网络测速