QNRTCSession
QNRTCSession 连麦核心类,包含连麦相关的接口
属性
muteAudio
定义
@property (nonatomic, assign, getter=isMuteAudio) BOOL muteAudio;
说明
是否使自己发布到服务器上的声音静音,在离开房间后 SDK 并不会重置该值,即会保持您上次设置的值
muteVideo
定义
@property (nonatomic, assign, getter=isMuteVideo) BOOL muteVideo;
说明
是否使自己发布到服务器上的视频黑屏,在离开房间后 SDK 并不会重置该值,即会保持您上次设置的值
muteSpeaker
定义
@property (nonatomic, assign, getter=isMuteSpeaker) BOOL muteSpeaker;
说明
是否静音本地扬声器,在离开房间后 SDK 并不会重置该值,即会保持您上次设置的值
statisticInterval
定义
@property (nonatomic, assign) NSUInteger statisticInterval;
说明
统计信息回调的时间间隔,默认为 0 秒,即默认不会回调统计信息
videoEncodeSize
定义
@property (nonatomic, assign) CGSize videoEncodeSize;
说明
设置连麦编码时的尺寸,尺寸需要小于等于预览的尺寸,默认值为 CGSizeZero,即使用预览的尺寸。
userList
定义
@property (nonatomic, strong, readonly) NSArray<NSString *> *userList;
说明
连麦房间中的用户的列表(不包含自己),连麦状态为 QNRoomStateConnected 才可获取。
publishingUserList
定义
@property (nonatomic, strong, readonly) NSArray<NSString *> *publishingUserList;
说明
连麦房间中已发布音/视频的用户的列表(不包含自己),连麦状态为 QNRoomStateConnected 才可获取。
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
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
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.5, 0.5),即中间位置,另外 (0,0) 代表左上, (1,1) 代表右下
videoZoomFactor
定义
@property (nonatomic, assign) CGFloat videoZoomFactor;
说明
视图缩放,默认为 1.0,设置的数值需要小于等于 videoActiveForat.videoMaxZoomFactor,如果大于会设置失败。
torchOn
定义
@property (nonatomic, assign, getter=isTorchOn) BOOL torchOn;
说明
手机手电筒的开关,默认为 NO,即不开启
方法
initWithCaptureEnabled:
定义
- (instancetype)initWithCaptureEnabled:(BOOL)captureEnabled;
说明
初始化 QNRTCSession 实例
参数
| 参数名 | 描述 |
|---|---|
| captureEnabled | 是否使用 SDK 内部的音视频采集模块 |
setMinBitrateBps:maxBitrateBps:
定义
- (void)setMinBitrateBps:(NSUInteger)minBitrateBps
maxBitrateBps:(NSUInteger)maxBitrateBps;
说明
设置连麦的最高及最低码率,设置相应的值后,在网络带宽变小导致发送缓冲区数据持续增长时,SDK 内部将适当降低连麦码率直至设置的最低值;反之,当一段时间内网络带宽充裕,SDK 内部将适当增加码率,达到最高值。 注意:网络较差的情况下,若设置最低码率值过高,将严重影响连麦的质量,故建议适当设置最低码率值
参数
| 状态 | 说明 |
|---|---|
| minBitrateBps | 最小码率 |
| maxBitrateBps | 最大码率 |
joinRoomWithToken
定义
- (void)joinRoomWithToken:(NSString *)token;
说明
加入房间
参数
| 参数名 | 描述 |
|---|---|
| token | 需要 App 从 App Server 中获取,包含 appId、roomToken、userId 等信息 |
publishWithAudioEnabled:videoEnabled:
定义
- (void)publishWithAudioEnabled:(BOOL)audioEnabled
videoEnabled:(BOOL)videoEnabled;
说明
发布自己的音/视频到服务器中
参数
| 状态 | 说明 |
|---|---|
| audioEnabled | 音频是否可用发布 |
| videoEnabled | 视频是否可用发布 |
subscribe:
定义
- (void)subscribe:(NSString *)userId;
说明
订阅 userId 的音/视频
参数
| 状态 | 说明 |
|---|---|
| userId | 远端用户 Id |
subscribe:continuous:
定义
- (void)subscribe:(NSString *)userId continuous:(BOOL)continuous;
说明
订阅 userId 的音/视频,如果 continuous 为 YES,那么当 userId 发布流时,SDK 会自动订阅流。一直持续到取消订阅或者 userId 取消发布流为止。另外,本地用户退出房间亦会清空持续订阅的用户列表。
参数
| 状态 | 说明 |
|---|---|
| userId | 远端用户 Id |
| continuous | 是否持续订阅 |
kickoutUser:
定义
- (void)kickoutUser:(NSString *)userId;
说明
将 userId 踢出房间
参数
| 状态 | 说明 |
|---|---|
| userId | 远端用户 Id |
pushVideoSampleBuffer:
定义
- (void)pushVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer;
说明
导入 CMSampleBufferRef 格式的视频数据,仅在 captureEnabled 为 NO 时才支持导入视频数据
参数
| 状态 | 说明 |
|---|---|
| sampleBuffer | 需要导入的视频数据 |
pushPixelBuffer:
定义
- (void)pushPixelBuffer:(CVPixelBufferRef)pixelBuffer;
说明
导入 CVPixelBufferRef 格式的视频数据,仅在 captureEnabled 为 NO 时才支持导入视频数据
参数
| 状态 | 说明 |
|---|---|
| pixelBuffer | 需要导入的视频数据 |
pushAudioBuffer:
定义
- (void)pushAudioBuffer:(AudioBuffer *)audioBuffer;
说明
导入音频数据,仅在 captureEnabled 为 NO 时才支持导入音频数据。 支持的音频数据格式为:PCM 格式,48000 采样率,16 位宽,单声道
参数
| 状态 | 说明 |
|---|---|
| audioBuffer | 需要导入的音频数据 |
unsubscribe:
定义
- (void)unsubscribe:(NSString *)userId;
说明
取消发布自己的音/视频
参数
| 状态 | 说明 |
|---|---|
| userId | 远端用户 Id |
unpublish
定义
- (void)unpublish;
说明
取消发布自己的音/视频
setMergeStreamLayoutWithUserId:(NSString *)userId frame:(CGRect)frame zIndex:(NSUInteger)zIndex muted:(BOOL)muted;
说明
通过以下接口设置对应 userId 的合流参数。
- 如果仅需要合成视频,设置合适的视频参数,同时 muted 参数设置为 YES;
- 如果仅需要合成音频,将 frame.size.width 或 frame.size.height 设为 0,同时 muted 参数设置为 NO;
- 设置合流参数后,如果需要更改参数,重新调用该接口并传入修改后的参数即可。
参数
| 参数 | 说明 |
|---|---|
| userId | 本次操作对应的 userId |
| frame | 在合流画面中的大小和位置,需为整数,若 frame.size.width 或 frame.size.height 为 0,则该用户的视频不会合成到合流画面中; |
| zIndex | 在合流画面中的层次,0 在最底层 |
| muted | 音频是否静音,若 muted 为 YES,则不会合成该用户的音频 |
stopMergeStream
说明
停止合流,如果停止合流后需要重新开启合流,重新调用设置合流参数的接口即可。
leaveRoom
定义
- (void)leaveRoom;
说明
离开房间
toggleCamera
定义
- (void)toggleCamera;
说明
切换前后摄像头
setBeautifyModeOn:
定义
-(void)setBeautifyModeOn:(BOOL)beautifyModeOn;
说明
是否开启美颜
参数
| 状态 | 说明 |
|---|---|
| beautifyModeOn | 美颜开关 |
setBeautify:
定义
-(void)setBeautify:(CGFloat)beautify;
说明
设置对应 Beauty 的程度参数,范围从 0 ~ 1,0 为不美颜 注意:如果美颜不开启,设置美颜程度参数无效
参数
| 状态 | 说明 |
|---|---|
| beautify | beautify 的美颜程度 |
setWhiten:
定义
-(void)setWhiten:(CGFloat)whiten;
说明
设置对应 whiten 的程度参数,范围从 0 ~ 1,0 为不美白 注意:如果美颜不开启,设置美白程度参数无效
参数
| 状态 | 说明 |
|---|---|
| whiten | 美颜的美白程度 |
setRedden:
定义
-(void)setRedden:(CGFloat)redden;
说明
设置对应 redden 的程度参数,范围从 0 ~ 1,0 为不红润 注意:如果美颜不开启,设置红润程度参数无效
参数
| 状态 | 说明 |
|---|---|
| redden | 美颜的红润程度 |
setWaterMarkWithImage:position:
定义
-(void)setWaterMarkWithImage:(UIImage *)waterMarkImage position:(CGPoint)position;
说明
开启水印
参数
| 状态 | 说明 |
|---|---|
| waterMarkImage | 水印图片 |
| position | 水印位置 |
clearWaterMark
定义
-(void)clearWaterMark;
说明
移除水印
startCapture
定义
- (void)startCapture;
说明
开启摄像头采集
stopCapture
定义
- (void)stopCapture;
说明
关闭摄像头采集
cameraAuthorizationStatus
定义
+ (QNAuthorizationStatus)cameraAuthorizationStatus;
说明
摄像头的授权状态
microphoneAuthorizationStatus
定义
+ (QNAuthorizationStatus)microphoneAuthorizationStatus;
说明
麦克风的授权状态
requestCameraAccessWithCompletionHandler:
定义
+ (void)requestCameraAccessWithCompletionHandler:(void (^)(BOOL granted))handler;
说明
获取摄像头权限在主线程中的回调
requestMicrophoneAccessWithCompletionHandler:
定义
+ (void)requestMicrophoneAccessWithCompletionHandler:(void (^)(BOOL granted))handler;
说明
获取麦克风权限在主线程中的回调
enableFileLogging
定义
+ (void)enableFileLogging;
说明
开启文件日志,建议在 App 启动时即开启,日志文件位于 App Container/Library/Caches/Pili/Logs 目录下以 QNRTC+当前时间命名的目录内 注意:文件日志功能主要用于排查问题,打开文件日志功能会对性能有一定影响,上线前请记得关闭文件日志功能!
versionInfo
定义
+ (NSString *)versionInfo;
说明
获取 SDK 的版本信息