我一直在尝试创建自己的内置相机,但是当我尝试设置设备时它崩溃了。
func setUp() {
do {
self.session.beginConfiguration()
let device = AVCaptureDevice.default(.builtInDualCamera, for: .video, position: .front)
let input = try AVCaptureDeviceInput(device: device!)
if self.session.canAddInput(input) {
self.session.addInput(input)
}
if self.session.canAddOutput(self.output) {
self.session.addOutput(self.output)
}
self.session.commitConfiguration()
} catch {
print(error.localizedDescription)
}
}
当我执行程序时,它因输入而崩溃,因为我尝试强制解开设备零值。 我已经设置了所需的授权,以便应用程序可以使用相机,并且它仍然以 nil 值结束。
如果有人知道如何解决问题,将不胜感激
你要求一个builtInDualCamera
,即支持:
- 当变焦系数、光线水平和对焦位置允许时,自动从一台摄像机切换到另一台摄像机。
- 通过融合来自两个摄像头的图像,实现更高质量的静态变焦。
- 通过测量广角相机和长焦相机之间匹配特征的差异来提供深度数据。 从单个照片
- 捕获请求从组成设备(广角和长焦相机)传送照片。
而且你要求它放在手机的前面。我不知道有哪部iPhone的正面有这样的摄像头(尤其是最后一个)。您可能打算请求position: .back
,如示例代码所示。但请记住,并非所有手机的背面都有双摄像头。
您可能希望使用default(for:)
来请求默认的"视频"相机,而不是要求特定类型的相机。或者,您可以使用AVCaptureDevice.DiscoverSession根据特定特征查找相机。