我正在尝试在 Swift Playground (下面的代码)中设置一个基本示例,但我也尝试过使用 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 float 组。
最佳答案
AVAudioPCMBuffer
的PCMFormat
必须设置为AVAudioFile
的.processingFormat
和不是它的.fileFormat
:我以为它们是一样的,但事实并非如此!
关于objective-c - 使 AVAudioPCMBuffer 工作(AVAudioFile.mm 错误代码 -50),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088470/