AVAudioRecorder 没有声音

Posted

技术标签:

【中文标题】AVAudioRecorder 没有声音【英文标题】:AVAudioRecorder hasn't sound 【发布时间】:2016-02-01 08:41:26 【问题描述】:

我在某些情况中遇到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];

【问题讨论】:

【参考方案1】:

已解决

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

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

1) 确定权限

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

3)[self.audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];

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

4)确定你的目标补丁

【讨论】:

【参考方案2】:

录音音频需要来自用户的明确权限。第一次同时使用一个类别,使记录您的应用程序的音频会话尝试使用音频输入路线,系统会自动提示用户授予权限。你可以明确地问早些时候通过调用requestRecordPermission:方法。直到用户授予您的应用程序权限的记录,您的应用程序可以记录只有沉默。 P>

这里指: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

【讨论】:

我已经得到许可,首家推出应用程序,和我提到我在调用中使用的音频会话,它工作正常!我解决我很快就在这里说明了问题。 TNX您的回复! SPAN>

以上是关于AVAudioRecorder 没有声音的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioRecorder:峰值和平均功率

通过 AVAudioRecorder 录制声音

为啥我无法播放 AVAudioRecorder 录制的声音文件?

AVAudioRecorder & AVAudioPlayer - 内置扬声器的声音输出,如何更改?

AVAudioRecorder 支持哪些格式来录制声音?

保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS,Xcode 4)