Сканирование передней камеры с использованием AVFoundation - PullRequest
0 голосов
/ 15 мая 2019

Мне нужно использовать фронтальную камеру для сканирования QRCode так же, как BackCamera. Где мне нужно поменять?

Я использую QRCoder третьей стороны https://github.com/sbhklr/QRCoder, и я настроил код в соответствии с моим требованием

Для передней камеры, использующей

let captureDevice : AVCaptureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)

Для задней камеры по умолчанию с использованием

captureDevice = AVCaptureDevice.default(for: AVMediaType.video)

LoadCamera внутри UIView

videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
        videoPreviewLayer.captureDevicePointConverted(fromLayerPoint: CGPoint(x: 0.5, y: 0.5))
        videoPreviewLayer.frame = self.previewView.bounds

    let preset = AVCaptureSession.Preset.photo

    if(captureSession.canSetSessionPreset(preset))
    {
        captureSession.sessionPreset = preset

    }

    highlightView.autoresizingMask = [.flexibleTopMargin, .flexibleLeftMargin, .flexibleRightMargin, .flexibleBottomMargin]
    highlightView.frame  = CGRect(x: self.view.frame.midX - 225, y: self.view.frame.midY - 225, width: 450, height: 450)
    view.addSubview(highlightView)

    do
    {
        deviceInput = try AVCaptureDeviceInput(device: captureDevice!)

    } catch let error as NSError
    {
        didFailWithError(error: error)
        return
    }

    if let captureInput = deviceInput
    {
        captureSession.addInput(captureInput)
    }
    else
    {
        return
    }

    captureSession.addOutput(metadataOutput)
    metadataOutput.setMetadataObjectsDelegate(self, queue: metadataObjectsQueue)
    metadataOutput.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]

QRCode прекрасно сканирует в задней камере, но в передней камере это совсем не работает ... Я много пробовал, внедряя режим фокусировки для CaptureDevice, но у меня ничего не работает? Любые решения ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...