首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较AVCaptureDevice.DeviceType以了解哪个是最好的选择?

如何比较AVCaptureDevice.DeviceType以了解哪个是最好的选择?
EN

Stack Overflow用户
提问于 2020-06-12 05:16:55
回答 1查看 525关注 0票数 2

AVCaptureDevice.DeviceType有一组摄像头选项,允许我们列出可用的设备并从中挑选一个。

例如,下面的代码块列出了我的iPhone上的可用设备。

代码语言:javascript
运行
复制
let discoverySession = AVCaptureDevice.DiscoverySession(deviceTypes:
            [.builtInTrueDepthCamera, .builtInDualCamera, .builtInWideAngleCamera, .builtInDualWideCamera, .builtInTripleCamera, .builtInTelephotoCamera, .builtInUltraWideCamera],
        mediaType: .video, position: .back)

let devices = discoverySession.devices
guard !devices.isEmpty else { fatalError("Missing capture devices.")}

devices.forEach({
   print($0.deviceType)
})

当我在我的iPhone上运行这个代码片段时,我得到了下面的结果。

代码语言:javascript
运行
复制
AVCaptureDeviceType(_rawValue: AVCaptureDeviceTypeBuiltInWideAngleCamera)
AVCaptureDeviceType(_rawValue: AVCaptureDeviceTypeBuiltInDualWideCamera)
AVCaptureDeviceType(_rawValue: AVCaptureDeviceTypeBuiltInUltraWideCamera)

我的设备上有3个设备可用。我如何知道哪一个是最好的选项,或者哪个设备具有最高的质量?当然,我想在用户的设备上选择质量最好的设备。这些选项之间的区别在哪里?我如何在运行时知道如何选择最好的选项?

EN

回答 1

Stack Overflow用户

发布于 2021-06-18 13:42:46

设置摄像头

代码语言:javascript
运行
复制
//MARK: Setup Camera
    private func setUpCamera(){
        let session = AVCaptureSession()
        if let device = AVCaptureDevice.default(AVCaptureDevice.DeviceType.builtInWideAngleCamera, for: .video, position: .front) {
            do {
                let input = try AVCaptureDeviceInput(device: device)
                if session.canAddInput(input) {
                    session.addInput(input)
                }
                if session.canAddOutput(output) {
                    session.addOutput(output)
                }
                
                previewLayer.videoGravity = .resizeAspectFill
                previewLayer.connection?.videoOrientation = .portrait
                previewLayer.session = session
                
                cameraView.layer.addSublayer(previewLayer)
                previewLayer.position = CGPoint(x: self.cameraView.frame.width/2, y: self.cameraView.frame.height/2)
                
                session.startRunning()
                self.session = session
            }
            catch let error  {
                print("Error Unable to initialize back camera:  \(error.localizedDescription)")
            }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62333699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档