6

AVFoundation Famework写真のプレビューとキャプチャに を使用したい。を作成し、このセッションにAVCaptureSessionを追加しました。プリセットを に設定しました。AVCaptureVideoDataOutputAVCaptureStillImageOutputAVCaptureSessionPresetLow

今、私はフル解像度で写真を撮りたいと思っています。しかしcaptureStillImageAsynchronouslyFromConnection、解像度内では、プレビュー デリゲートと同じです。

ここに私のコードがあります:

AVCaptureSession* cameraSession = [[AVCaptureSession alloc] init];
cameraSession.sessionPreset = AVCaptureSessionPresetLow;

AVCaptureVideoDataOutput* output = [[AVCaptureVideoDataOutput alloc] init];
[cameraSession addOutput:output];

AVCaptureStillImageOutput* cameraStillImage = [[AVCaptureStillImageOutput alloc] init];
[cameraSession addOutput:cameraStillImage];

// delegation
dispatch_queue_t queue = dispatch_queue_create("MyQueue", NULL);
[output setSampleBufferDelegate:self queue:queue];
dispatch_release(queue);

[cameraSession startRunning];

写真を撮る:

//[cameraSession beginConfiguration];
//[cameraSession setSessionPreset:AVCaptureSessionPresetPhoto];  <-- slow
//[cameraSession commitConfiguration];
[cameraStillImage captureStillImageAsynchronouslyFromConnection:photoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error)
{
    ...
}];

画像をキャプチャする直前に、プリセットを写真に変更して試しました。しかし、これは非常に遅いです (プリセットを変更するのに 2 ~ 3 秒かかります)。そんなに大きな遅延はしたくない。

これどうやってするの?ありがとう。

4

0 に答える 0