我在某些条件中遇到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];
}
答案 0 :(得分:4)
<强>解决强>
我找到了这个问题的原因。
我有addObserve我自己来捕获AVAudioSession的通知,并检查AudioSession
中断/ RoutChanging!
问题是我的电话后我试图将音频路由更改为扬声器但是为AudioRoutChanging通知添加了一个类,试图阻止它。所以音频会话路由每秒都会改变,并且无法录制音频。
<强>结论强> 你应该这样做来录制音频:
1)确定权限
2)[self.audioSession setActive:YES error:&err];
3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
4)确保您的路线在录制过程中不会发生变化。
4)确定您的目的地补丁
答案 1 :(得分:-1)
录制音频需要用户明确许可。应用程序的音频会话在使用启用录制的类别时首次尝试使用音频输入路径时,系统会自动提示用户进行许可。您可以通过调用requestRecordPermission:方法明确地询问。在用户授予您的应用程序录制权限之前,您的应用只能录制静音。