我正在尝试使用 AVAudioRecorder 实例录制声音,整个录制进度运行良好,除了当我调用 [recorder peakPowerForChannel:0] 尝试获取音量时,返回值始终为 0,这很奇怪..
我检查了录制的音频文件,完全没问题。然后我使用 AVAudioPlayer 播放它,在播放过程中,我调用 [player peakPowerForChannel:0],返回值似乎正确且有意义。
我怎样才能得到正确的价值?我已经设置了:recoder.meteringEnabled = YES,并且每次调用 [recorder peakPowerForChannel:0] 时都会调用 [recorder updateMeters]。录音机的首字母如下:
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
//General Audio Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 'ima4'] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
//Linear PCM Format Settings
[recordSetting setValue:[NSNumber numberWithInt: 32] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
//Encoder Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityMedium] forKey:AVEncoderAudioQualityKey];
[recordSetting setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitDepthHintKey];
//Sample Rate Conversion Settings
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVSampleRateConverterAudioQualityKey];
recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:nil];
recorder.meteringEnabled = YES;