2012-03-17 35 views
1

AVFoundation(AVCaptureStillImageOutput)を使用してカスタムiOSカメラでカスタム解像度を設定する方法を知っている人はいますか?AVCaptureSessionはカスタム解像度を指定します

AVCaptureSessionを使用してプリセットを選択できますが、出力解像度は920x920(プリセットでは提供されていません)が必要です。現在私はAVCaptureSessionPresetHighを使用してUIImageのサイズを変更していますが、それは愚かで多くの余分な、不要な処理と思われます。

+1


アップルからこの例では、最高のフレームレートを選択する方法を示しています。あなた自身でスケーリングしてから、ターゲットフォーマットでエンコードする必要があります。 –

答えて

0

私が自分に答えた古い質問の1つをチェックしてください。それはあなたを助けるかもしれません。

Capture picture from video using AVFoundation

+0

ありがとう、私はそれをすでに読んでいますが、残念ながらそれは私を助けません。私が必要とする解像度のプリセットはありません。 – Dick

0

あなたがすることはできませんが、何を行うことができますことはあなたの解像度に近い1を探しているすべてのAVCaptureDeviceFormat Sを反復処理です。 利用可能なすべてのフォーマットの完全なリストを取得するには、プロパティ-formatsを使用してキャプチャデバイスにクエリを実行します。私の知る限り承知のように、カスタム解像度でキャプチャする方法はありません

- (void)configureCameraForHighestFrameRate:(AVCaptureDevice *)device 
{ 
    AVCaptureDeviceFormat *bestFormat = nil; 
    AVFrameRateRange *bestFrameRateRange = nil; 
    for (AVCaptureDeviceFormat *format in [device formats]) { 
     for (AVFrameRateRange *range in format.videoSupportedFrameRateRanges) { 
      if (range.maxFrameRate > bestFrameRateRange.maxFrameRate) { 
       bestFormat = format; 
       bestFrameRateRange = range; 
      } 
     } 
    } 
    if (bestFormat) { 
     if ([device lockForConfiguration:NULL] == YES) { 
      device.activeFormat = bestFormat; 
      device.activeVideoMinFrameDuration = bestFrameRateRange.minFrameDuration; 
      device.activeVideoMaxFrameDuration = bestFrameRateRange.minFrameDuration; 
      [device unlockForConfiguration]; 
     } 
    } 
} 
+0

この質問は、フレームレートではなく次元についてです。 – Emiswelt

+0

@Emiswelt fraのレートと解像度が接続されている場合、投稿されたスニペットはデバイスフォーマットを取得する単なる方法です。 OPが求めているのは、彼がカスタムサイズのレソルチンを行うことができ、答えがNOである場合です。 – Andrea

関連する問題