iPhone上的视频捕捉; captureOutput委托永远不会被调用

时间:2010-10-30 10:40:11

标签: iphone objective-c video-capture

嘿伙计们。试图开始使用iPhone视频捕捉,并且花了很长时间才能完成它。

目前,使用Apple Developer Q& A中的示例代码的精确副本:qa1702;不要在这里重新粘贴它,因为它是一个相对大的代码。

无论如何,我将该代码复制并粘贴到一个空的项目中,将setupCaptureSession调用到一个自定义的UIView中,并且认为我应该很高兴:

- (void)awakeFromNib {
    NSLog(@"init");
    [self setupCaptureSession]; 
}

不幸的是,当我运行代码时,似乎永远不会调用我的委托:

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
       fromConnection:(AVCaptureConnection *)connection
{ 
    NSLog(@"New Image!");
}

我希望看到大量“新形象”!被倾倒到日志,但我什么都没有。我知道所有初始化代码都在运行(我在setupCaptureSession中抛出了一些NSLog语句,并且它们都打印出来了。)

所以,我要么A)要弄清楚我做错了什么,或者B)看到一些非常简单的捕获代码嵌入到实际可行的UIView中(代码越少,更好)。理想情况下,示例代码将使用上面Apple开发人员站点中描述的setupCaptureSession代码。

请注意,此代码正在运行最新版iOS 4的iPhone 3GS上进行测试。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我将相同的代码复制并粘贴到一个新项目中,它对我来说很好。 这是我做的:

我在XCode中创建了一个基于View的应用程序。

我添加了以下框架:CoreMedia,CoreVideo,AVFoundation

我将AVFoundation导入到我的viewcontroller的头文件

我指定我的视图控制器在其接口定义中使用AVCaptureVideoDataOutputSampleBufferDelegate协议

在实现中,我从您在问题中指定的应用文档中复制了代码

我评论了这个:

 [self setSession:session]

我评论了这个:

UIImage *image = [self imageFromSampleBuffer:sampleBuffer];

并添加了这个:

NSLog(@"here");

在viewDidLoad方法中,我把

 [self setupCaptureSession];

构建。跑。 “here”重复打印到控制台。