2012-09-06 5 views
0

나는 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를 장치에로드했습니다. 이러한 문제가 전혀 없었습니다.

답변

0

샘플 속도가 매우 높습니다. 하나의 장치가 다른 샘플은 사용할 수없는 동안 사용 된 샘플 속도를 지원할 수 있습니다. 그것을 확인하십시오. 나는 샘플 률에 관한 것이 었습니다. 44.1kHz (44100)를 사용하고 다시 시도하십시오.