AVCaptureAudioDataOutput 没有调用 AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput
Posted
技术标签:
【中文标题】AVCaptureAudioDataOutput 没有调用 AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput【英文标题】:AVCaptureAudioDataOutput Is Not Calling AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput 【发布时间】:2020-07-01 17:06:31 【问题描述】:当我使用 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)
【问题讨论】:
【参考方案1】:你有什么设备吗?我试图构建你的代码,但没有得到任何设备。不管怎样,你可以看看这个answer 和这个answer。另外,我可以猜到一件事,但不确定。放置您的捕获会话变量
let session = AVCaptureSession()
在 viewDidLoad 之外。
【讨论】:
太棒了!只是将会话放在 viewDidLoad 之外修复了它!!!谢谢! 啊,我很高兴它有帮助。 既然对您有帮助,请不要忘记将最有助于解决问题的答案标记为已接受。以上是关于AVCaptureAudioDataOutput 没有调用 AVCaptureAudioDataOutputSampleBufferDelegate.captureOutput的主要内容,如果未能解决你的问题,请参考以下文章