2013-04-09 259 views
3

我正在为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=1extra=-1010

我知道这个问题已经被问不同的时间(hereherehere例如),我也知道Vitamio,但我想找出什么是错我的执行。我创建的m3u8文件有问题吗?我经历了documentation,一切看起来都正确。

如果有人可以在这件事情上投下一些光芒,会真的很高兴。

-Thanks提前

回答

0

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

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

虽然这似乎很奇怪,因为MP3已经是一个supported media format用于在Android中解码很长时间了。

+0

自从我问这个问题以来,它已经很长时间了。然而,正如你所说,MP3是绝对支持的设备,因为当他们单独玩他们曾经玩。 – Antrromet 2014-09-10 05:20:03

+0

我一直在与含有AAC-LC格式文件的m3u8流相同的问题。谷歌表示,所有的Android设备都应该支持AAC-LC解码,但我仍然会在其中一些设备上持续发生-1010错误。我目前只是捕捉错误,然后向用户提供一个选项,尝试使用手机上的其他应用程序(通过意图)打开该流。 – 2014-09-10 12:40:08

相关问题