2012-08-13 118 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