我正在尝试从 of 返回的频率值中读取频率CMSampleBuffer
值。captureOutput
AVCaptureAudioDataOutputSampleBufferDelegate
这个想法是创建一个AVAudioPCMBuffer
,这样我就可以阅读它的floatChannelData
. 但我不确定如何将缓冲区传递给它。
我想我可以通过以下方式创建它:
public func captureOutput(_ output: AVCaptureOutput,
didOutput sampleBuffer: CMSampleBuffer,
from connection: AVCaptureConnection) {
guard let blockBuffer = CMSampleBufferGetDataBuffer(sampleBuffer) else {
return
}
let length = CMBlockBufferGetDataLength(blockBuffer)
let audioFormat = AVAudioFormat(commonFormat: .pcmFormatFloat32, sampleRate: 44100, channels: 1, interleaved: false)
let pcmBuffer = AVAudioPCMBuffer(pcmFormat: audioFormat!, frameCapacity: AVAudioFrameCount(length))
pcmBuffer?.frameLength = pcmBuffer!.frameCapacity
但是我怎么能填写它的数据呢?