0

我目前正在尝试将音频样本从转换AVAudioPCMBufferNSData- 我已经查看了这个SO Post上接受的答案和来自 GitHub的这段代码,但似乎一些AVFAudioAPI 已经改变......下面是我的扩展AVAudioPCMBuffer

private extension AVAudioPCMBuffer {

    func toNSData() -> NSData {
        let channels = UnsafeBufferPointer(start: int16ChannelData, count: 1)
        let ch0Data = NSData(bytes: channels[0], length:Int(frameCapacity * format.streamDescription.inTotalBitsPerChannel))

        return ch0Data
    }

}

我看到Value of type 'UnsafePointer<AudioStreamBasicDescription>' has no member 'inTotalBitsPerChannel'. 到目前为止,我还没有找到任何其他方法来找出inTotalBitsPerChannel价值......任何帮助表示赞赏!

4

1 回答 1

2

我没有看到inTotalBitsPerChannel您链接到的任何一个代码示例中命名的任何方法;相反,他们似乎都使用mBytesPerFrame. 您还需要.pointee取消引用指针。最后,在现代 Swift 中,您通常应该更喜欢使用Dataover NSData。所以,基本上,我认为如果你将最后一行重写为:

let ch0Data = Data(bytes: channels[0], count: Int(frameCapacity * format.streamDescription.pointee.mBytesPerFrame))
于 2018-04-05T16:50:46.977 回答