使用Android媒体播放器播放m3u8音频文件

时间:2013-04-09 12:28:08

标签: android android-mediaplayer playlist m3u8

我正在为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=1extra=-1010

我知道此问题已被多次询问(例如hereherehere),我也知道Vitamio,但我想了解一下我的实施有什么问题。我创建的m3u8文件有问题吗?我经历了它documentation,一切似乎都是正确的。

如果有人能在这件事上发挥一些启示,那真的很高兴。

- 提前谢谢

1 个答案:

答案 0 :(得分:0)

错误代码-1010与MEDIA_ERROR_UNSUPPORTED匹配,这意味着设备没有解码播放列表中MP3文件所需的硬件或软件编解码器。

Vitamio可以在这种情况下工作,因为它为媒体添加了软件解码。这比硬件解码慢,并且使用更多电池。它还可以显着增加您的应用尺寸。

这看起来很奇怪,因为MP3在Android中解码很长时间supported media format