在 macOS 上将数据传递给 AVCapturePhoto

Passing data to AVCapturePhoto on macOS

通常,如果你想使用 AVCapturePhoto,你会这样做:

func capturePhoto() {
   let photoSettings = AVCapturePhotoSettings()
   photoOutput?.capturePhoto(with: photoSettings, delegate: self)
}

然后在处理照片时,调用photoOutput方法:

internal func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
}

问题: 是否可以通过 .capturePhoto 将自定义数据传递给 photoOutput? .metadata 只能在 iOS 上访问,每次我使用 .value() 方法设置一个值时,我都会得到

[General] [<AVCapturePhotoSettings 0x600003882080> valueWithUniqueID:inPropertyWithKey:]: lookup of unknown key: 'key'.

我认为最好和最简单的方法是使用其他一些对象作为照片捕获的 delegate 并且始终为每个捕获操作创建一个新的委托实例。通过这种方式,您可以将其他数据传递给 init 上的委托对象,您可以在 photoOutput(_:didFinishProcessingPhoto:) 方法中使用这些数据。

我强烈建议您查看 Apple 的 AVCam sample project。他们就是这么做的。