我試圖從錄制的音頻樣本中獲取分貝值,以便制作波形圖并處理其峰值。目前,我正在使用由計時器呼叫的AVAudioRecorder來錄制音頻檔案并訪問其資料庫值[recorder averagePowerForChannel:0],但是我面臨著限制。由于我需要盡可能精確,因此我將計時器設定為以 0.001 秒重復,但是[recorder averagePowerForChannel:0]在每個刻度上呼叫多次輸出相同的值。似乎記錄器無法更新低于 0.2 秒的值。我怎樣才能克服這個限制?
這是錄音機設定:
NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithFloat: 44000.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMax], AVEncoderAudioQualityKey,
nil];
然后我設定了錄音機
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:settings error:&error];
[recorder setMeteringEnabled:YES];
[recorder prepareToRecord];
[recorder record];
timer = [NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector: @selector(cllBack:) userInfo: nil repeats: YES];
在回呼中我打電話
[recorder updateMeters];
[recorder averagePowerForChannel:0];
在此先感謝您的幫助!
uj5u.com熱心網友回復:
通過在總線上安裝一個水龍頭并分析資料,使用 AVAudioEngine 解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401693.html
