2011-08-25 72 views
0

AVFoundation Programming Guide指出捕获视频当优选像素的格式有:在iOS上捕捉视频时查询最佳像素格式?

  • 的iPhone 4:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRangekCVPixelFormatType_32BGRA
  • 为iPhone 3G:kCVPixelFormatType_422YpCbCr8kCVPixelFormatType_32BGRA

(没有建议[但是]对于iPhone 5或具有相机的iPad设备。)

然而,没有提供关于我应该如何去确定应用程序当前正在运行的设备。如果首选的像素格式在将来因此而变得与我的应用程序未知设备不同,该怎么办?

什么是确定任何设备的首选YpCbCr像素格式的正确和未来证明的方法?

回答

0

我相信你可以将视频设置设置为零,AVFoundation将使用最有效的格式。例如,而不是做

NSDictionary *videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; 
videoOutput.videoSettings = videoSettings; 

做到这一点,而不是

videoOutput.videoSettings = nil; 

你也可以尝试不设置它。我知道在过去我只是将它设置为零,除非我需要以特定格式捕捉图像。

编辑

要获得AVFoundation选择要使用的格式。

CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(source); 
CGColorSpaceRef cref = CVImageBufferGetColorSpace(imageBuffer); 
+0

是的,这将提供最有效的格式。但我想要最有效的格式是YpCbCr像素格式。目前的实施将会在iPhone 3GS和iPhone 4上产生这种效果,但它是未来的证明吗?公共API的文档没有说明, – PeyloW

+0

如果您需要检查最有效的格式,那么您可以将视频设置设置为零,然后检查CMSampledBufferRef的格式。我知道这不一定能帮助你,因为你必须知道YpCbCR格式是最有效的。 –