2016-01-06 37 views
12

私はAVCaptureSessionを使ってビデオをキャプチャして記録しています。AVCaptureSessionはカスタム解像度を使用できます

ビデオを4:3の比率で良好な解像度で録画する必要があります。

AVCaptureSessionを使用してキャプチャするときにカスタム解像度を指定する方法はありますか?

ネイティブプリセットを試しましたが、問題は4:3の比率でキャプチャする必要があり、ほぼすべてのプリセットが16:9です。 4:3の解像度は非常に低い解像度です。

プリセットをカスタムのものに変更する他の方法はありません。より良い解像度で4:3のビデオをキャプチャする必要がある場合はどうすればよいでしょうか?何か案は?

+0

もっと詳しい情報を提供できますか?どのプリセットオプションを試しましたか? –

+0

AVCaptureSessionPreset640x480を試しましたか? –

+0

@ Mr.Tより良い解決が必要 – Eyal

答えて

8

AVCaptureSessionプリセットは、デバイスカメラの機能の小さなサブセットのみをカバーします(ほとんどのアプリでは、すばやく簡単にアクセスできます)。セッションプリセットで提供されていないキャプチャ解像度を選択するなど、きめ細かな制御を行うには、代わりにキャプチャ形式を使用する必要があります。

キャプチャデバイスのformatsプロパティ(AVCaptureDeviceFormatオブジェクトの配列)を見てください。次元があなたが望むものが見つかるまで、配列を列挙します。寸法を取得するには、フォーマットの基礎となるCMFormatDescriptionを見て:

let fdesc = format.formatDescription 
let dims = CMVideoFormatDescriptionGetDimensions(fdesc) 
NSLog("%d x %d", dims.width, dims.height) 

あなたは、あなたがしたい形式を発見したコンフィギュレーションのためのデバイスをロックし、そのactiveFormatを設定したら:

if try device.lockForConfiguration() { 
    device.activeFormat = myChosenFormat 
    // set up other things like activeVideoMinFrameDuration if you want 
    device.unlockForConfiguration() 
} 

あなたは見つけることができますAppleのprogramming guidethe WWDC2013 sessionでキャプチャセッションを設定する方法について詳しくは、AVCaptureDeviceFormatをご覧ください。 (この話題のほとんどは、スローモーションビデオ、ビデオ中の高解像度静止画、セッションプリセットではできないその他のものを対象としていますが、それだけではありません

+0

yrの答えをありがとう、新しい次元はありませんが、 。私は新しいフォーマットを作成する方法を見つけられませんでした(その可能性は確かではありません) – Eyal

1

指定されたアスペクト比で記録し、出力ビデオを必要なアスペクト比にクロップするには、AVMutableCompositionを使用します。プレビューレイヤーを4:3にマスクするように調整すると、ユーザー。

関連する問題