Ios AVCaptureDevice可以';背摄相机
我正试图将iphone的后置摄像头与Ios AVCaptureDevice可以';背摄相机,ios,avcapturedevice,Ios,Avcapturedevice,我正试图将iphone的后置摄像头与AVCaptureDevice配合使用。我尝试了AVCaptureDevicePositionBack和AVCaptureDevicePositionFront两种方法,但无论如何,它仍然使用前置摄像头 这是我的代码: - (void)setupCamera { _captureDevice = nil; NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeV
AVCaptureDevice
配合使用。我尝试了AVCaptureDevicePositionBack
和AVCaptureDevicePositionFront
两种方法,但无论如何,它仍然使用前置摄像头
这是我的代码:
- (void)setupCamera
{
_captureDevice = nil;
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices)
{
if (device.position == AVCaptureDevicePositionBack)
{
_captureDevice = device;
break;
}
}
}
- (void)turnCameraOn
{
NSError *error;
_session = [[AVCaptureSession alloc] init];
[_session beginConfiguration];
[_session setSessionPreset:AVCaptureSessionPresetMedium];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:_captureDevice error:&error];
if (input == nil)
NSLog(@"%@", error);
[_session addInput:input];
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[output setSampleBufferDelegate:self queue:dispatch_queue_create("myQueue", NULL)];
output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey:@(kCVPixelFormatType_32BGRA)};
output.alwaysDiscardsLateVideoFrames = YES;
[_session addOutput:output];
[_session commitConfiguration];
[_session startRunning];
}
- (void)turnCameraOff
{
[_session stopRunning];
_session = nil;
}
使用以下代码:
AVCaptureDevicePosition desiredPosition;
if (isUsingFrontFacingCamera)
desiredPosition = AVCaptureDevicePositionBack;
else
desiredPosition = AVCaptureDevicePositionFront;
for (AVCaptureDevice *d in [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]) {
if ([d position] == desiredPosition) {
[[captureVideoPreviewLayer session] beginConfiguration];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:d error:nil];
for (AVCaptureInput *oldInput in [[captureVideoPreviewLayer session] inputs]) {
[[captureVideoPreviewLayer session] removeInput:oldInput];
}
[[captureVideoPreviewLayer session] addInput:input];
[[captureVideoPreviewLayer session] commitConfiguration];
break;
}
}
你确定叫setpuCamera吗?您是否尝试在AVCaptureDeviceInput实例化后停止调试器并查看其类型?请尝试使用
\u captureDevice=[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]代码>