objective-c - 使 AVAudioPCMBuffer 工作(AVAudioFile.mm 错误代码 -50)

标签 objective-c avfoundation swift

我正在尝试在 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 组。

最佳答案

AVAudioPCMBufferPCMFormat 必须设置为AVAudioFile.processingFormat不是它的.fileFormat:我以为它们是一样的,但事实并非如此!

关于objective-c - 使 AVAudioPCMBuffer 工作(AVAudioFile.mm 错误代码 -50),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088470/

相关文章:

iphone - Objective-C/自动调整 subview 不起作用

ios - 重新编辑: Audio not playing in real ios Device but playing in simulated devices in Swift2

ios - 从较小的尺寸放大视频(重新缩放)

ios - Facebook SDK 共享在 iOS 上不起作用

ios - 播放完成时快速更改按钮图像

ios - 访问有关设备上应用程序的基本信息 - Swift

ios - 将搜索栏添加到Google Place Picker(GMSPlacePicker)

objective-c - 为什么在类别中声明方法而不实现它?

ios - 如何使用新 API willAnimateRotationToInterfaceOrientation 修复 iOS 方向

ios - 将 CMSampleBufferRef 转换为 UIImage