【问题标题】:Play m3u8 audio file using android media player使用 android 媒体播放器播放 m3u8 音频文件
【发布时间】:2023-03-17 17:04:01
【问题描述】:

我正在为 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

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

如果有人能在这件事上有所启发,我会很高兴。

【问题讨论】:

    标签: android android-mediaplayer playlist m3u8


    【解决方案1】:

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

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

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

    【讨论】:

    • 很久没问这个问题了。但是,正如您所说,设备绝对支持 MP3,因为当它们单独播放时,它们曾经播放过。
    • 我在使用包含 AAC-LC 格式文件的 m3u8 流时遇到了同样的问题。谷歌表示所有安卓设备都应该支持 AAC-LC 解码,但我仍然在其中一些设备上始终收到 -1010 错误。我目前只是发现错误,然后为用户提供一个选项,让他们尝试使用手机上的另一个应用打开流(通过意图)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多