使用Android媒体播放器播放m3u8音频文件
问题描述:
我正在为android OS> 4.0(包括和发布OS)开发android应用程序。我有一个样品M3U8文件,如下所示:使用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,一切看起来都正确。
如果有人可以在这件事情上投下一些光芒,会真的很高兴。
-Thanks提前
答
错误代码-1010与MEDIA_ERROR_UNSUPPORTED相匹配这将意味着该设备没有它需要在您的播放列表中的MP3文件解码的硬件或软件编解码器。
Vitamio会在这种情况下工作,因为它增加了媒体的软件解码。这比硬件解码慢,并使用更多的电池。它也可以显着增加您的应用程序的大小。
虽然这似乎很奇怪,因为MP3已经是一个supported media format用于在Android中解码很长时间了。
自从我问这个问题以来,它已经很长时间了。然而,正如你所说,MP3是绝对支持的设备,因为当他们单独玩他们曾经玩。 – Antrromet 2014-09-10 05:20:03
我一直在与含有AAC-LC格式文件的m3u8流相同的问题。谷歌表示,所有的Android设备都应该支持AAC-LC解码,但我仍然会在其中一些设备上持续发生-1010错误。我目前只是捕捉错误,然后向用户提供一个选项,尝试使用手机上的其他应用程序(通过意图)打开该流。 – 2014-09-10 12:40:08