3

我正在为 android OS > 4.0(包括和发布 OS)开发一个 android 应用程序。我有一个示例 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

我知道这个问题已经被问过很多次了(例如这里这里这里),我也知道Vitamio,但我想找出我的实现有什么问题。我创建的 m3u8 文件有问题吗?我浏览了它的文档,一切似乎都是正确的。

如果有人可以在这件事上有所启发,那将非常高兴。

-提前致谢

4

1 回答 1

0

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

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

不过,这似乎很奇怪,因为 MP3 长期以来一直是Android 中支持解码的媒体格式

于 2014-09-09T21:06:54.390 回答