我正在使用AVAudioRecorder类来记录到wav文件。我想实现一个记录反馈(如SpeakHere示例),它显示了录制级别。
我确实通过了SpeakHere示例,但无法理解录制级别是如何更改的。有人可以指导我一下需要做什么吗?
感谢。
答案 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)
- (float)averagePowerForChannel:(NSUInteger)channelNumber
然后我通过这个计算将浮点值转换为更有用的0-10的比例:(确保使用MIN和MAX来强制该范围内的数字,因为在极少数情况下它可以超出0 -10。)
//
// Decrease the divisor to increase the responsiveness
//
int translatedValue = (averagePowerFloat / 6 + 11);
然后我在后台线程上有一个循环,每秒调用“updateMeters”10次,并用记录级别更新进度条。似乎工作得很好。