2

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 だけですか?

4

1 に答える 1

0

私はこの方法を使おうとしています:

「645PRO」のようなカメラからの生画像データ

writeToFileを使用してデータを保存しており、irfanviewを使用してデータを開こうとしています。

しかし、irfan viewでヘッダーを読み取れないというエラーが表示されるため、保存されたファイルがyuv形式であるかどうかを確認できません。

于 2012-09-10T13:18:47.310 に答える