0

フロントカメラで 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];
4

0 に答える 0