如何使用AV Foundation连续拍摄图像?

时间:2013-04-19 13:33:38

标签: iphone ios avfoundation avcapturesession

我正在尝试使用AV Foundation实现QRcode阅读器。我的计划是连续捕获图像,将捕获的图像发送到QRcode检测器,直到识别出有效的代码。检测器需要CGImageRefUIImage作为输入。我的问题是:

  1. 我应该使用哪种输出:AVCaptureVideoDataOutputAVCaptureStillImageOutput
  2. 如何连续拍摄每张图像,例如500毫秒?间隔时间应该多长?

2 个答案:

答案 0 :(得分:1)

AVCaptureVideoDataOutput为您提供未压缩的YUV帧,如果它支持未压缩的输入,您可以轻松发送到QRCode阅读器。因此,您将避免解码操作。

如果使用AVCaptureVideoDataOutput,您可以在AVFormatDescription中设置帧速率并将其设置为AVCaptureDevice。一旦启动AVCaptureSession,您将以指定的帧速率连续接收帧,直到您停止它为止。通常,您可以设置5 fps并确保此操作是异步的,并且您最好在不同的线程中处理QRCode,以便在两个帧捕获事件之间处理QRCode解码操作。

答案 1 :(得分:0)

创建AVCaptureVideoDataOutput的实例。将AVCaptureDataOutput的sampleBufferDelegate设置为您想要接收样本缓冲区的任何类(比如x)。将类x确认为AVCaptureVideoDataOutputSampleBufferDelegate协议。实现 - captureOutput:didOutputSampleBuffer:fromConnection:类x中该协议的方法。将AVCaptureVideoDataOutput实例添加到AVCaptureSession。然后开始会话。您将收到带有样本缓冲区的回调。