AVCaptureVideoDataOutput 在 iOS 14 后停止传送帧

AVCaptureVideoDataOutput stops delivering frames in iOS 14

我有以下设置:

这在 iOS 13 之前工作得很好。现在在 iOS 14 中,AVCaptureVideoDataOutput 在大约 4 秒后突然停止向代理发送新帧。捕获——没有任何警告或日志消息。

一些观察:

我已经调试了一段时间了,但我很无能。非常感谢 iOS 14 中现在可能导致此行为的任何提示或想法!

找到了:

我正在获取传入样本缓冲区的附件(元数据),但由于桥接错误不小心泄露了字典。

所以不用这个

NSDictionary* attachments = (__bridge NSDictionary* _Nullable)CMCopyDictionaryOfAttachments(NULL, sampleBuffer, kCMAttachmentMode_ShouldPropagate);

我应该这样做

NSDictionary* attachments = (__bridge_transfer NSDictionary* _Nullable)CMCopyDictionaryOfAttachments(NULL, sampleBuffer, kCMAttachmentMode_ShouldPropagate);

有趣的是,此泄漏导致捕获会话在 126 帧后停止传送新的样本缓冲区——没有任何警告、错误或通知。