AVFoundation Programming Guide表示捕获视频时首选像素格式为:
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
或kCVPixelFormatType_32BGRA
kCVPixelFormatType_422YpCbCr8
或kCVPixelFormatType_32BGRA
(iPhone 5或带摄像头的iPad设备尚未推荐。)
但是我没有提供有关如何进行操作并确定该应用当前正在运行的设备的帮助。如果首选的像素格式在未来与我的app未知设备之间变得不同会怎么样?
确定任何设备的首选YpCbCr像素格式的正确且面向未来的方法是什么?
答案 0 :(得分:0)
我相信您可以将视频设置设置为nil,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);