首页 > 解决方案 > AVCaptureVideoDataOutput 在 iOS 14 中停止传送帧

问题描述

我有以下设置:

这在 iOS 13 上运行得非常好。现在在 iOS 14 中AVCaptureVideoDataOutput,大约 4 秒后突然停止传送新帧(给代理)。捕获 - 没有任何警告或日志消息。

一些观察:

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

标签: iosavfoundationopengl-es-2.0metal

解决方案


找到了:

我正在获取传入样本缓冲区的附件(元数据),并且由于错误的桥接而意外泄露了字典。

所以代替这个

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

我应该这样做

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

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


推荐阅读