我正在使用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