我正在为 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=1
和extra=-1010
.
我知道这个问题已经被问过很多次了(例如 here、here 和 here),我也知道 Vitamio ,但我想找出我的实现有什么问题。我创建的m3u8文件有问题吗?我浏览了它的 documentation一切似乎都是正确的。
如果有人能对此事有所了解,我们将非常高兴。
最佳答案
错误代码 -1010 与 MEDIA_ERROR_UNSUPPORTED 匹配这意味着该设备没有解码播放列表中的 MP3 文件所需的硬件或软件编解码器。
Vitamio 可以在这种情况下工作,因为它为媒体添加了软件解码。这比硬件解码慢,并且使用更多电池。它还会显着增加您的应用程序大小。
不过,这似乎很奇怪,因为 MP3 一直是 supported media format用于在 Android 中解码很长时间。
关于android - 使用 android 媒体播放器播放 m3u8 音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901891/