2016-02-01 2 views
6

AVAudioPlayerに問題がありますいくつかの条件です。最初の私のオーディオレコーダーでは が正常に動作します。しかし、VOIPの呼び出しと再生の後にbuilt_in_Speakerからの呼び出し音とオーディオセッションで多くの作業、電話を切った後、私は最初に音でオーディオを記録することはできません!しかし、2回目にはすべてうまく動作します。 問題AVAudioRecorderは音が出ません

私のオーディオは録音されていましたが、音声はありませんでした。

私はどのような状況で起こっているのか知りたいですか?

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]; 
} 

答えて

4

は、私は、この問題の原因を発見した

を解決しました。 私はAVAudioSessionの通知をキャッチするために自分自身をaddObserveし、AudioSession割り込み/ RoutChangingをチェックしてください! 問題は私の電話の後でスピーカーへのオーディオルートを変更しようとしましたが、AudioRoutChanging通知のaddobservedクラスはそれを防ぐようにしています。オーディオセッションのルートが毎秒変わり、オーディオを録音できませんでした。あなたは、音声を記録するために、次のように行う必要があります

結論

1)必ずごルートわからについて許可

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

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

4)の間に変化することはありません録音。

4)は、iアプリの最初の立ち上げに許可を得る必要があり、そして私は私のコールにオーディオセッションを使用言及したし、それが正常に動作しているあなたの先のパッチ

-1

音声を録音するには、ユーザーからの明示的な許可が必要です。録音を有効にするカテゴリを使用しているときに、アプリケーションのオーディオセッションがオーディオ入力ルートを初めて使用しようとすると、システムは自動的にユーザーに許可を求めるメッセージを表示します。 requestRecordPermission:メソッドを呼び出すことによって、明示的に前に尋ねることができます。ユーザーがアプリに記録権を与えるまで、アプリは無音だけを録音できます。

はこちらをご参照: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/index.html

+0

わから! 私はすぐにここで説明した問題を解決します。あなたの返信のために tnx! – Mohamad

関連する問題