摄像头
RCRTCCameraOutputStream 对象中提供了摄像头的管理方法。
您不能自己创建 RCRTCCameraOutputStream 对象。请在 IM 连接成功后调用 RCRTCEngine 中的 defaultVideoStream 属性获取 RCRTCCameraOutputStream 对象。
打开摄像头
您可以使用 startCapture 方法打开摄像头。
接口原型
- (void)startCapture;
代码示例
[[RCRTCEngine sharedInstance].defaultVideoStream startCapture];
关闭摄像头
您可以使用 stopCapture 方法关闭摄像头。
接口原型
- (void)stopCapture;
代码示例
[[RCRTCEngine sharedInstance].defaultVideoStream stopCapture];
切换摄像头
您可以使用 switchCamera 方法切换采集摄像头。
接口原型
- (void)switchCamera;
代码示例
[[RCRTCEngine sharedInstance].defaultVideoStream switchCamera];
选择摄像头
您可以通过设置 cameraPosition 属性选择摄像头。
接口原型
@property (nonatomic, assign) RCRTCDeviceCamera cameraPosition;
代码示例
// 选择前置摄像头
[RCRTCEngine sharedInstance].defaultVideoStream.cameraPosition = RCRTCCaptureDeviceFront;
// 选择后置摄像头
[RCRTCEngine sharedInstance].defaultVideoStream.cameraPosition = RCRTCCaptureDeviceBack;
手动对焦
您可以使用 isCameraFocusSupported 方法判断摄像头是否支持区域对焦;如果支持,可以调用 setCameraFocusPositionInPreview 传入对焦点的坐标来设置对焦区域,坐标原点在屏幕的左上角。
接口原型
// 判断是否支持对焦
- (BOOL)isCameraFocusSupported;
// 设置对焦点
- (BOOL)setCameraFocusPositionInPreview:(CGPoint)point;
代码示例
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraFocusSupported]) {
CGPoint focusPoint = CGPointMake(100, 100);
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraFocusPositionInPreview:focusPoint];
}
区域测光
您可以使用 isCameraExposurePositionSupported 方法判断设备是否支持区域测光;如果支持,可以调用 setCameraExposurePositionInPreview 设置测光点,坐标原点为视频区域的左上角。
接口原型
// 判断是否支持区域测光
- (BOOL)isCameraExposurePositionSupported;
// 设置测光点
- (BOOL)setCameraExposurePositionInPreview:(CGPoint)point;
代码示例
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraExposurePositionSupported]) {
CGPoint exposurePoint = CGPointMake(100, 100);
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraExposurePositionInPreview:exposurePoint];
}
闪光灯
您可以使用 isCameraTorchSupported 方法判断摄像头是否支持闪光灯;如果支持,可调用 enableCameraTorch 控制闪光灯的开启和关闭。
接口原型
// 判断是否支持闪光灯
- (BOOL)isCameraTorchSupported;
// 控制闪光灯开关
- (BOOL)enableCameraTorch:(BOOL)enable;
代码示例
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraTorchSupported]) {
// 打开闪光灯
[[RCRTCEngine sharedInstance].defaultVideoStream enableCameraTorch:YES];
// 关闭闪光灯
[[RCRTCEngine sharedInstance].defaultVideoStream enableCameraTorch:NO];
}
缩放比例
您可以使用 isCameraZoomSupported 方法判断摄像头是否支持缩放;如果支持,可以调用 getCameraMaxZoomFactor 获取最大缩放比例,调用 setCameraZoomFactor 设置缩放比例。
接口原型
// 判断是否支持缩放
- (BOOL)isCameraZoomSupported;
// 获取最大缩放比例
- (float)getCameraMaxZoomFactor;
// 设置缩放比例
- (BOOL)setCameraZoomFactor:(float)zoomFactor;
代码示例
if ([[RCRTCEngine sharedInstance].defaultVideoStream isCameraZoomSupported]) {
// 获取最大缩放比例
float maxZoom = [[RCRTCEngine sharedInstance].defaultVideoStream getCameraMaxZoomFactor];
// 设置摄像头缩放比例
[[RCRTCEngine sharedInstance].defaultVideoStream setCameraZoomFactor:2.0];
}
视频采集方向
您可以通过设置 videoOrientation 属性调整摄像头的采集方向,默认值为 AVCaptureVideoOrientationPortrait。
接口原型
@property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation;
代码示例
// 设置为竖屏方向
[RCRTCEngine sharedInstance].defaultVideoStream.videoOrientation = AVCaptureVideoOrientationPortrait;
// 设置为横屏方向
[RCRTCEngine sharedInstance].defaultVideoStream.videoOrientation = AVCaptureVideoOrientationLandscapeLeft;
采集镜像
您可以通过设置 isCaptureMirror 属性可以控制摄像头是否镜像采集,前置摄像头默认镜像采集,后置摄像头默认非镜像采集。
接口原型
@property (nonatomic, assign) BOOL isCaptureMirror;
代码示例
// 关闭镜像
[RCRTCEngine sharedInstance].defaultVideoStream.isCaptureMirror = NO;
// 开启镜像
[RCRTCEngine sharedInstance].defaultVideoStream.isCaptureMirror = YES;