获取相应AVMetadataObject的CMSampleBuffer?

时间:2018-01-29 20:51:28

标签: ios avfoundation

我正在运行一个成功返回的会话

  

AVMetadataObjects

中的

  

AVCaptureMetadataOutputObjectsDelegate

我的问题是如何获取AVMetadataObject来自的相应图像?

1 个答案:

答案 0 :(得分:2)

TL:DR; https://developer.apple.com/documentation/avfoundation/avcapturedataoutputsynchronizer

您将要实现AVCaptureDataOutputSynchronizerDelegate。这非常简单,您只需将两个输入(视频和元数据)添加到AVCaptureDataOutputSynchronizer,然后您将获得一个AVCaptureSynchronizedDataCollection,其中包含来自相同时间戳的一个或多个sampleBuffers。这样,当您使用元数据输出sampleBuffer时,只需从AVCaptureSynchronizedDataCollection中获取相应的图像sampleBuffer。

有一些代码,但最重要的是采取当前的代码

open func captureOutput(_ captureOutput: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) { ... }  并将其移至新代表

public func dataOutputSynchronizer(_ synchronizer: AVCaptureDataOutputSynchronizer, didOutput synchronizedDataCollection: AVCaptureSynchronizedDataCollection) {...}