我正在尝试从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
但是我如何填充其数据?
@@ Yunnosch,谢谢您。