CaptureStillImageAsynchronouslyFromConnectionを使用して、AVFoundationを使用してカメラから静止画像をキャプチャしています(ビデオフレームではなく静止画像をキャプチャしています)。これにより、CMSSampleBuffer タイプのバッファーが得られます。これを imageDataSampleBuffer と呼んでいます。
私が理解している限り、このバッファにはメディアに関連するあらゆる種類のデータを含めることができ、データの種類は出力設定を構成するときに決定されます。
出力設定については、値: AVVideoCodecJPEG、キー: AVVideoCOdecKey の辞書を作成します。
他のコーデック オプションはありません。しかし、AVFoundation プログラミング ガイド > メディア キャプチャを読むと、420f、420v、BGRA、jpeg が iPhone 3gs (私が使用している) でサポートされている利用可能なエンコード形式であることがわかります。
yuv420 (つまり 420v) 形式の画像データを imageSampleBuffer に取得したいと考えています。それは可能ですか?
availableImageDataCodecTypes を印刷すると、availableImageDataCVPixelFormatTypes を印刷すると JPEG のみが取得され、875704422、875704438、1111970369 の 3 つの数字が取得されます。
これらの 3 つの数値が 420f、420v、BGRA にマップされる可能性はありますか?
はいの場合、出力設定でどのキーを変更する必要がありますか? 値を入れてみました: [NSNumber numberWithInt:875704438] キー: (id)kCVPixelBufferPixelFormatTypeKey. それはうまくいくでしょうか?
はいの場合、imageSampleBuffer からこのデータを抽出するにはどうすればよいですか?
また、UIImageはどの形式で保存されますか? どんなフォーマットでもいいの?画像として解釈される追加情報を含む NSData だけですか?