Я работаю над приложением 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
может дать мне изображение с более высоким разрешением.Но для моего случая использования я хочу создать изображение из видеокадра.
Что я здесь не так делаю?