나는 AAC 파일 청크를 버퍼링하고 청크를 PCM 바이트 배열로 해독하며 PCM 오디오 데이터를 AudioTrack에 씁니다. 나도 다른 곡으로 건너 뛰려고 할 때 때때로, 나는 다음과 같은 오류가) AudioTrack.pause() 또는 AudioTrack.flush을 (전화 :안드로이드 2.3 AudioTrack 문제 (getsbuffer 시간 초과 - cpu가 고정되어 있습니까?)
obtainbuffer timed out -- is cpu pegged?
을 그리고 무슨 일입니다 오디오의 분할 초 계속해서 놀아요. 나는 sdcard에서 AAC 파일 세트를 읽으려고했지만 같은 결과를 얻었습니다. 예상하고있는 동작은 오디오가 즉시 중단된다는 것입니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까? 안드로이드 2.3에서 오디오 대기 시간 문제가 있는지 궁금합니다.
편집 : AAC 오디오에는 ADTS 헤더가 있습니다. 헤더 + 오디오 페이로드는 내가 ADTSFrame이라고 부르는 것을 구성합니다. 이들은 디코더에 한 번에 한 프레임 씩 공급됩니다. C 레이어에서 Java 레이어로 반환되는 결과 PCM 바이트 배열은 Android의 AudioTrack API에 제공됩니다.
편집 2 : 오늘 내 넥서스 7 (Android 4.1 OS)이 있습니다. 같은 APP를 장치에로드했습니다. 이러한 문제가 전혀 없었습니다.