3

是否有标准化声音文件的库函数?我四处寻找,但找不到任何东西。

我希望能够规范化声音文件并将其设置到声音文件中,因此只需要完成一次而不是即时完成。

这可以用 Core-Audio 完成吗?

4

1 回答 1

2

是的,它可以完成,但不能通过单个函数调用。

您想要的功能实际上不是 CoreAudio,而是框架ExtendedAudioFile.h的一部分。AudioToolbox这适用于 iOS 和 MacOSX。我可以证明这很难找到。

ExtAudioFileOpenURL()此标头中感兴趣的函数是ExtAudioFileRead()ExtAudioFileWrite()

概述您的工作:

  1. 用于ExtAudioFileOpenURL()打开输入文件
  2. ExtAudioFileGetProperty()与 propertyId一起使用kExtAudioFileProperty_FileDataFormat以获取描述文件 的AudioStreamBasicDescription 。

  3. 可能设置 ASBD 以获得您想要的格式。MacOSX 上的 AudioToolBox 似乎比 iOS 上更适合这一点。

  4. 计算一个足够大的缓冲区来容纳整个音频文件

  5. 读取整个文件ExtAudioFileRead()- 注意:此调用可能不会一口气全部读取 - 操作与 POSIX 大致相同read()

  6. 执行标准化

  7. 用于ExtAudioFileCreateWithURL()创建输出文件
  8. 用于ExtAudioFileWrite()写出标准化样本。
  9. 处理这两个音频文件。

该文档链接到几个示例项目,这些项目可以充当工作代码的捐助者。您会发现将样本作为浮点数进行标准化要容易得多,但在 iOS 中,我永远无法让转换自动工作,因此您可能必须自己进行格式转换。

于 2013-01-14T23:17:21.187 回答