我有这些代码,两个方法调用都是SUCCESS。
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory: AVAudioSessionCategoryPlayAndRecord error: NULL];
[audioSession setActive: YES error: NULL];
这些代码开始录制:
[self.recorder prepareToRecord];
[self.recorder recordForDuration: 60];
我有一个更新米的计时器功能
- (void)updateMeters
{
[self.recorder updateMeters];
float peakPower = [self.recorder averagePowerForChannel: 0];
double ALPHA = 0.05;
double peakPowerForChannel = pow(10, (ALPHA * peakPower));
self.recordView.progress = peakPowerForChannel;
NSLog(@"%f", peakPower);
}
但我不知道为什么peakPower总是160.我有另一个演示(来自网络)可以很好地工作,但我找不到它们之间的任何区别。
答案 0 :(得分:2)
试着设置:
recorder.meteringEnabled = YES;
答案 1 :(得分:1)
将类别设置为AVAudioSessionCategoryPlayAndRecord
并检查
NSError *error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (error) {
NSLog(@"Error description: %@", [error description]);
}
答案 2 :(得分:1)
奇怪的是[audioSession setCategory: AVAudioSessionCategoryPlayAndRecord error: &err]
和[[AVAudioRecorder alloc] initWithURL: [NSURL fileURLWithPath: self.recordPath] settings: recordSetting error: NULL]
必须在同一个函数中......这是这个问题的答案。