刚刚我开始了一个与视频捕获相关的小工作,我希望视频捕获设备使用avfoundation支持所有像素格式。我正在使用CMFormatDescriptionGetMediaSubtype函数在mac(CMPixelFormatType)中获取像素格式。但我总是得到一个与任何可用的像素格式都不匹配的值(来自预定义的像素,如: kCMPixelFormat_422YpCbCr8_yuvs)。是否存在用于该目的的其他函数..我找过了,但到现在还没有找到。像素格式类型返回值始终为1684890161。
我真正想问的是:
如何让Mac中的视频捕获设备支持所有像素格式?请记住,我并不是在询问编解码器类型。我需要它的像素格式。请帮帮我..如果可能的话。
提前谢谢..
发布于 2012-12-19 19:16:10
要获取所有支持的像素格式,需要使用第二个参数CMIOObjectPropertyAddress调用CMIOObjectGetPropertyData,如下所示:
CMIOObjectPropertyAddress theAddress;
theAddress.mSelector = kCMIOStreamPropertyFormatDescriptions;
theAddress.mScope = kCMIOObjectPropertyScopeGlobal;
theAddress.mElement = 0;这将为您提供CMFormatDescriptionRef的CFArray。然后遍历此数组并调用:
CMFormatDescriptionGetMediaSubType(yourCMFormatDescriptionRef);您的CMFormatDescriptionGetMediaSubType将转换为'dmb1'的FourCharacterCode (OSType),这似乎是特定于Matrox的硬件压缩类型。
原因是,在CMPixelFormatType枚举中找不到您的格式,因为只有最常见的格式,而您的格式不是。在Mac上最常见的是kCMPixelFormat_422YpCbCr8和kCMPixelFormat_422YpCbCr10,两者都是原始的8位和10位YUV视频。
https://stackoverflow.com/questions/13950076
复制相似问题