如何在OpenAL中进行计量/平均峰值功率水平?

时间:2010-04-02 16:41:14

标签: iphone audio openal finch

我正在使用Finch声音引擎从AVAudioPlayer切换到OpenAL。我需要进行计量,即获得平均峰值水平。 Finch声音引擎不提供此功能,而且我对OpenAL完全不熟悉。我怎样才能做到这一点?任何例子都会非常感激。

1 个答案:

答案 0 :(得分:2)

我假设您正在寻找AVAudioPlayer的peakPowerForChannel:方法的替代品。不幸的是,没有。你必须自己动手。

OpenAL“声音”是“缓冲区”(您的样本数据,加载到内存中)和“源”的组合,它表示您希望应用于样本数据的属性。

OpenAL播放的简单方法是将整个文件加载到内存中,并在一次调用中播放整个文件。但是,您可以使用NSInputStream将一大块PCM样本数据从文件读入OpenAL缓冲区,使用alBufferData()使用您自己的函数计算峰值功率,使用您的源播放块,然后重复直到EOF

我知道你打算使用Finch,但你应该给AudioQueues一个真正的近距离观察(如果测量对你来说是一个关键特征)。它更适合这种类型的应用程序。特别是,kAudioQueueProperty_CurrentLevelMeterDB属性将为您提供峰值RMS(mPeakPower)或平均RMS级别(mAveragePower),您可以根据需要随时阅读。

祝你好运,编码愉快!

可能有用的一些资源: