iPhone - 使用AVAudioRecorder显示音频记录反馈

时间:2009-10-02 09:04:24

标签: iphone avaudiorecorder

我正在使用AVAudioRecorder类来记录到wav文件。我想实现一个记录反馈(如SpeakHere示例),它显示了录制级别。

我确实通过了SpeakHere示例,但无法理解录制级别是如何更改的。有人可以指导我一下需要做什么吗?

感谢。

2 个答案:

答案 0 :(得分:2)

如果您使用的是AVAudioRecorder,您可能只想使用以下功能来获取功率级别:

- (float)peakPowerForChannel:(NSUInteger)channelNumber
- (void)updateMeters

那些为你提供图表的价值。有更简单的方法来绘制这些值,但要了解SpeakHere样本是如何做到的,请参阅自述文件:

AQLevelMeter.h
AQLevelMeter.mm

The AQLevelMeter class defines the level meter view for the applcation, displaying the metering data from an AudioQueue object

LevelMeter.h
LevelMeter.m

LevelMeter is a base metering class, providing simple functionality for displaying level data

GLLevelMeter.h
GLLevelMeter.m

GLLevelMeter is a subclass of LevelMeter that uses OpenGL for drawing

AQRecorder.h
AQRecorder.m

答案 1 :(得分:0)

mahboudz的答案是正确的,虽然我发现这种方法比“peakPowerForChannel”更具响应性:

- (float)averagePowerForChannel:(NSUInteger)channelNumber

然后我通过这个计算将浮点值转换为更有用的0-10的比例:(确保使用MIN和MAX来强制该范围内的数字,因为在极少数情况下它可以超出0 -10。)

//
// Decrease the divisor to increase the responsiveness
//
int translatedValue = (averagePowerFloat / 6 + 11);

然后我在后台线程上有一个循环,每秒调用“updateMeters”10次,并用记录级别更新进度条。似乎工作得很好。