Почему AVCaptureVideoDataOutput не дает мне поддерживаемый кадр с самым высоким разрешением? - PullRequest
0 голосов
/ 21 декабря 2018

Я работаю над приложением iOS, которое использует камеру.Я использую AVCaptureVideoDataOutput метод делегата для получения видео кадра.Я всегда получаю видеокадр с 1920 * 1080 независимо от того, какое устройство я использую - iPhone X.

Я использую AVCaptureSession.Preset.high

Вот мой код, отсекаемый

func captureOutput(_ captureOutput: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    let ciImage = CIImage(cvPixelBuffer: CMSampleBufferGetImageBuffer(sampleBuffer))
    let image = UIImage(ciImage: ciImage)
   }

Когда я делаю

    let device = AVCaptureDevice.devices(for: AVMediaType.video).first {
        ($0 as AVCaptureDevice).position == AVCaptureDevice.Position.back
    }

    print("resolutions supported:: \(String(describing: device?.activeFormat.highResolutionStillImageDimensions)))")

Это всегда дает мне 3840 * 2160 для iPhone x, который имеет 12 мегапикселей

Я ожидаю такого же видеокадра с максимально возможным разрешением через AVCaptureVideoDataOutput.

Я пытался использовать AVCaptureSession.Preset.photo, это также не дает мне высокое разрешение.

Я пытался AVCaptureSession.Preset.hd4K3840x2160, который дает мне ожидаемое разрешение для кадра, но он может не работать со старым iPhone???

Я знаю, AVCapturePhotoOutput может дать мне изображение с более высоким разрешением.Но для моего случая использования я хочу создать изображение из видеокадра.

Что я здесь не так делаю?

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