我正在使用AVFoundation使用captureStillImageAsynchronouslyFromConnection从相机捕捉静止图像(捕捉静止图像而不是视频帧)。这给了我一个CMSSampleBuffer类型的缓冲区,我称之为imageDataSampleBuffer。
据我所知,此缓冲区可以包含与媒体相关的任何类型的数据,并且在配置输出设置时确定数据类型。
对于输出设置,我创建了一个带有值的字典:AVVideoCodecJPEG for key:AVVideoCOdecKey。
没有其他编解码器选项。但是当我阅读AVFoundation编程指南> Media Capture时,我可以看到420f,420v,BGRA,jpeg是iPhone 3gs支持的可用编码格式(我正在使用)
我想将yuv420(即420v)格式的图像数据放入imageSampleBuffer。这可能吗?
如果我打印availableImageDataCodecTypes,我只得到JPEG 如果我打印availableImageDataCVPixelFormatTypes,我会得到三个数字875704422,875704438,111970369。
这三个数字是否有可能映射到420f,420v,BGRA?
如果是,我应该在输出设置中修改哪个键? 我尝试将值:[NSNumber numberWithInt:875704438]用于键:(id)kCVPixelBufferPixelFormatTypeKey。 它会起作用吗?
如果是,我该如何从imageSampleBuffer中提取这些数据?
另外,UIImage存储的格式是什么?可以是任何格式吗?它只是NSData的一些额外信息,使它被解释为图像吗?
答案 0 :(得分:0)
我一直在尝试使用这种方法:
Raw image data from camera like "645 PRO"
我使用writeToFile保存数据,我一直在尝试使用irfan视图打开它。
但我无法验证保存的文件是否采用yuv格式,因为irfan视图会出现无法读取标题的错误。