2012-08-13 1 views
1

Socket에서 바이트 배열을받을 수 있습니다. 이 바이트 배열에서 오디오를 재생해야합니다. 오디오는 AMR 8000Hz로 인코딩됩니다.Android에서 amr의 오디오 재생

MediaPlayer으로 AMR 오디오를 재생할 수있는 것으로 나타났습니다. 그러나 MediaPlayer은 바이트 배열에서 음악을 재생할 수 없으며 파일에 쓸 필요가 없습니다.

안드로이드의 바이트 배열에서 AMR 사운드를 재생하는 방법이 있습니까?

답변

1

Android 프레임 워크를 사용하면 AudioTrack 클래스를 사용하여 메모리에서 직접 오디오 데이터를 재생할 수 있습니다. 단점은 오디오가 이미 PCM 데이터로 디코딩되어야한다는 것입니다. Android 4.1을 타겟팅 할만큼 운이 좋다면 데이터를 별도로 디코딩 할 수있는 새로운 API가 있으므로 AudioTrack (MediaExtractorMediaCodec 참조)에 전달할 수 있습니다. 그러나 그 이전에는 MediaRecorderMediaPlayer 이상의 인코딩/디코딩을위한 노출 된 API가 없었습니다.

하면 (아마 당신이 상상할 수있는) 두 가지 옵션이 이전에 4.1로 안드로이드 버전을 대상으로 : 당신이 AudioTrack에게 전달 할 수 있도록

  • 는 AMR 데이터에 대한 제 3 자 디코더를 찾기를 나도 같은 생각, 감사
  • 는 (심지어 일시적으로) 파일에 데이터를 저장 그래서 MediaPlayer

HTH

+0

을 물려 될 수있다. AMR을 PCM으로 디코딩 할 타사 라이브러리를 알고 있습니까? –

+1

구글 검색이 이걸 찾아 냈습니다. 네이티브 코드처럼 보입니다. NDK가 필요합니다. http://sourceforge.net/projects/opencore-amr/ – Devunwired