4

我是 MAC OSX 开发的新手。我想在 OSX 10.7 上使用 AVFoundation 将视频捕获为原始帧。我不了解为相机设备设置特定的视频分辨率,不知何故我使用 VideoSettings 设置,但如果我设置为 320x240,它会以 320x176 捕获。我不明白是否有任何 API 调用不匹配。

请帮我解决这个问题。等待您的回复......提前谢谢......

问候,阿南德

4

2 回答 2

4

user692178 的回答有效。但更简洁的方法是在对象上设置kCVPixelBufferWidthKeykCVPixelBufferHeightKey选项。AVCaptureVideoDataOutput这样就不需要AVCaptureDevice lockForConfigration在开始之前通过调用来获得对设备的独占访问权限AVCaptureSession。最小样本如下。

_session = [[AVCaptureSession alloc] init];
_sessionInput = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&error];
_sessionOutput = [[AVCaptureVideoDataOutput alloc] init];

NSDictionary *pixelBufferOptions = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithDouble:width], (id)kCVPixelBufferWidthKey,
                              [NSNumber numberWithDouble:height], (id)kCVPixelBufferHeightKey,
                              [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA], (id)kCVPixelBufferPixelFormatTypeKey,
                              nil];
[_sessionOutput setVideoSettings:pixelBufferOptions];

注意:此宽度/高度将覆盖会话预设宽度/高度(如果不同)。

于 2014-05-19T05:02:48.333 回答
3

在 AVCaptureDevice 中有两个属性。格式和活动格式。format 将返回 AVCaptureDeviceFormat 的 NSArrary,其中包含 cam 公开的所有格式。您可以从此列表中选择任何一种格式并将其设置为 activeFormat。确保在通过调用 AVCaptureDevice lockForConfigration 获得对设备的独占访问权限后设置格式。设置格式后,使用 AVCaptureDevice unlockForConfigration 释放锁定。然后启动 AVCaptureSession,它将为您提供您设置的格式的视频帧。

AVCaptureFormat 是 CMFormatDescription 的包装器。CMVideoFotmatDescription 是 CMFormatDescription 的具体子类。使用 CMVideoFormatDescriptionGetDimentions() 获取设置格式的宽度和高度。使用 CMFormatDescriptionGetMediaSubType() 获取视频编解码器。对于 raw fotmats 视频编解码器主要是 yuvs 或 vuy2。对于压缩格式,它的 h264、dmb1(mjpeg) 等等。

于 2013-04-10T16:00:09.683 回答