获取AvCaptureVideoDataOutput可用的实际NSStringVideoCVPixelFormatTypes

我正试图find一个AVFoundation输出接受的格式:

self.theOutput=[[AVCaptureVideoDataOutput alloc]init]; if ([self.theSession canAddOutput:self.theOutput]) [self.theSession addOutput:self.theOutput]; 

然后,我在之后插入一个断点:

 po [self.theOutput availableVideoCVPixelFormatTypes] 

我得到这个:

 (NSArray *) $5 = 0x2087ad00 <__NSArrayM 0x2087ad00>( 875704438, 875704422, 1111970369 ) 

我如何获得这些格式types的string值?

谢谢

在运行iOS6的iPhone5上,以下是AVCaptureVideoDataOuput availableVideoCVPixelFormatTypes:

kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange

kCVPixelFormatType_420YpCbCr8BiPlanarFullRange

kCVPixelFormatType_32BGRA

信贷到期的信贷,我find了一种方法来获得在这里支持的价值。 https://gist.github.com/2327666

用于debugging的类别版本

作为NSNumber的一个类别

 #import <CoreVideo/CoreVideo.h> @implementation NSNumber (CVPixelFormatType) - (NSString *)descriptivePixelFormat { return @{ @(kCVPixelFormatType_1Monochrome): @"kCVPixelFormatType_1Monochrome", @(kCVPixelFormatType_2Indexed): @"kCVPixelFormatType_2Indexed", @(kCVPixelFormatType_4Indexed): @"kCVPixelFormatType_4Indexed", @(kCVPixelFormatType_8Indexed): @"kCVPixelFormatType_8Indexed", @(kCVPixelFormatType_1IndexedGray_WhiteIsZero): @"kCVPixelFormatType_1IndexedGray_WhiteIsZero", @(kCVPixelFormatType_2IndexedGray_WhiteIsZero): @"kCVPixelFormatType_2IndexedGray_WhiteIsZero", @(kCVPixelFormatType_4IndexedGray_WhiteIsZero): @"kCVPixelFormatType_4IndexedGray_WhiteIsZero", @(kCVPixelFormatType_8IndexedGray_WhiteIsZero): @"kCVPixelFormatType_8IndexedGray_WhiteIsZero", @(kCVPixelFormatType_16BE555): @"kCVPixelFormatType_16BE555", @(kCVPixelFormatType_16LE555): @"kCVPixelFormatType_16LE555", @(kCVPixelFormatType_16LE5551): @"kCVPixelFormatType_16LE5551", @(kCVPixelFormatType_16BE565): @"kCVPixelFormatType_16BE565", @(kCVPixelFormatType_16LE565): @"kCVPixelFormatType_16LE565", @(kCVPixelFormatType_24RGB): @"kCVPixelFormatType_24RGB", @(kCVPixelFormatType_24BGR): @"kCVPixelFormatType_24BGR", @(kCVPixelFormatType_32ARGB): @"kCVPixelFormatType_32ARGB", @(kCVPixelFormatType_32BGRA): @"kCVPixelFormatType_32BGRA", @(kCVPixelFormatType_32ABGR): @"kCVPixelFormatType_32ABGR", @(kCVPixelFormatType_32RGBA): @"kCVPixelFormatType_32RGBA", @(kCVPixelFormatType_64ARGB): @"kCVPixelFormatType_64ARGB", @(kCVPixelFormatType_48RGB): @"kCVPixelFormatType_48RGB", @(kCVPixelFormatType_32AlphaGray): @"kCVPixelFormatType_32AlphaGray", @(kCVPixelFormatType_16Gray): @"kCVPixelFormatType_16Gray", @(kCVPixelFormatType_422YpCbCr8): @"kCVPixelFormatType_422YpCbCr8", @(kCVPixelFormatType_4444YpCbCrA8): @"kCVPixelFormatType_4444YpCbCrA8", @(kCVPixelFormatType_4444YpCbCrA8R): @"kCVPixelFormatType_4444YpCbCrA8R", @(kCVPixelFormatType_444YpCbCr8): @"kCVPixelFormatType_444YpCbCr8", @(kCVPixelFormatType_422YpCbCr16): @"kCVPixelFormatType_422YpCbCr16", @(kCVPixelFormatType_422YpCbCr10): @"kCVPixelFormatType_422YpCbCr10", @(kCVPixelFormatType_444YpCbCr10): @"kCVPixelFormatType_444YpCbCr10", @(kCVPixelFormatType_420YpCbCr8Planar): @"kCVPixelFormatType_420YpCbCr8Planar", @(kCVPixelFormatType_420YpCbCr8PlanarFullRange): @"kCVPixelFormatType_420YpCbCr8PlanarFullRange", @(kCVPixelFormatType_422YpCbCr_4A_8BiPlanar): @"kCVPixelFormatType_422YpCbCr_4A_8BiPlanar", @(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange): @"kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange", @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange): @"kCVPixelFormatType_420YpCbCr8BiPlanarFullRange", @(kCVPixelFormatType_422YpCbCr8_yuvs): @"kCVPixelFormatType_422YpCbCr8_yuvs", @(kCVPixelFormatType_422YpCbCr8FullRange): @"kCVPixelFormatType_422YpCbCr8FullRange" }[self]; } @end 

诊断输出示例

 NSMutableArray *mutablePixelFormatTypes = [NSMutableArray array]; [captureOutput.availableVideoCVPixelFormatTypes enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [mutablePixelFormatTypes addObject:[obj descriptivePixelFormat]]; }]; NSString *pixelFormats = [mutablePixelFormatTypes componentsJoinedByString:@",\n"]; NSLog(@"Available pixel formats:\n%@\n", pixelFormats); 

当您调用可用的VideoCVPixelFormatTypes时,您将获得所有像素格式types标签的十进制表示forms。 如果将这些内容转换为hex,则可以将其中的一部分与Apple文档中列出的标签进行匹配。 剩下的,你必须把你得到的hex值转换成ASCII字符,最后匹配标签。

例如:

(十进制)——>(hex)—>(ASCII)

875704438 – > 34323076 – > 420v

875704422 – > 34323066 – > 420f

1111970369 – > 42475241 – > BGRA

我发现这个网站“ ASCII到hex ”是有用的。