我正在为Android OS开发一个Android应用程序> 4.0(包括和发布操作系统)。我有一个示例m3u8文件如下:
#EXTM3U
#EXT-X-TARGETDURATION:56
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:28, no desc
ulr/audio/file.mp3
#EXTINF:28, no desc
ulr/audio/file.mp3
#EXT-X-ENDLIST
我试图播放该文件,使用以下代码
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try
{
mMediaPlayer.setDataSource(uri);
} catch (IllegalArgumentException e)
{
e.printStackTrace();
} catch (SecurityException e)
{
e.printStackTrace();
} catch (IllegalStateException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
mMediaPlayer.prepareAsync();
和我的onPrepared()
方法如下:
public void onPrepared(MediaPlayer player)
{
player.start();
}
但代码首先来到onPrepared()
,然后立即转到onError()
,what=1
和extra=-1010
。
我知道此问题已被多次询问(例如here,here和here),我也知道Vitamio,但我想了解一下我的实施有什么问题。我创建的m3u8文件有问题吗?我经历了它documentation,一切似乎都是正确的。
如果有人能在这件事上发挥一些启示,那真的很高兴。
- 提前谢谢
答案 0 :(得分:0)
错误代码-1010与MEDIA_ERROR_UNSUPPORTED匹配,这意味着设备没有解码播放列表中MP3文件所需的硬件或软件编解码器。
Vitamio可以在这种情况下工作,因为它为媒体添加了软件解码。这比硬件解码慢,并且使用更多电池。它还可以显着增加您的应用尺寸。
这看起来很奇怪,因为MP3在Android中解码很长时间supported media format。