【问题标题】:Converting AVAudioPCMBuffer to NSData将 AVAudioPCMBuffer 转换为 NSData
【发布时间】:2018-04-05 16:21:16
【问题描述】:

我目前正在尝试将音频样本从AVAudioPCMBuffer 转换为NSData - 我已经查看了这个SO Post 和这个code from GitHub 的公认答案,但它似乎是一些AVFAudio API 发生了变化……下面是我为 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 值...感谢任何帮助!

【问题讨论】:

    标签: ios swift avfoundation nsdata avaudiopcmbuffer


    【解决方案1】:

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

    let ch0Data = Data(bytes: channels[0], count: Int(frameCapacity * format.streamDescription.pointee.mBytesPerFrame))
    

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多