AVCaptureVideoDataOutput设置metadataObjectType设置失败

前几天开发一个视频处理相关的App,发现一个莫名其妙的问题,代码检查了很长时间也没发现问题所在,问题描述如下,需求是需要在视频中检测人脸,设置AVCaptureVideoDataOutput的metadataObjectType如下:

_output.metadataObjectTypes=@[AVMetadataObjectTypeFace];

但是output.availableMetadataObjectTypes一直返回nil,查询Api文档,iPhone6s硬件是支持人脸检测的,可是availableMetadataObjectTypes一直为nil,Google了一下很多人说是由于隐私权限的问题,确认权限已经添加,还是为nil。
后来在stackoverflow上有人提了一句,需要在AVCaptureSession startRunning后再设置,试了下,代码如下:

NSLog(@"%@",[_output availableMetadataObjectTypes]);

[self.session startRunning];
        
NSLog(@"%@",[_output availableMetadataObjectTypes]);

_output.metadataObjectTypes = [_output availableMetadataObjectTypes];

果然在startRunning之前为nil,后面就有对应的输出了。

想了一下原因,应该是availableMetadataObjectTypes是需要实时检测的,需要session启动后才能进行有效检测,未启动之前是无法获取有效值的。

记录一下,希望可以帮助到遇见此问题的人,以上!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容