2

我正在尝试使用 AVAudioEngine 获取实时麦克风输入的浮点数据。在 fft 之后进行 fft 和特殊算法。

当我编译代码时,我在控制台上变成了这个输出:0x0000000000000000

我做错了什么?非常感谢您的帮助

这是我获取浮点数据的代码:

let audioEngine  = AVAudioEngine()


override func loadView() {
    super.loadView()

    let inputNode = audioEngine.inputNode
    let bus = 0
    inputNode!.installTapOnBus(bus, bufferSize: 2048, format: inputNode!.inputFormatForBus(bus)) {
        (buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
        print(buffer.floatChannelData[50])
    }

    audioEngine.prepare()
    do{
        try audioEngine.start()
    }catch{

        print("Error")

    }


}
4

1 回答 1

2

floatChannelData是一个指向指针的指针,所以如果你想要第一个通道(除非你插入立体声麦克风,否则你将在 iOS 上获得所有通道),你可以这样做:尝试

let firstChannel = buffer.floatChannelData[0]
let arr = Array(UnsafeBufferPointer(start: firstChannel, count: Int(buffer.frameLength)))
// Do something with your array of Floats
于 2015-11-16T01:29:59.620 回答