2012-12-20 151 views
0

我想使視頻與AVFoundation合作。目前我只有一個代碼,它應該從相機獲取輸入並將其顯示在屏幕上的UIImage上。但是,我只是得到一個白色的屏幕。視頻與AVFoundation

-(CIContext*)context{ 
    if(!_context){ 
     _context = [CIContext contextWithOptions:nil]; 
    } 
    return _context; 
} 

-(void)captureOutput:(AVCaptureOutput *)captureOutput didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection{ 
    CVPixelBufferRef pb = CMSampleBufferGetImageBuffer(sampleBuffer); 
    CIImage *ciImage = [CIImage imageWithCVPixelBuffer:pb]; 

    CGImageRef ref = [self.context createCGImage:ciImage fromRect:ciImage.extent]; 
    self.imageView.image = [UIImage imageWithCGImage:ref scale:1.0 orientation:UIImageOrientationRight]; 
CGImageRelease(ref); 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.session = [[AVCaptureSession alloc] init]; 

    //the resolution of the capturing session 
    self.session.sessionPreset = AVCaptureSessionPreset352x288; 

    self.videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    self.videoInput = [AVCaptureDeviceInput deviceInputWithDevice: 
        self.videoDevice error:nil]; 

    self.frameOutput = [[AVCaptureVideoDataOutput alloc] init]; 

    self.frameOutput.videoSettings = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]; 

    [self.session addInput:self.videoInput]; 
    [self.session addOutput:self.frameOutput]; 
    [self.frameOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()]; 

    [self.session startRunning]; 

} 

有人可以幫忙嗎?

回答

1

您註冊的委託方法是:

-(void)captureOutput:(AVCaptureOutput *)captureOutput didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

你應該已經註冊的委託方法是:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

+0

我前一段時間想通了這一點。但是,謝謝! –