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

iPhone-使用AVAudioRecorder显示音频录制反馈,iphone,avaudiorecorder,Iphone,Avaudiorecorder,我正在使用AVAudioRecorder类录制到wav文件。我想实现一个录音反馈(如SpeakHere示例),它显示录音级别 我确实查看了SpeakHere示例,但无法理解录制级别是如何更改的。有人能告诉我需要做什么吗 谢谢。如果您使用的是AVAudioRecorder,您可能只需要使用以下功能即可获得功率级别: - (float)peakPowerForChannel:(NSUInteger)channelNumber - (void)updateMeters 这些为您提供了要绘制的值。有更

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

我确实查看了SpeakHere示例,但无法理解录制级别是如何更改的。有人能告诉我需要做什么吗


谢谢。

如果您使用的是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

mahboudz的答案是正确的,尽管我发现这种方法比“peakPowerForChannel”更灵敏:

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


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

但使用这些只会得到值。SpeakHere如何使用核心动画来显示录制级别栏?谢谢。那更简单的方法是什么?你能不能也包括在内!它使用的最简单的方法是使用11个不同的png,并且使用它们,0-10之间的每个级别一个来表示级别。然后是酒吧。如果你想在显示当前关卡的同时显示最大关卡,那么你可以使用一个png作为背景,一个png作为一个关卡,画几次关卡来显示关卡,最高的关卡保持几秒钟,然后淡出。除绿色条外,您还可以使用红色条表示超出限制的值。
- (float)averagePowerForChannel:(NSUInteger)channelNumber
//
// Decrease the divisor to increase the responsiveness
//
int translatedValue = (averagePowerFloat / 6 + 11);