2013-05-12 65 views
3

我需要在iPhone上錄製音頻(講座等),並通過耳機直接播放。同時使用AVAudioRecorder和AvAudioPlayer

我有代碼可以工作 - 大部分時間!

  1. 設置我AVAudioSession

    [AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord錯誤:零]

  2. 我設置了我的播放器和錄音機,它們都指向相同的URL。

    audioRecorder = [[AVAudioRecorder的alloc] initWithURL:soundFileURL 設置:recordSettings 錯誤:&錯誤];

    //設置音頻播放 audioPlayer = [[AVAudioPlayer的alloc] initWithContentsOfURL:soundFileURL 錯誤:&錯誤];

  3. 我準備播放和錄製

    [audioRecorder prepareToRecord] [audioPlayer prepareToPlay];

一切進展良好一段時間。然後突然,玩家停下來,目前的時間爲零。

它看起來並不像它已經釋放,因爲我可以從開始位置開始播放錄製的聲音。停止在每次不同的時間看似隨機發生。

任何人有什麼問題或如何調試的建議?

在此先感謝!

+0

這似乎是一種競爭條件。如果記錄器沒有足夠快地插入數據,則播放器將到達最後並停止。看看這個問題:http://stackoverflow.com/questions/7184341/ios-sample-code-for-simultaneous-record-and-playback – borrrden 2013-05-13 03:48:40

回答

2

總結下面的漫遊:根據我的經驗,AVAudioPlayer只會在文件有數據時纔會播放,當它初始化時。

我正在努力與同樣的事情;我想知道你是否找到了一個好的解決方案。我正在製作一個類似的項目(我希望能夠錄製,並在錄製過程中以很小的延遲進行播放)。

我開始創建一個AVAudioRecorder,它工作正常。然後我用initWithContentsOfURL啓動一個AVAudioPlayer,指向同一個文件。

我發現的是,如果播放器啓動時,如果在該文件中有3秒鐘的聲音(通過.duration屬性),即使AVAudioRecorder在播放器啓動後3秒鐘後也會停止。

我試圖通過創建第二個播放器來解決這個問題,一旦第一個播放器接近錄製的最初持續時間結束,但這會導致我似乎擺脫自己的一小部分音頻丟失。

如果我們只能告訴AVAudioPlayer繼續閱讀文件!

相關問題