2012-08-13 172 views
1

我可以从Socket接收一个字节数组。我需要从这个字节数组播放音频 - 音频编码为AMR 8000Hz。在Android上播放来自amr的音频

我发现我可以用MediaPlayer播放AMR音频。但MediaPlayer不能从字节数组播放音乐,我不想将它们写入文件。

有没有办法从Android上的字节数组播放AMR声音?

回答

1

Android框架允许您使用AudioTrack类直接从内存播放音频数据;缺点是音频必须已经解码成PCM数据。如果您足够幸运能够瞄准Android 4.1,则有新的API允许您单独解码数据,以便将其传递到AudioTrack(请参阅MediaExtractorMediaCodec)。然而,在此之前,除了MediaRecorderMediaPlayer之外,没有用于编码/解码的暴露的API。

如果前4.1瞄准一个版本的Android(我想你可能是)你有两个选择:

  • 查找的AMR数据的第三方解码器,所以你可以把它传给AudioTrack
  • 您的数据保存到一个文件中(即使是暂时的),所以它可以交给MediaPlayer

HTH

+0

谢谢你,我还以为是相同的。你知道任何第三方库解码AMR到PCM? – 2012-08-13 18:20:35

+1

谷歌搜索拉上了这一个。看起来它可能是本地代码,所以你需要NDK:http://sourceforge.net/projects/opencore-amr/ – Devunwired 2012-08-13 18:27:00