跳到主要内容

摄像头

RCRTCCameraOutputStream 对象中提供了摄像头的管理方法。

您不能自己创建 RCRTCCameraOutputStream 对象。请在 IM 连接成功后调用 RCRTCEngine 中的 defaultVideoStream 属性获取 RCRTCCameraOutputStream 对象。

打开摄像头

您可以使用 startCapture 方法打开摄像头。

接口原型

Objective C
- (void)startCapture;

代码示例

Objective C
[[RCRTCEngine sharedInstance].defaultVideoStream startCapture];

关闭摄像头

您可以使用 stopCapture 方法关闭摄像头。

接口原型

Objective C
- (void)stopCapture;

代码示例

Objective C
[[RCRTCEngine sharedInstance].defaultVideoStream stopCapture];

切换摄像头

您可以使用 switchCamera 方法切换采集摄像头。

接口原型

Objective C
- (void)switchCamera;

代码示例

Objective C
[[RCRTCEngine sharedInstance].defaultVideoStream switchCamera];

选择摄像头

您可以通过设置 cameraPosition 属性选择摄像头。

接口原型

Objective C
@property (nonatomic, assign) RCRTCDeviceCamera cameraPosition;

代码示例

Objective C
// 选择前置摄像头
[RCRTCEngine sharedInstance].defaultVideoStream.cameraPosition = RCRTCCaptureDeviceFront;
// 选择后置摄像头
[RCRTCEngine sharedInstance].defaultVideoStream.cameraPosition = RCRTCCaptureDeviceBack;

手动对焦

您可以使用 isCameraFocusSupported 方法判断摄像头是否支持区域对焦;如果支持,可以调用 setCameraFocusPositionInPreview 传入对焦点的坐标来设置对焦区域,坐标原点在屏幕的左上角。

接口原型

Objective C
// 判断是否支持对焦
- (BOOL)isCameraFocusSupported;
// 设置对焦点
- (BOOL)setCameraFocusPositionInPreview:(CGPoint)point;

代码示例

Objective C
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraFocusSupported]) {
CGPoint focusPoint = CGPointMake(100, 100);
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraFocusPositionInPreview:focusPoint];
}

区域测光

您可以使用 isCameraExposurePositionSupported 方法判断设备是否支持区域测光;如果支持,可以调用 setCameraExposurePositionInPreview 设置测光点,坐标原点为视频区域的左上角。

接口原型

Objective C
// 判断是否支持区域测光
- (BOOL)isCameraExposurePositionSupported;
// 设置测光点
- (BOOL)setCameraExposurePositionInPreview:(CGPoint)point;

代码示例

Objective C
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraExposurePositionSupported]) {
CGPoint exposurePoint = CGPointMake(100, 100);
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraExposurePositionInPreview:exposurePoint];
}

闪光灯

您可以使用 isCameraTorchSupported 方法判断摄像头是否支持闪光灯;如果支持,可调用 enableCameraTorch 控制闪光灯的开启和关闭。

接口原型

Objective C
// 判断是否支持闪光灯
- (BOOL)isCameraTorchSupported;
// 控制闪光灯开关
- (BOOL)enableCameraTorch:(BOOL)enable;

代码示例

Objective C
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraTorchSupported]) {
// 打开闪光灯
[[RCRTCEngine sharedInstance].defaultVideoStream enableCameraTorch:YES];
// 关闭闪光灯
[[RCRTCEngine sharedInstance].defaultVideoStream enableCameraTorch:NO];
}

缩放比例

您可以使用 isCameraZoomSupported 方法判断摄像头是否支持缩放;如果支持,可以调用 getCameraMaxZoomFactor 获取最大缩放比例,调用 setCameraZoomFactor 设置缩放比例。

接口原型

Objective C
// 判断是否支持缩放
- (BOOL)isCameraZoomSupported;
// 获取最大缩放比例
- (float)getCameraMaxZoomFactor;
// 设置缩放比例
- (BOOL)setCameraZoomFactor:(float)zoomFactor;

代码示例

Objective C
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraZoomSupported]) {
// 获取最大缩放比例
float maxZoom = [[RCRTCEngine sharedInstance].defaultVideoStream getCameraMaxZoomFactor];
// 设置摄像头缩放比例
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraZoomFactor:2.0];
}

视频采集方向

您可以通过设置 videoOrientation 属性调整摄像头的采集方向,默认值为 AVCaptureVideoOrientationPortrait

接口原型

Objective C
@property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation;

代码示例

Objective C
// 设置为竖屏方向
[RCRTCEngine sharedInstance].defaultVideoStream.videoOrientation = AVCaptureVideoOrientationPortrait;
// 设置为横屏方向
[RCRTCEngine sharedInstance].defaultVideoStream.videoOrientation = AVCaptureVideoOrientationLandscapeLeft;

采集镜像

您可以通过设置 isCaptureMirror 属性可以控制摄像头是否镜像采集,前置摄像头默认镜像采集,后置摄像头默认非镜像采集。

接口原型

Objective C
@property (nonatomic, assign) BOOL isCaptureMirror;

代码示例

Objective C
// 关闭镜像
[RCRTCEngine sharedInstance].defaultVideoStream.isCaptureMirror = NO;
// 开启镜像
[RCRTCEngine sharedInstance].defaultVideoStream.isCaptureMirror = YES;