2012-09-10 49 views
2

我正在使用AVFoundation使用captureStillImageAsynchronouslyFromConnection從相機捕獲靜止圖像(捕獲靜止圖像而不是視頻幀)。這給了我一個CMSSampleBuffer類型的緩衝區,我調用了imageDataSampleBuffer。從相機獲取yuv平面格式圖像 - iOS

據我所知,這個緩衝區可以包含與媒體有關的任何類型的數據,並且當我配置輸出設置時確定數據的類型。

輸出設置,我做一個字典的值爲AVVideoCodecJPEG鍵:AVVideoCOdecKey。

沒有其他編解碼器選項。但是當我閱讀AVFoundation編程指南>媒體捕捉時,我可以看到420f,420v,BGRA,jpeg是iPhone 3gs支持的可用編碼格式(我正在使用的)

我想獲得yuv420 420v)格式化圖像數據到imageSampleBuffer中。那可能嗎?

如果我打印availableImageDataCodecTypes,我只得到JPEG 如果我打印availableImageDataCVPixelFormatTypes,我得到三個號碼875704422,875704438,1111970369.

難道這三個數字地圖,420F,420V,BGRA?

如果是,我應該在輸出設置中修改哪個鍵? 我試着把值:[NSNumber numberWithInt:875704438]鍵:(id)kCVPixelBufferPixelFormatTypeKey。 它會工作嗎?

如果是,我該如何從imageSampleBuffer中提取這些數據?

此外,在UIImage存儲的格式?它可以是任何格式?它只是NSData與一些額外的信息,這使得它解釋爲一個圖像?

回答

0

我一直在嘗試使用這種方法:

Raw image data from camera like "645 PRO"

我使用將writeToFile保存數據,我一直在試圖用伊爾凡視圖中打開它。

但我無法驗證保存的文件是否以yuv格式,而不是因爲irfan視圖給出的錯誤,它無法讀取標題。