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

标签 android android-mediaplayer playlist m3u8

我正在为 android 操作系统 > 4.0(包括和发布操作系统)开发一个 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.

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

如果有人能对此事有所了解,我们将非常高兴。

最佳答案

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

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

不过,这似乎很奇怪,因为 MP3 一直是 supported media format用于在 Android 中解码很长时间。

关于android - 使用 android 媒体播放器播放 m3u8 音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901891/

相关文章:

android - Jsoup 获取不同的 HTML,只有默认查询页面,而不是结果页面

android - 如何修复错误 (1, -2147483648)

android - 什么时候应该使用 JetCreator 或 SoundPool?

android - 如何设置 TextView 颜色与角度的渐变?

android - 是否可以显示android中单个进程正在接管的所有资源?

android - ImageView/ImageButton 中的 srcCompat 和背景有什么不同

android - 如何使用 adb 命令获取媒体播放器状态

android - setOnCompletionListener 仅在第一次检测完成

youtube - 是否可以通过单个请求获取 YouTube 播放列表的标题、描述和项目?

ios - JWPlayer播放列表如何播放自定义索引?