是否有用于规范化声音文件的库函数?我四处搜寻但找不到任何东西。
我希望能够将声音文件规范化并将其设置到声音文件中,因此只需要进行一次而不是动态操作。
可以使用Core-Audio完成吗?
答案 0 :(得分:2)
是的,可以完成,但不能使用单个函数调用。
您想要的功能实际上不是CoreAudio,而是ExtendedAudioFile.h
- AudioToolbox
框架的一部分。这适用于iOS和MacOSX。我可以证明这很难找到。
此标头中感兴趣的功能为ExtAudioFileOpenURL()
,ExtAudioFileRead()
和ExtAudioFileWrite()
。
概述你的所作所为:
ExtAudioFileOpenURL()
打开输入文件使用ExtAudioFileGetProperty()
和propertyId kExtAudioFileProperty_FileDataFormat
获取描述该文件的AudioStreamBasicDescription。
可能设置ASBD以获得所需的格式。 MacOSX上的AudioToolBox似乎比在iOS上更容易接受。
计算一个足够大的缓冲区以容纳整个音频文件
使用ExtAudioFileRead()
读取整个文件 - 注意:此调用可能无法一次性读取 - 操作方式与POSIX read()
执行标准化
ExtAudioFileCreateWithURL()
创建输出文件ExtAudioFileWrite()
写出规范化的样本。该文档链接到几个可以作为工作代码的捐赠者的示例项目。你会发现样本作为浮点数更容易进行规范化,但在iOS中,我永远无法让转换自动生成,因此您可能需要自行格式转换。