私は単純なビデオ メッセンジャーのようなアプリケーションを作成しているため、使用可能な帯域幅に収まり、キャプチャされた画像が歪まないようにするために、ある程度妥協したサイズのフレームを取得する必要があります。
フレームを取得するには、QTCaptureVideoPreviewOutput クラスを使用しています。didOutputVideoFrame コールバックでフレームを正常に取得しています。(生のフレームが必要です-主にカスタムエンコーダーを使用しているため、「生のビットマップ」を取得したいだけです)。
問題は、これらの新しい iSight カメラの場合、文字通り巨大なフレームが得られることです。
幸いなことに、生のフレームをキャプチャするためのこれらのクラス (QTCaptureVideoPreviewOutput) には、取得するフレームの種類を指定できるメソッド setPixelBufferAttributes が用意されています。幸運にもカメラがサポートするフレーム サイズを推測できた場合は、それを指定できます。QTKit はカメラをこの指定されたモードに切り替えます。運が悪いと、画像がぼやけてしまい (拡大/縮小されたため)、ほとんどの場合、不均等になります。
私はlists.apple.comとstackoverflow.comを検索してきましたが、答えは「Appleは現在、カメラのネイティブフレームサイズを取得する機能を提供していません」です。まあ、それについて私ができることは何もありません。
設定で最も一般的なフレーム サイズを提供する必要があるかもしれません。しかし、これらの一般的なフレームサイズは何ですか? UVC カメラが通常生成するフレーム寸法のリストはどこで入手できますか?
アプリケーションをテストするために、UVC 準拠のカメラを使用していますが、iSight は使用していません。すべてのユーザーが iSight を使用しているわけではないと思いますが、モデルが異なっていても、iSight カメラのフレーム寸法が異なることは確かです。
または、カメラをデフォルト モードに切り替えて、いくつかのフレームを生成し、生成されるサイズを確認する必要があります。これは本当のハックのように見え、自然ではないようです。そして、画像はおそらく再びぼやけます。
この問題にどのように対処しましたか?私はそれに直面した最初の人ではないと確信しています。どのようなアプローチを選択しますか? ありがとう、ジェームズ