7

ウェブカメラからビデオをキャプチャするソフトウェアを実装しています。Apple Dev で MyRecorder サンプルを見たことがありますが、問題なく動作します。

次のコードを使用して、ビデオからスナップショットを取得するボタンを追加しようとしました。

- (IBAction)addFrame:(id)sender
{
    CVImageBufferRef imageBuffer;
    @synchronized (self) {
        imageBuffer = CVBufferRetain(mCurrentImageBuffer);
    }
    if (imageBuffer) { 
    [ bla bla bla ]     
    }
}

ただし、mCurrentImageBuffer は常に空です。ウェブカメラから現在のフレームを取得し、mCurrentImageBuffer に配置するにはどうすればよいですか?

私は使用しようとしました

(void)captureOutput:(QTCaptureOutput *)captureOutput 
                    didOutputVideoFrame:(CVImageBufferRef)videoFrame 
                    withSampleBuffer:(QTSampleBuffer *)sampleBuffer 
                    fromConnection:(QTCaptureConnection *)connection
{
    CVImageBufferRef imageBufferToRelease;

    CVBufferRetain(videoFrame);

    @synchronized (self) {
        imageBufferToRelease = mCurrentImageBuffer;
        mCurrentImageBuffer = videoFrame;
    }
    CVBufferRelease(imageBufferToRelease);  
} 

しかし、それは決して呼び出されません。captureOutput デリゲート メソッドをいつ呼び出すかを決定するにはどうすればよいですか? 何か案が?

ありがとう、アンドレア

4

2 に答える 2

3

私は使用しようとしました

- (void)captureOutput:(QTCaptureOutput *)captureOutput 
                                didOutputVideoFrame:(CVImageBufferRef)videoFrame 
                                withSampleBuffer:(QTSampleBuffer *)sampleBuffer 
                                fromConnection:(QTCaptureConnection *)connection

しかし、それは決して呼び出されません。

このメソッドを実装するオブジェクトは、キャプチャ出力オブジェクトのデリゲートですか?

于 2009-10-03T20:41:12.267 に答える