【问题标题】:Getting AVAudioPCMBuffer working (AVAudioFile.mm error code -50)让 AVAudioPCMBuffer 工作(AVAudioFile.mm 错误代码 -50)
【发布时间】:2014-06-06 18:30:44
【问题描述】:

我正在尝试在 Swift 游乐场中设置一个基本示例(代码如下),但我也尝试过使用 Objective-C 并获得相同的结果。

import AVFoundation

let fileURL = ... // have tried a wav file and a aiff file
let myAudioFile = AVAudioFile(forReading: fileURL, error: nil)
let myAudioFormat = myAudioFile.fileFormat
let myAudioFrameCount = UInt32(myAudioFile.length)
var myAudioBuffer = AVAudioPCMBuffer(PCMFormat: myAudioFormat, frameCapacity: myAudioFrameCount)
// have also tried a smaller frameCapacity

到目前为止它工作正常,但随后终止:

var myError: NSError?
myAudioFile.readIntoBuffer(myAudioBuffer, error:&myError)

我也尝试使用 buffer:myAudioBuffer 命名参数,但这会产生“无关参数”错误。

最终,我想从缓冲区中取出原始 PCM 数据作为 Swift 浮点数组。

【问题讨论】:

  • 我真的看不出你的代码有什么问题;鉴于此,您能否在 Objective-C 中也显示您的代码?

标签: objective-c avfoundation swift


【解决方案1】:

AVAudioPCMBufferPCMFormat 必须设置为AVAudioFile.processingFormat 并且不是它的.fileFormat:我认为这些是相同的,但事实并非如此案件!

【讨论】:

  • 我知道这一点!但我认为它们是两种类型,在你的情况下你需要 fileFormat。很好,尽管如此,我不只是回答,因为我只有 99% 的把握。很高兴它现在对你有用。
  • @Unheilig 谢谢 :) 我可以发誓我已经尝试过了,但显然没有。 -50 错误代码/崩溃也没有太大帮助!不幸的是,现在这个问题已经解决了,这导致了一个新的(与 Swift 相关的)问题:stackoverflow.com/questions/24090119/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多