规范化音频文件对象

时间:2013-01-14 21:32:51

标签: objective-c audio core-audio

是否有用于规范化声音文件的库函数?我四处搜寻但找不到任何东西。

我希望能够将声音文件规范化并将其设置到声音文件中,因此只需要进行一次而不是动态操作。

可以使用Core-Audio完成吗?

1 个答案:

答案 0 :(得分: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. 处理两个音频文件。
  10. 该文档链接到几个可以作为工作代码的捐赠者的示例项目。你会发现样本作为浮点数更容易进行规范化,但在iOS中,我永远无法让转换自动生成,因此您可能需要自行格式转换。