我正在使用相机的iOS应用程序上工作。我正在使用AVCaptureVideoDataOutput
委托方法来获取视频帧。无论我使用的设备是iPhone X,我总是使用1920 * 1080
获取视频帧。
我正在使用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
买到拥有12兆像素的iPhone x
我希望通过AVCaptureVideoDataOutput
获得同一种分辨率最高的视频帧。
我尝试使用AVCaptureSession.Preset.photo
,但它也无法提供高分辨率。
我确实尝试过AVCaptureSession.Preset.hd4K3840x2160
,该方法可以为我提供预期的帧分辨率,但可能不适用于旧版iPhone?
我知道AVCapturePhotoOutput
可以为我提供更高分辨率的图像。但是对于我的用例,我想从视频帧创建图像。
我在这里做错了什么?
答案 0 :(得分:0)
我同意@adamfowlerphoto。为什么需要检查然后应用4K视频预设的答案是该功能根据硬件规格而定。例如,如果您的旧手机没有足够好的高分辨率传感器或镜头,则无法使用它; hd4K3840x2160