【发布时间】:2010-12-11 16:20:21
【问题描述】:
据我了解,Android 只会播放编码为 MPEG-4 或 3GPP 的 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 类似,但可以包含其他类型的编码音频。请参阅此处developer.android.com/guide/appendix/media-formats.html 和此处en.wikipedia.org/wiki/M4a。
-
没错,我应该将 3GPP 和 M4A 描述为 AAC 音频的“容器”。在我的脑海中,我认为 M4A 只能用于静态文件,而 3GPP 只能使用 RTSP 而不是 HTTP 进行流式传输?这会导致 HTTP 流式传输出现问题。如果我错了,请纠正我...