Android 2.3 AudioTrack问题(获取缓冲时间超时 - 是cpu挂钩吗?)

时间:2012-09-06 23:47:02

标签: android streaming cpu aac audiotrack

我正在编写一个缓冲AAC文件块的音频流应用程序,将这些块解码为PCM字节数组,并将PCM音频数据写入AudioTrack。偶尔,当我尝试跳到另一首歌时,我会收到以下错误,请拨打AudioTrack.pause()或AudioTrack.flush():

obtainbuffer timed out -- is cpu pegged?

接下来发生的事情就是音频的瞬间继续播放。我试过从SD卡读取一组AAC文件,得到了相同的结果。我期待的行为是音频立即停止。有谁知道为什么会这样?我想知道它是否是Android 2.3的音频延迟问题。

编辑:AAC音频包含ADTS标头。标头+音频有效负载构成我正在调用的ADTSFrame。它们一次一帧地馈送到解码器。从C层返回到Java Layer的结果PCM字节数组被送到Android的AudioTrack API。

编辑2:我今天得到了我的nexus 7(Android 4.1操作系统)。将相同的APP加载到设备上。完全没有任何这些问题。

1 个答案:

答案 0 :(得分:0)

采样率非常高。您的某个设备可能支持您使用的采样率,而另一个设备不能。请检查一下。我有同样的问题,它是关于采样率。使用44.1kHz(44100)并再试一次。