我正在运行一个成功返回的会话
中的AVMetadataObjects
AVCaptureMetadataOutputObjectsDelegate
我的问题是如何获取AVMetadataObject来自的相应图像?
答案 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) {...}