我正在制作视频通话应用程序,我添加了一个按钮以请求访问摄像头。我阅读了文档,但它说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
请您帮忙。
您已经在请求许可。现在,您只需要自己实现方法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
方法中提供自己的参数。