标准化音频文件 obj-c
Posted
技术标签:
【中文标题】标准化音频文件 obj-c【英文标题】:Normalize Audio File obj-c 【发布时间】:2013-01-14 21:32:50 【问题描述】:是否有标准化声音文件的库函数?我找遍了,但没有找到。
我希望能够规范化声音文件并将其设置到声音文件中,这样它只需要完成一次而不是即时完成。
这可以用 Core-Audio 完成吗?
【问题讨论】:
【参考方案1】:是的,它可以完成,但不能通过单个函数调用。
您想要的功能实际上不是 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 中,我永远无法让转换自动工作,因此您可能必须自己进行格式转换。
【讨论】:
谢谢,看看这个。以上是关于标准化音频文件 obj-c的主要内容,如果未能解决你的问题,请参考以下文章
FFmpeg:流式音频播放列表,标准化响度并生成频谱图和波形