我如何请求可可应用的相机和麦克风?

问题描述 投票:0回答:1

我正在制作视频通话应用程序,我添加了一个按钮以请求访问摄像头。我阅读了文档,但它说Value of type 'ViewController' has no member 'setupCaptureSession'

 @IBAction func requestCamera(_ sender: Any) {
            if #available(OSX 10.14, *) {
                switch AVCaptureDevice.authorizationStatus(for: .video) {
                case .authorized: // The user has previously granted access to the camera.
                    self.setupCaptureSession()

                case .notDetermined: // The user has not yet been asked for camera access.
                    AVCaptureDevice.requestAccess(for: .video) { granted in
                        if granted {
                            self.setupCaptureSession()
                        }
                    }

                case .denied: // The user has previously denied access.
                    return

                case .restricted: // The user can't grant access due to restrictions.
                    return
                }
            } else {
                // Fallback on earlier versions
            }

我认为主要问题是我需要在视图控制器顶部添加一些内容,例如Class ViewController: NSViewController, Something here

请您帮忙。

swift xcode cocoa camera avfoundation
1个回答
0
投票

您已经在请求许可。现在,您只需要自己实现方法setupCaptureSession

@IBAction func requestCamera(_ sender: Any) {
    // Your code to handle permissions that you already have given.
}

func setupCaptureSession() {
    let session = AVCaptureSession()
    session.sessionPreset = .hd1280x720

    let device = AVCaptureDevice.default(for: .video)!
    let input = try! AVCaptureDeviceInput(device: device)
    session.addInput(input)

    let output = AVCaptureVideoDataOutput()
    output.videoSettings = [
        kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA,
        kCVPixelBufferMetalCompatibilityKey as String: true
    ]
    output.alwaysDiscardsLateVideoFrames = true
    output.setSampleBufferDelegate(self, queue: self.sampleBufferDelegateQueue)
    session.addOutput(output)
}

这只是一个示例,您可以根据需要在setupCaptureSession方法中提供自己的参数。

© www.soinside.com 2019 - 2024. All rights reserved.