2

我想比较我正在为学校工作的 iPhone 应用程序的两个音频文件的平均音量(以 dB 为单位)。我在 Xcode,Objective-C 中工作。

经过一些研究,我在 AVFoundation 框架中找到了“averagePowerForChannel:”,但我无法弄清楚它是如何工作的。这是一些代码:

NSString *stringPath = [NSBundle mainBundle]pathForResource:wavname ofType:@"wav"];
NSURL *url = [NSURL fileURLWithPath:stringPath];
avPlayer = [[AVaudioPlayer alloc]initWithContentsOfUrl:url error:nil];
[avPlayer play];

上面的代码播放一个名为“wavname”的 .wav 文件。我如何确定它的平均音量?

[avPlayer averagePowerForChannel:0];

如果我只是在上面添加 te 代码,它将返回 -160.000。我猜这是音频文件开头的音量。

我该如何正确使用它?因为,目前,我不明白为什么它被称为“averagePower”,因为它似乎只在一个时间点检查音量。

4

1 回答 1

0

averagePowerForChannel:只返回播放或录制通道的平均功率。iow,它对于分析整个文件不是很有用。该方法对电流表值很有用(作为一个例子)。

要分析文件,请读取其所有样本数据(例如使用 ExtAudioFile API),计算其二次平均值(对于 RMS)。

于 2012-11-16T10:54:47.713 回答