我想完成的基本上如下:
- 打开一个文件,根据它的持续时间确定我需要多少个"样本"
- 将文件划分为x个样本;确定每个样品的(平均)功率电平/幅度。
- 使用这些样本值,继续绘制表示音频的波形(可能遵循这些指导方针)
我花了大约三天的时间,仔细地搜索了在线论坛、书籍和api,但一无所获。我被困在最关键的一步->确定音频块(缓冲区)的功率水平。
在阅读了即将出版的核心音频书籍的大部分之后,我已经习惯了AudioQueues, Audio Units的低级环境,在某种程度上- OpenAL。然而,我所见过的所有例子和解释(在本书和网络上的其他地方)都是在音频文件播放或录制时(即。
然而,我的目的是快速有效地确定磁盘上给定文件的这些值,而不必实时回放它。对于哪些库,我需要看函数的任何指导将非常感激。谢谢。
有几种方法可以实现这一点。您可以将整个文件读入内存,然后应用分析。或者读取文件的块,并使用AudioFileReadPackets(…)在AudioFile.h中获得每个块的平均级别。
你卡在哪个部位了?我还没有尝试过读取或写入文件,所以其他人可以在这方面帮助您。但是在实际处理音频流方面你会想要使用加速框架。其中包含用于获取所需数据的函数。为了获得功率电平,我不确定是否需要先对信号进行FFT。
如果你这样做,我已经写了一个很长的答案使用苹果FFT和加速框架关于如何使用加速框架做FFT。
我记得查看了函数列表—有用于查找信号中峰值和平均功率的函数。为了使用这些函数,您可能希望将音频信号读取为一堆浮点数。