gpt4 book ai didi

objective-c - 使用扩展音频文件服务 (ExtAudioFileRead) 提取 float

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:27 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来记录音频文件中样本的浮点值。我的步骤如下:

  1. 打开扩展音频文件
  2. 设置音频格式(AudioStreamBasicDescription)
  3. 将音频格式应用于我的扩展音频文件
  4. 设置一个AudioBufferList
  5. 使用 ExtAudioFileRead() 将扩展音频文件读入 AudioBufferList
  6. 记录 AudioBufferList 的浮点值

我已将整个 90 行类放在这个要点中:https://gist.github.com/792630

问题是,如果我将音频格式应用到我的扩展音频文件(第 3 步),我在尝试读取该文件时会遇到错误(第 5 步)。如果我注释掉第 5 步,文件读取正常,但我不会强制执行我的读取格式,并且在记录时我不会得到 float 。

如有任何建议,我们将不胜感激。谢谢!

最佳答案

我立即注意到的一件事是,您在堆栈上分配一个 AudioBufferList,但将 mNumberBuffers 设置为 2。在堆栈上使用 ABL 没问题,但如果这样做,它们只能包含一个缓冲区。但由于您已将客户端格式设置为单声道,所以这不是您真正的问题。

真正的问题是您没有将 fileRef 的地址传递给 ExtAudioFileOpenURL - 您传递的是值 - 因此调用无法正确初始化变量。

调用应该是这样的:

CheckResult(ExtAudioFileOpenURL(inputFileURL, &fileRef), "ExtAudioFileOpenURL failed");

我做到了,编译了你的代码,一切正常。

关于objective-c - 使用扩展音频文件服务 (ExtAudioFileRead) 提取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4777664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com