2011-01-19 118 views
1

我在我的iPad項目中實現了兩個AVAudioPlayer。 我正在播放一個播放器對象 的聲音,並同時與其他播放器進行錄製。用兩個不同的播放器播放和錄製聲音的問題

第一個場景

1.Player1正在錄製我說的話。 2.同時,player1也在錄製與player2一起播放的音樂。

*如果我沒有將任何帶麥克風的耳機插入iPad,此方案工作正常。

*但是,如果我在耳機插入到我的iPad &重複出現上述情況,有以下幾點觀察:

我。我可以聽到耳機中player2播放的音樂。

ii。但是當我停止通過耳機的麥克風錄製我的聲音時,播放錄製的曲目時沒有音樂聲音。我只能聽到我通過耳機麥克風錄製的聲音。這是我的問題。 我想用「帶麥克風的耳機」,我的應用程序應該與情景1一樣。

我使用我的AVAudioSession以下設置:

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
      NSError *err = nil; 
      [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err]; 

以下是刻錄機的記錄設置:

NSDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys: 
              [NSNumber numberWithFloat: 44100.0],AVSampleRateKey, 
              [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey, 
              [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, 
              [NSNumber numberWithInt: AVAudioQualityMax],AVEncoderAudioQualityKey,nil]; 

曲目保存在.wav文件格式。

此外,player2播放的音樂是.wav或.mp3格式。

請幫我解決這個問題。

回答

1

我有點生疏與AVAudioSession,所以不能提供直接幫助。我能說的是,往往會發生的是,當人們發現他們無法按照AVAudioSession的要求做他們想做的事情時,他們轉向了OpenAL。 OpenAL可能有點讓人望而生畏,但我做了什麼,是下載Cocos2D。關於Cocos2D(CocosDenshion)的好處是它具有OpenAL的這些簡單包裝類。 代碼全部暴露出來,所以你可以在其中查看它是如何工作的。設置起來有點棘手(你必須關心框架並將源代碼添加到你的項目中),但是一旦你完成了排序,它就很好。

這對我來說是最好的道路,希望它也適合你!

...再次讀這個問題,當您的耳機/耳機打開時,錄音機(是錄製環境聲音)是不是錄製任何音樂聲音?解決方案似乎是回放原始音樂,同時錄製(同時)。