两个相同的iphone,一个在AVCaptureDeviceTypeBuiltInDualCamera上返回exc_bad_access

时间:2017-01-11 22:56:47

标签: objective-c iphone ios10 exc-bad-access avcapturedevice

Stack Overflow上的第一个问题!这个网站多年来一直帮助我解决编码和技术问题。我总是在这里找到每个答案,从来没有注册过任何问题!但是这个...我只是不明白!?

我正在构建符合ios 10标准并与iPhone 7双摄像头兼容的ios应用程序。现在用这段代码启动AVCaptureDevice:

AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithDeviceType: AVCaptureDeviceTypeBuiltInDualCamera
                                                mediaType: AVMediaTypeVideo
                                                position: preferredPosition];  
if(videoDevice == nil){
          videoDevice = [AVCaptureDevice defaultDeviceWithDeviceType: AVCaptureDeviceTypeBuiltInWideAngleCamera
                                                           mediaType: AVMediaTypeVideo
                                                           position: preferredPosition];
     }

非常简单,如果没有AVCaptureDeviceTypeBuiltInDualCamera而不是AVCaptureDeviceTypeBuiltInWideAngleCamera。

在iPhone 6s 64gb(ios 10.2)上,它就像一个魅力!但是当在相同的iPhone 6s 64gb(ios 10.2)上进行测试时,该设备会在线返回EXC_BAD_ACCESS:

AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithDeviceType: AVCaptureDeviceTypeBuiltInDualCamera
                                                mediaType: AVMediaTypeVideo
                                                position: preferredPosition];

在该设备上,只有当我完全取下双摄像头并将所有设置为广角时,它才有效。它应该返回nil并切换到广角!可能是什么问题......僵尸进程并没有返回任何有用的东西。我的猜测是第二部iPhone只是马车。你们觉得怎么样?

3 个答案:

答案 0 :(得分:0)

我遇到同样的问题,以下解决方案对我有用。

请尝试在info.plist中添加以下标志, "隐私 - 相机使用说明"并为其设置任何字符串值。 保存并运行该应用程序。

此外,如果您想使用照片库,请添加"隐私 - 照片库使用说明"键并设置要在权限弹出窗口中显示的任何字符串值。

答案 1 :(得分:0)

这很奇怪,有完全相同的问题和改变

AVCaptureDeviceTypeBuiltInDualCamera

AVCaptureDeviceTypeBuiltInDuoCamera

解决了这个问题...但奇怪的是,Duo已弃用且应该使用双重

AVF_EXPORT AVCaptureDeviceType const AVCaptureDeviceTypeBuiltInDuoCamera NS_DEPRECATED_IOS(10_0, 10_2, "Use AVCaptureDeviceTypeBuiltInDualCamera instead") __TVOS_PROHIBITED;

答案 2 :(得分:0)

有同样的问题。 就我而言,在一台设备中,相机无法正常工作! 我去了相机应用程序并尝试使用相机,没有工作。 重启设备,相机仍然无法正常工作。 在这种情况下,AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithDeviceType:AVCaptureDeviceTypeBuiltInDualCamera mediaType:AVMediaTypeVideo position:AVCaptureDevicePositionUnspecified];只返回nil;

我拿了另一台摄像机工作正常的设备。现在代码崩溃的同一行。