我需要构建一个可视图表来表示录制文件中的语音级别(dB).我试着这样做:
NSError *error = nil;
AVAudioPlayer *meterPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:self.recording.fileName] error:&error];
if (error) {
_lcl_logger(lcl_cEditRecording, lcl_vError, @"Cannot initialize AVAudioPlayer with file %@ due to: %@ (%@)", self.recording.fileName, error, error.userInfo);
} else {
[meterPlayer prepareToPlay];
meterPlayer.meteringEnabled = YES;
for (NSTimeInterval i = 0; i <= meterPlayer.duration; ++i) {
meterPlayer.currentTime = i;
[meterPlayer updateMeters];
float averagePower = [meterPlayer averagePowerForChannel:0];
_lcl_logger(lcl_cEditRecording, lcl_vTrace, @"Second: %f, Level: %f dB", i, averagePower);
}
}
[meterPlayer release];
Run Code Online (Sandbox Code Playgroud)
如果它解决了它会很酷,但事实并非如此.我总是得到-160分贝.关于如何实现的任何其他想法?
UPD:这是我最后得到的:
我知道,这很奇怪,但即使您将hidesBackButton声明为与您的视图关联的UINavigationItem为YES,您也可以返回只是触摸本来是后退按钮的区域.
分享我的解决方案......(更多内容)