據我所知,如果將Android編碼爲MPEG-4或3GPP,Android將只播放AAC格式的音頻。使用Android流式傳輸AAC音頻
我可以播放以M4A格式編碼的AAC音頻,但它在從服務器獲取時會失敗。
以下工作,因爲m4a文件在res/raw目錄中保存在本地。
MediaPlayer mp = MediaPlayer.create(this, R.raw.*file*);
mp.start();
以下不起作用。 (但與MP3的)。
Uri uri = Uri.parse("http://*example.com*/blah.m4a");
MediaPlayer mp = MediaPlayer.create(this, uri);
mp.start();
任何人都可以說明爲什麼它失敗時,m4a音頻文件不是本地?
這裏的(一些)的錯誤...
ERROR/PlayerDriver(542): Command PLAYER_INIT completed with an error or info UNKNOWN PVMFStatus
ERROR/MediaPlayer(769): error (200, -32)
WARN/PlayerDriver(542): PVMFInfoErrorHandlingComplete
DEBUG/MediaPlayer(769): create failed:
DEBUG/MediaPlayer(769): java.io.IOException: Prepare failed.: status=0xC8
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.prepare(Native Method)
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.create(MediaPlayer.java:530)
DEBUG/MediaPlayer(769): at android.media.MediaPlayer.create(MediaPlayer.java:507)
...
我針對SDK 1.6。
你在編碼與文件格式混淆。 AAC是一種音頻編碼格式。 M4A是位於AAC數據周圍的文件類型或包。 3GPP類似,但可以包含其他類型的編碼音頻。看到這裏http://developer.android.com/guide/appendix/media-formats.html和這裏http://en.wikipedia.org/wiki/M4a。 – greg7gkb 2010-09-28 18:28:28
的確,我應該將3GPP和M4A描述爲AAC音頻的「容器」。我認爲* M4A只能用於靜態文件,而3GPP只能使用RTSP而不是HTTP進行流式傳輸?這會導致HTTP流式傳輸出現問題。糾正我,如果我錯了... – bdls 2010-09-30 21:40:50