2012-09-06 60 views
0

我正在寫一個音頻流應用程序,緩衝AAC文件塊,將這些塊解碼爲PCM字節數組,並將PCM音頻數據寫入AudioTrack。偶爾,我碰到下面的錯誤,當我嘗試要麼跳到不同的歌曲,叫AudioTrack.pause(),或AudioTrack.flush():Android 2.3 AudioTrack問題(getsbuffer超時 - 是cpu掛?)

obtainbuffer timed out -- is cpu pegged? 

然後發生的事情是音頻的一瞬間繼續玩。我試過從SD卡上讀取一組AAC文件並得到了相同的結果。我期望的行爲是音頻立即停止。有誰知道爲什麼發生這種情況?我不知道它是Android 2.3的一個音頻延遲問題。

編輯:AAC音頻包含ADTS標題。頭+音頻有效載荷構成了我所說的ADTSFrame。這些一次一幀地饋送到解碼器。從C層返回到Java層的結果PCM字節數組被送到Android的AudioTrack API。

編輯2:今天我得到了我的nexus 7(Android 4.1 OS)。將相同的APP加載到設備上。根本沒有任何這些問題。

回答

0

關於採樣率很有可能。您的其中一臺設備可能支持您使用的採樣率,而其他設備則無法支持。請檢查一下。我有同樣的問題,這是關於採樣率。請使用44.1kHz(44100),然後再試一次。