AVAudioRecorder没有声音

Mo *_*and 6 objective-c avaudiorecorder ios avaudiosession

AVAudioPlayer某些情况下有问题.首先我的录音机工作正常.但是在VOIP呼叫和播放响铃built_in_Speaker并且多次使用音频会话后,挂断电话后,我首先无法录制带有声音的音频!但在第二次,每件事情都很好. 问题

条件是我提到我的音频是记录但没有声音!

我想知道它可能发生在哪种情况?

 self.audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
    return;
}

BOOL preparedToRecord = [self.audioRecorder prepareToRecord];
__block BOOL recordStarted = NO;

err = nil;
[self.audioSession setActive:YES error:&err];
if(err){
    NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
    return;
}

if (preparedToRecord){
    recordStarted = [self.audioRecorder record];
}
Run Code Online (Sandbox Code Playgroud)

Mo *_*and 4

解决了

我已经找到了这个问题的原因。我有addObserve我自己来捕获AVAudioSession的通知,并检查AudioSession中断/RoutChanging!问题是在我打电话后,我尝试更改到扬声器的音频路由,但是为 AudioRoutChanging 通知添加观察的类尝试阻止这种情况。因此音频会话路由每秒都在变化,无法录制音频。

结论 你应该这样做来录制音频:

1)确定许可

2)[self.audioSession setActive:YES error:&err];

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
Run Code Online (Sandbox Code Playgroud)

4)确保您的 路线在录制过程中不会改变。

4)确定您的目标补丁