QNRTCEngine
QNRTCEngine
为建立音视频通话的核心类,包含房间管理、发布订阅等接口。
属性
roomState
定义
@property (nonatomic, assign, readonly) QNRoomState roomState;
说明
房间的状态,当房间状态变更时会通过 - (void)RTCEngine:(QNRTCEngine *)engine roomStateDidChange:(QNRoomState)roomState;
方法回调。
delegate
定义
@property (nonatomic, weak) id<QNRTCEngineDelegate> delegate;
说明
状态回调的 delegate。
autoSubscribe
定义
@property (nonatomic, assign) BOOL autoSubscribe;
说明
是否自动订阅远端的流,默认为 YES。
muteSpeaker
定义
@property (nonatomic, assign, getter=isMuteSpeaker) BOOL muteSpeaker;
说明
是否静音远端的声音,默认为 NO。设置为 YES 后,本地不会输出远端用户的声音。该值跟房间状态无关,在离开房间后 SDK 并不会重置该值,即会保持您上次设置的值。
statisticInterval
定义
@property (nonatomic, assign) NSUInteger statisticInterval;
说明
统计信息回调的时间间隔,单位为秒。默认为 0,即默认不会回调统计信息。
userList
定义
@property (nonatomic, strong, readonly) NSArray<NSString *> *userList;
说明
连麦房间中的用户的列表。该列表不包含自己。当房间状态为 QNRoomStateConnected
或 QNRoomStateReconnected
才可获取。
audioEngine
定义
@property (nonatomic, strong, readonly) QNAudioEngine *audioEngine;
说明
混音的管理类,获取后可以通过其接口来设置音频文件地址,并做开启/关闭混音等操作。
captureSession
定义
@property (nonatomic, readonly) AVCaptureSession * _Nullable captureSession;
说明
视频采集 session,只读变量,给有特殊需求的开发者使用,最好不要修改。
videoCaptureDeviceInput
定义
@property (nonatomic, readonly) AVCaptureDeviceInput * _Nullable videoCaptureDeviceInput;
说明
视频采集输入源,只读变量,给有特殊需求的开发者使用,最好不要修改。
previewView
定义
@property (nonatomic, strong, readonly) UIView *previewView;
说明
摄像头的预览视图,调用 startCapture 后才会有画面。
fillMode
定义
@property(readwrite, nonatomic) QNVideoFillModeType fillMode;
说明
previewView 中视频的填充方式,默认为PLVideoFillModePreserveAspectRatioAndFill
captureDevicePosition
定义
@property (nonatomic, assign) AVCaptureDevicePosition captureDevicePosition;
说明
摄像头采集方向,默认为 AVCaptureDevicePositionFront。
videoOrientation
定义
@property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation;
说明
开启 camera 时的采集摄像头的旋转方向,默认为 AVCaptureVideoOrientationPortrait。
torchOn
定义
@property (nonatomic, assign, getter=isTorchOn) BOOL torchOn;
说明
手机手电筒的开关,默认为 NO,即不开启。
continuousAutofocusEnable
定义
@property (nonatomic, assign, getter=isContinuousAutofocusEnable) BOOL continuousAutofocusEnable;
说明
连续自动对焦,默认开启。
touchToFocusEnable
定义
@property (nonatomic, assign, getter=isTouchToFocusEnable) BOOL touchToFocusEnable;
说明
手动点击屏幕进行对焦,默认开启。
smoothAutoFocusEnabled
定义
@property (nonatomic, assign, getter=isSmoothAutoFocusEnabled) BOOL smoothAutoFocusEnabled;
说明
适用于视频拍摄过程中用来减缓因自动对焦产生的镜头伸缩,使画面不因快速的对焦而产生抖动感,默认开启。
focusPointOfInterest
定义
@property (nonatomic, assign) CGPoint focusPointOfInterest;
说明
聚焦的位置,(0,0) 代表左上, (1,1) 代表右下。默认为 (0.5, 0.5),即中间位置。
videoZoomFactor
定义
@property (nonatomic, assign) CGFloat videoZoomFactor;
说明
控制摄像头的缩放,默认为 1.0,设置的数值需要小于等于 videoActiveForat.videoMaxZoomFactor,如果大于会设置失败。
videoFormats
定义
@property (nonatomic, strong, readonly) NSArray<AVCaptureDeviceFormat *> *videoFormats;
说明
设备支持的 formats。
videoActiveFormat
定义
@property (nonatomic, strong) AVCaptureDeviceFormat *videoActiveFormat;
说明
设备当前的 format。
sessionPreset
定义
@property (nonatomic, copy) NSString *sessionPreset;
说明
采集的视频的分辨率,默认为 AVCaptureSessionPreset640x480。
videoFrameRate
定义
@property (nonatomic, assign) NSUInteger videoFrameRate;
说明
采集的视频数据的帧率,默认为 24。
previewMirrorFrontFacing
定义
@property (nonatomic, assign) BOOL previewMirrorFrontFacing;
说明
前置摄像头预览是否开启镜像,默认为 YES。
previewMirrorRearFacing
定义
@property (nonatomic, assign) BOOL previewMirrorRearFacing;
说明
后置摄像头预览是否开启镜像,默认为 NO。
encodeMirrorFrontFacing
定义
@property (nonatomic, assign) BOOL encodeMirrorFrontFacing;
说明
前置摄像头,对方观看时是否开启镜像,默认 NO。
encodeMirrorRearFacing
定义
@property (nonatomic, assign) BOOL encodeMirrorRearFacing;
说明
后置摄像头,对方观看时是否开启镜像,默认 NO。
screenRecorderFrameRate
定义
@property (nonatomic, assign) NSUInteger screenRecorderFrameRate;
说明
屏幕录制的帧率,默认值为 20,可设置 [10, 60] 之间的值,超出范围则不变更。该值仅为期望值,受 ReplayKit
的限制,在特定情况(比如画面保持不动)下,ReplayKit
可能隔几秒才会回调一帧数据。
方法
initWithConfiguration:
定义
- (instancetype)initWithConfiguration:(QNRTCConfiguration *)configuration;
参数
参数名 | 描述 |
---|---|
configuration | 用于初始化 engine 的配置类,不能为空 |
说明
用一个 configuration 来初始化 engine。
joinRoomWithToken:
定义
- (void)joinRoomWithToken:(NSString *)token;
参数
参数名 | 描述 |
---|---|
token | 需要 App 从 App Server 中获取,包含 appId、roomToken、userId 等信息 |
说明
加入房间。
joinRoomWithToken:userData:
定义
- (void)joinRoomWithToken:(NSString *)token
userData:(nullable NSString *)userData;
参数
参数名 | 描述 |
---|---|
token | 需要 App 从 App Server 中获取,包含 appId、roomToken、userId 等信息 |
userData | SDK 可将 userData 传给房间中的其它用户,如无需求可置为 nil |
说明
加入房间。
leaveRoom
定义
- (void)leaveRoom;
说明
离开房间。
setExternalAudioSourceEnabled:
定义
- (void)setExternalAudioSourceEnabled:(BOOL)enabled;
参数
参数名 | 描述 |
---|---|
enabled | 是否使用外部导入的音频数据发布 |
说明
是否使用外部导入的音频数据,需要在发布音频 Track 之前设置。
publish
定义
- (void)publish;
说明
发布一路音频和视频。需要加入房间成功后且不处于重连状态才可以发布音视频。调用该接口后,SDK 会默认创建一个音频 QNTrackInfo
和一个视频 QNTrackInfo
并发布,其中 master
属性均被置为 YES
,master 属性含义可查阅 Track 介绍一节。
publishAudio
定义
- (void)publishAudio;
说明
发布本地的音频到服务器。需要加入房间成功后且不处于重连状态才可以发布音频。调用该接口后,SDK 会默认创建一个音频 QNTrackInfo
并发布,其中 master 属性会置为 YES,其中 master
属性会被置为 YES
,master
属性含义可查阅 Track 介绍一节。
publishVideo
定义
- (void)publishVideo;
说明
发布本地的视频到服务器。需要加入房间成功后且不处于重连状态才可以发布视频。调用该接口后,SDK 会默认创建一个视频 QNTrackInfo
并发布,其中 master 属性会置为 YES,其中 master
属性会被置为 YES
,master
属性含义可查阅 Track 介绍一节。
publishTracks:
定义
- (void)publishTracks:(NSArray<QNTrackInfo *> *)tracks;
参数
状态 | 说明 |
---|---|
tracks | 定义需要发布的 track 的参数配置 |
说明
发布由 tracks 定义的音/视频到服务器。需要加入房间成功后且不处于重连状态才可以发布视频。
unpublish
定义
- (void)unpublish;
说明
取消发布本地的音视频。该接口会取消发布 master 属性为 YES 的 Track,master
属性含义可查阅 Track 介绍一节。
unpublishAudio
定义
- (void)unpublishAudio;
说明
取消发布本地的音频。该接口会取消发布 master 属性为 YES 的音频 Track,master
属性含义可查阅 Track 介绍一节。
unpublishVideo
定义
- (void)unpublishAudio;
说明
取消发布本地的视频。该接口会取消发布 master 属性为 YES 的视频 Track,master
属性含义可查阅 Track 介绍一节。
unpublishTracks:
定义
- (void)unpublishTracks:(NSArray<QNTrackInfo *> *)tracks;
参数
状态 | 说明 |
---|---|
tracks | 定义需要取消发布的 tracks |
说明
取消发布由 tracks 定义的音/视频。QNTrackInfo 中只需要设置需要取消发布的 trackId 即可,其它参数可忽略。
muteAudio:
定义
- (void)muteAudio:(BOOL)muted;
参数
状态 | 说明 |
---|---|
muted | 需要设置的 mute 状态 |
说明
将本地音频置为 muted 状态,需要发布成功后才可以执行 mute 操作。该接口只会操作标识为 master 的音频 Track,master
属性含义可查阅 Track 介绍一节。
muteVideo:
定义
- (void)muteVideo:(BOOL)muted;
参数
状态 | 说明 |
---|---|
muted | 需要设置的 mute 状态 |
说明
将本地音频置为 muted 状态,需要发布成功后才可以执行 mute 操作。该接口只会操作标识为 master 的视频 Track,master
属性含义可查阅 Track 介绍一节。
muteTracks:
定义
- (void)muteTracks:(NSArray<QNTrackInfo *> *)tracks;
参数
状态 | 说明 |
---|---|
tracks | 设置需要操作的 trackId 和 mute 状态 |
说明
将本地音/视频 Track 置为 muted 状态。需要发布成功后才可以执行 mute 操作。将需要操作的 trackId 及 muted 状态设置到 QNTrackInfo
中并传入即可,QNTrackInfo
其它参数可忽略。
pushVideoSampleBuffer:
定义
- (void)pushVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer;
参数
状态 | 说明 |
---|---|
sampleBuffer | 需要导入的视频数据 |
说明
调用此接口将把数据导入给所有 sourceType
为 QNRTCSourceTypeExternalVideo
的视频 Track。支持导入的视频数据格式为:kCVPixelFormatType_32BGRA
、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
。
pushVideoSampleBuffer:trackId:
定义
- (void)pushVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer trackId:(nullable NSString *)trackId;
参数
状态 | 说明 |
---|---|
sampleBuffer | 需要导入的视频数据 |
trackId | 导入视频对应的 trackId |
说明
调用此接口将把数据导入给指定 trackId
的视频 Track。若 trackId
为 nil
,将把数据导入给所有 sourceType
为 QNRTCSourceTypeExternalVideo
的视频 Track。支持导入的视频数据格式为:kCVPixelFormatType_32BGRA
、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
。
pushPixelBuffer:
定义
- (void)pushPixelBuffer:(CVPixelBufferRef)pixelBuffer;
参数
状态 | 说明 |
---|---|
pixelBuffer | 需要导入的视频数据 |
说明
调用此接口将把数据导入给所有 sourceType
为 QNRTCSourceTypeExternalVideo
的视频 Track。支持导入的视频数据格式为:kCVPixelFormatType_32BGRA
、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
。
pushPixelBuffer:trackId:
定义
- (void)pushPixelBuffer:(CVPixelBufferRef)pixelBuffer trackId:(nullable NSString *)trackId;
参数
状态 | 说明 |
---|---|
pixelBuffer | 需要导入的视频数据 |
trackId | 导入视频对应的 trackId |
说明
调用此接口将把数据导入给指定 trackId
的视频 Track。若 trackId
为 nil
,将把数据导入给所有 sourceType
为 QNRTCSourceTypeExternalVideo
的视频 Track。支持导入的视频数据格式为:kCVPixelFormatType_32BGRA
、kCVPixelFormatType_420YpCbCr8BiPlanarFullRange
和 kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
。
pushAudioBuffer:
定义
- (void)pushAudioBuffer:(AudioBuffer *)audioBuffer;
参数
状态 | 说明 |
---|---|
audioBuffer | 需要导入的音频数据 |
说明
仅在调用 - (void)setExternalAudioSourceEnabled:(BOOL)enabled;
并传入 YES 后才有效。
支持的音频数据格式为:PCM 格式,48000 采样率,16 位宽,单声道。
subscribeTracks:
定义
- (void)subscribeTracks:(NSArray<QNTrackInfo *> *)tracks;
参数
状态 | 说明 |
---|---|
tracks | 需要订阅的 tracks |
说明
订阅由 QNTrackInfo 中的 trackId 指定的一组 Track。此处 QNTrackInfo 只须设置 trackId,其它参数可忽略。
unsubscribeTracks:
定义
- (void)unsubscribeTracks:(NSArray<QNTrackInfo *> *)tracks;
参数
状态 | 说明 |
---|---|
tracks | 需要取消订阅的 tracks |
说明
取消订阅由 QNTrackInfo 中的 trackId 指定的一组 Track。此处 QNTrackInfo 只须设置 trackId,其它参数可忽略。
kickoutUser:
定义
- (void)kickoutUser:(NSString *)userId;
参数
状态 | 说明 |
---|---|
userId | 远端用户 Id |
说明
将 userId 踢出房间。
renderViewOfLocalTrackWithTrackId:
定义
- (QNVideoView *)renderViewOfLocalTrackWithTrackId:(NSString *)trackId;
参数
状态 | 说明 |
---|---|
trackId | 需要获取渲染 View 的 trackId |
说明
获取本地发布的视频 Track 的渲染 View。供外部导入视频数据的 Track 使用。如果 Track 使用的是 SDK 采集的摄像头数据,推荐使用 previewView
属性获取本地摄像头的渲染 View。
setDefaultOutputAudioPortToSpeaker:
定义
- (void)setDefaultOutputAudioPortToSpeaker:(BOOL)defaultToSpeaker;
参数
状态 | 说明 |
---|---|
defaultToSpeaker | 是否将音频默认输出设备设为 Speaker |
说明
默认为 YES,即如果不调用该接口,则声音会默认从扬声器输出,设为 NO 时,声音会从听筒输出。无论设置何值,当连接上外置音频设备时,声音会优先从外置音频设备输出。当外置音频设备移除时,会使用默认输出设备。需要在加入房间前调用,否则无效。
setSpeakerOn:
定义
- (void)setSpeakerOn:(BOOL)speakerOn;
参数
状态 | 说明 |
---|---|
speakerOn | 是否将声音从扬声器输出 |
说明
传入 YES 时,强制声音从扬声器输出。由于系统原因,在某些设备(如 iPhone XS Max、iPhone 8 Plus)上,连接 AirPods 后无法通过该接口将声音强制设为扬声器输出。如有需求,可以通过使用 AVRoutePickerView 来切换。
createMergeStreamJobWithConfiguration:
定义
- (void)createMergeStreamJobWithConfiguration:(QNMergeStreamConfiguration *)configuration;
参数
状态 | 说明 |
---|---|
configuration | 合流任务的具体配置 |
说明
创建合流任务。创建合流任务不是必需的。合流时,如果未提前创建合流任务,那么会使用对应的应用的合流参数创建一个默认的合流任务。该接口为异步接口,创建成功后,会通过 - (void)RTCEngine:(QNRTCEngine *)engine didCreateMergeStreamWithJobId:(NSString *)jobId;
接口回调通知。
setMergeStreamLayouts:jobId:
定义
- (void)setMergeStreamLayouts:(NSArray <QNMergeStreamLayout *> *)layouts
jobId:(nullable NSString *)jobId;
参数
参数 | 说明 |
---|---|
layouts | 本次操作对应的 trackId 及其布局 |
jobId | 本次所要操作的 jobId |
说明
将对应的音视频 Track 加入合流。需要更新合流布局时,重新调用该接口即可。若使用默认的合流任务,则 jobId
传入 nil
即可。
removeMergeStreamLayouts:jobId:
定义
- (void)removeMergeStreamLayouts:(NSArray <QNMergeStreamLayout *> *)layouts
jobId:(nullable NSString *)jobId;
参数
参数 | 说明 |
---|---|
layouts | 本次操作对应的 layouts |
jobId | 本次所要操作的 jobId |
说明
将对应的音视频 Track 从合流中移除。此处 QNMergeStreamLayout
中只需要设置 trackId
即可,其它参数可忽略。若使用默认的合流任务,则 jobId
传入 nil
即可。
stopMergeStreamWithJobId:
定义
- (void)stopMergeStreamWithJobId:(nullable NSString *)jobId;
参数
参数 | 说明 |
---|---|
jobId | 本次所要操作的 jobId |
说明
停止合流。若使用默认的合流任务,则 jobId 传入 nil 即可。
toggleCamera
定义
- (void)toggleCamera;
说明
切换前后摄像头。
setBeautifyModeOn:
定义
-(void)setBeautifyModeOn:(BOOL)beautifyModeOn;
参数
状态 | 说明 |
---|---|
beautifyModeOn | 美颜开关 |
说明
是否开启美颜。
setBeautify:
定义
-(void)setBeautify:(CGFloat)beautify;
参数
状态 | 说明 |
---|---|
beautify | beautify 的美颜程度 |
说明
设置对应 Beauty 的程度参数,范围从 0 ~ 1,0 为不美颜。
注意:如果美颜不开启,设置美颜程度参数无效。
setWhiten:
定义
-(void)setWhiten:(CGFloat)whiten;
参数
状态 | 说明 |
---|---|
whiten | 美颜的美白程度 |
说明
设置对应 whiten 的程度参数,范围从 0 ~ 1,0 为不美白。
注意:如果美颜不开启,设置美白程度参数无效。
setRedden:
定义
-(void)setRedden:(CGFloat)redden;
参数
状态 | 说明 |
---|---|
redden | 美颜的红润程度 |
说明
设置对应 redden 的程度参数,范围从 0 ~ 1,0 为不红润。
注意:如果美颜不开启,设置红润程度参数无效。
setWaterMarkWithImage:position:
定义
-(void)setWaterMarkWithImage:(UIImage *)waterMarkImage position:(CGPoint)position;
参数
状态 | 说明 |
---|---|
waterMarkImage | 水印图片 |
position | 水印位置 |
说明
设置水印。
clearWaterMark
定义
-(void)clearWaterMark;
说明
移除水印。
startCapture
定义
- (void)startCapture;
说明
开启摄像头采集。
stopCapture
定义
- (void)stopCapture;
说明
关闭摄像头采集。
cameraAuthorizationStatus
定义
+ (QNAuthorizationStatus)cameraAuthorizationStatus;
说明
摄像头的授权状态。
requestCameraAccessWithCompletionHandler:
定义
+ (void)requestCameraAccessWithCompletionHandler:(void (^)(BOOL granted))handler;
说明
获取摄像头权限在主线程中的回调。
microphoneAuthorizationStatus
定义
+ (QNAuthorizationStatus)microphoneAuthorizationStatus;
说明
麦克风的授权状态。
requestMicrophoneAccessWithCompletionHandler:
定义
+ (void)requestMicrophoneAccessWithCompletionHandler:(void (^)(BOOL granted))handler;
说明
获取麦克风权限在主线程中的回调。
isScreenRecorderAvailable
定义
+ (BOOL)isScreenRecorderAvailable;
说明
判断屏幕录制功能是否可用。
屏幕录制功能仅在 iOS 11 及以上版本可用。
enableFileLogging
定义
+ (void)enableFileLogging;
说明
开启文件日志,建议在 App 启动时即开启,日志文件位于 App Container/Library/Caches/Pili/Logs 目录下以 QNRTC+当前时间命名的目录内
注意:文件日志功能主要用于排查问题,打开文件日志功能会对性能有一定影响,上线前请记得关闭文件日志功能!
versionInfo
定义
+ (NSString *)versionInfo;
说明
获取 SDK 的版本信息。