AVCaptureAudioDataOutput 未调用 AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput

AVCaptureAudioDataOutput Is Not Calling AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput

当我 运行 带有 AVCaptureAudioDataOutput 的 AVCaptureSession 时,委托未被调用。 我错过了什么步骤? 感谢您的帮助!

import Cocoa
import AVFoundation

class ViewController: NSViewController, AVCaptureAudioDataOutputSampleBufferDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let session  = AVCaptureSession()
        
        guard let device = AVCaptureDevice.default(.builtInMicrophone, for: .audio, position: .front) else { return}
        do {
            let input = try AVCaptureDeviceInput(device:device)
            if session.canAddInput(input) {
                session.addInput(input)
                let output = AVCaptureAudioDataOutput()
                output.setSampleBufferDelegate(self, queue: .main)
                if session.canAddOutput(output) {
                    session.addOutput(output)
                }
                
                session.startRunning()
                
                print("Running")
                
            }
        } catch {
        }
    }
    
    func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
        print(sampleBuffer.numSamples)
    }
}

你有没有得到任何设备?我尝试构建您的代码,但没有得到任何设备。反正你可以看看这个 and also this 。另外,我可以猜到一件事,但不确定。把你的捕获会话变量

let session  = AVCaptureSession()

在 viewDidLoad 之外。