2011-08-11 10 views
3

avfoundationを使用してイメージをキャプチャしますが、あまりにも速くキャプチャできません(インターバル時間を0.1秒に設定します)。それは "NULLサンプルバッファ"と言います。何が問題ですか?ありがとうございました。avfoundationを使用してイメージをキャプチャできますが、あまりにも速くキャプチャすることはできません

[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) 
{ 
    CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); 
    if (exifAttachments) 
    { 
     // Do something with the attachments. 
     // NSLog(@"attachements: %@", exifAttachments); 
    } 
    else 
     NSLog(@"no attachments"); 

    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    UIImage *image = [[UIImage alloc] initWithData:imageData]; 
    //use the image 
}]; 

*によりキャッチされない例外 'NSInvalidArgumentException'、理由にアプリを終了: '* + [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:] - 。NULLサンプルバッファー'

+0

同じ問題に直面していますが、この問題に対処できましたか? – BaSha

答えて

2

まあそれはマニュアルに書かれています:

jpegSampleBufferはJPEG形式でNULLであるか、ない場合、このメソッドはNSInvalidArgumentExceptionをスローします。

ですから、NULLまたは何私がしたために、あなたのimageSampleBufferをチェックし、私は、if文のチェックで全体の事をラップし、次のいずれかCMSampleBufferIsValid(imageSampleBuffer)が、それが正しいコールであれば、本当に知りません。ドキュメントは少しばかりです。

0

事は、私がセッションや画像のフレームを取得するためのタイマーを実行するために、ヘルパークラスを使用しています。ここ

[helper captureImage]; 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
     [scheduledTimer invalidate]; 
     [helper stopRunningSession]; 


     imageView.image = helper.imageToReturn; 
    }); 

ある今、私を助けました。だから私は最初に私のキャプチャ画像機能と0.3秒の遅延の後に呼び出します。私はタイマを無効にして、AVCaptureSessionを停止しています。

関連する問題