获取对应AVMetadataObject的CMSampleBuffer?

Get CMSampleBuffer of corresponding AVMetadataObject?

我是运行一个成功的会话return

AVMetadataObjects

AVCaptureMetadataOutputObjectsDelegate

我的问题是如何获取AVMetadataObject的对应图片?

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) {...}