我正在使用AVAudioRecorder类记录到一个wav文件。我想要实现一个记录反馈(如SpeakHere示例),其中显示了录制级别。iPhone - 使用AVAudioRecorder显示音频记录反馈
我确实经历了SpeakHere样本,但无法理解记录级别是如何改变的。有人能指导我需要做什么吗?
谢谢。
我正在使用AVAudioRecorder类记录到一个wav文件。我想要实现一个记录反馈(如SpeakHere示例),其中显示了录制级别。iPhone - 使用AVAudioRecorder显示音频记录反馈
我确实经历了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”更加敏感:
- (float)averagePowerForChannel:(NSUInteger)channelNumber
然后我翻译的浮点值的0-10与此计算一个较为有用的规模:(请务必使用MIN和MAX强制执行数为的范围内,因为在罕见的情况下它可以走到0-10之外。)
//
// Decrease the divisor to increase the responsiveness
//
int translatedValue = (averagePowerFloat/6 + 11);
然后我在后台线程上有一个循环,每秒调用“updateMeters”10次,并更新进度条和记录级别。似乎工作得很好。
但使用这些只会给我的价值。 SpeakHere究竟如何使用Core Animation来显示录音电平条?谢谢。 – lostInTransit 2009-10-02 09:26:05
什么是更简单的方法?你能否也请包括这一点! – lostInTransit 2009-10-02 16:01:09
最简单的使用方法是使用十一种不同的png并使用它们,每个级别从0到10代表一个级别。然后是UIProgressBar。如果你想有一些能够在当前级别的同时显示最高级别的东西,那么你可以使用一个PNG作为背景,一个PNG作为一个酒吧,并画几次酒吧,以显示级别,并将最高酒吧保留几秒钟,然后淡出。你可以有一个红色的酒吧,除了绿色的酒吧来表示价值超过极限。 – mahboudz 2009-10-02 18:43:32