AVFoundation Famework
写真のプレビューとキャプチャに を使用したい。を作成し、このセッションにAVCaptureSession
を追加しました。プリセットを に設定しました。AVCaptureVideoDataOutput
AVCaptureStillImageOutput
AVCaptureSessionPresetLow
今、私はフル解像度で写真を撮りたいと思っています。しかし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 秒かかります)。そんなに大きな遅延はしたくない。
これどうやってするの?ありがとう。