2009-07-04 66 views
3

我正在研究幾個不同的iphone應用程序,它們同時錄製和播放聲音。認爲多軌混音...播放一個聲音並保存,然後在將另一個聲音錄製到另一個文件時聽該聲音。我的機制是啓動兩個不同的音頻隊列,一個用於錄製,另一個用於播放。iPhone OS 3.0上的音頻錄製錯誤kAudioQueueErr_CannotStart

這是工作的A-OK,直到OS 3.0版本...但自那以後,會發生以下情況:

如果我第一次開始錄製隊列,它理應啓動正常,但調用AudioQueueStart回放隊列返回kAudioQueueErr_CannotStart。

如果我首先啓動回放隊列,它也可能會正常啓動,但對記錄隊列的AudioQueueStart調用返回相同的錯誤kAudioQueueErr_CannotStart。

任何人有任何運氣調試此錯誤?看起來好像兩個隊伍正在跺腳對方的記憶或什麼?官方說明是:「音頻隊列遇到問題,無法啓動。」不是超級有用...

傑里米

+0

音頻會話管理原來是問題所在。這些文檔有點吸引人,因爲它們暗示只有處理音頻會話才能管理應用與其他應用的交互方式。絕對不是這樣。謹防。 – 2009-07-08 22:49:26

回答

6

這是一種陳詞濫調的答案,但您是否使用音頻會話API將您的音頻類別設置爲「播放和錄製」?您必須這樣做才能爲您的應用程序的使用預留麥克風。在3.0中對音頻會話進行了一系列更改(創建obj-c便捷類AVAudioSession並定義一些新類別),因此可能會發生更改,從而可能會讓您感到困惑。

順便說一句,如果你不在coreaudio-api列表(lists.apple.com),你應該是。社區和蘋果工程師真的很有幫助。

+0

更具體地說: UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty( kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory ); 爲我工作。 – 2010-03-21 10:17:44

0

也許我錯了,但是我只有一個(活動?)音頻隊列可以同時存在的感覺。

您可能需要將輸出音頻隊列切換到音頻設備(遠程IO)。
而AudioQueues是一種蹩腳的回放,所以一個音頻單元不會傷害。

這個人設法做到了,並在這blog post談到它。