AVCaptureSession不会使用前置摄像头读取PDF417,但可以使用后置摄像头

时间:2014-10-31 21:06:10

标签: ios objective-c avfoundation avcapturesession pdf417

我试图在前置摄像头上进行AVCaptureSession来读取PDF417条码,但它拒绝读取前置摄像头上的相同条码,它会在背面读取没问题。我是否缺少一个设置,或者是否与前置摄像头一起出现"镜像?"

我尝试使用QR码做同样的事情,它在前后摄像头上都没有问题。

_session = [[AVCaptureSession alloc] init];

NSArray *videoDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for( AVCaptureDevice *device in videoDevices )
{
    if( device.position == AVCaptureDevicePositionFront )
    {
        _device = device;
        break;
    }
}

//  couldn't find one on the front, so just get the default video device.
if( ! _device)
{
    _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
}

// _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

NSError *error = nil;

if( _device.isAutoFocusRangeRestrictionSupported )
{
    if( [_device lockForConfiguration:&error] )
    {
        [_device setAutoFocusRangeRestriction:AVCaptureAutoFocusRangeRestrictionNear];
        [_device unlockForConfiguration];
    }
}

_input = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error];
if (_input) {
    [_session addInput:_input];
} else {
    NSLog(@"Error: %@", error);
}

_output = [[AVCaptureMetadataOutput alloc] init];
[_output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[_session addOutput:_output];

// _output.metadataObjectTypes = [_output availableMetadataObjectTypes];     _output.metadataObjectTypes = @ [AVMetadataObjectTypePDF417Code];

_prevLayer = [AVCaptureVideoPreviewLayer layerWithSession:_session];
_prevLayer.frame = self.view.bounds;
_prevLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self updatePreviewLayerForOrientation:[[UIApplication sharedApplication] statusBarOrientation] ];

[self.view.layer addSublayer:_prevLayer];

[_session startRunning];

0 个答案:

没有答案