根据https://forums.developer.apple.com/thread/21694
Both iPhone 6s and 6s Plus can capture 12 megapixel photos (4032x3024) on the rear-facing camera via the AVCaptureStillImageOutput, and can deliver up to 30 fps 12 MP frames to your process via AVCaptureVideoDataOutput. When you use AVCaptureSessionPresetPhoto as your AVCaptureSession’s -sessionPreset, the 12 megapixel ‘420f’ format is chosen by default.
所以我尝试使用以下代码:
self.captureSession.sessionPreset = AVCaptureSessionPresetPhoto;
AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
videoOutput.alwaysDiscardsLateVideoFrames = YES;
[videoOutput setSampleBufferDelegate:self queue:dispatch];
[self.captureSession addOutput:videoOutput];
我的设备的事件格式设置为:
device format: AVCaptureDeviceFormat: 0x12c684630 'vide'/'420f' 4032x3024, { 3- 30 fps}, fov:57.716, max zoom:189.00 (upscales @1.00), AF System:2, ISO:23.0-1840.0, SS:0.000013-0.333333
看起来不错。
但是,我在 captureOutput
回调中添加了以下代码:
CVPixelBufferLockBaseAddress(imageBufferRef,0);
size_t width = CVPixelBufferGetWidth(imageBufferRef);
size_t height = CVPixelBufferGetHeight(imageBufferRef);
CVPixelBufferUnlockBaseAddress(imageBufferRef,0);
NSLog(@"ImageCameraSource:\n width:%zu\n height:%zu\n", width, height);
然后输出
ImageCameraSource: width:1000 height:750
为什么回调中的分辨率不是4032x3024?
尝试使用 AVCaptureSessionPreset3840x2160
实时获取最高分辨率的帧
self.captureSession.sessionPreset = AVCaptureSessionPreset3840x2160;
AVCaptureVideoDataOutput* videoOutput = [[AVCaptureVideoDataOutput alloc] init];
videoOutput.alwaysDiscardsLateVideoFrames = YES;
[videoOutput setSampleBufferDelegate:self queue:dispatch];
[self.captureSession addOutput:videoOutput];
关于IOS Capture 12 MP Video (iPhone 6s) 产生 1000x750,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996797/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |