2011-02-04 75 views
4

我刚刚在我的生活中发布了我的第一个Android应用程序。这是Audiko在Android上播放流音频的问题Samsung Galaxy S

当我使用Android MediaPlayer时,发现流式传输mp3文件时发生三星Galaxy S上的错误。

在日志中我看到这一点:

E/PlayerDriver(2747): PlayerDriver::it is a not Protected file 

E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
D/  (2747): PVFile::GetFileName 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 
E/  (2747): IIIIIII Inside Constructor of PVMFMemoryBufferReadDataStreamImpl 

V/PlayerDriver(2747): Completed command PLAYER_INIT status=-1 
E/PlayerDriver(2747): Command PLAYER_INIT completed with an error or info -1 
E/MediaPlayer(13523): error (1, -1) 
E/MediaPlayer(13523): Error (1,-1) 

,它可能会是什么有什么建议?

+0

你能发表一些代码吗? – Fixpoint 2011-02-04 14:34:43

回答

0

我在某些设备上遇到了类似这样的问题。您最好的选择是临时下载文件并播放该版本,而不是流式传输。也就是说,如果铃声相对较小,这将起作用,我认为这通常是这种情况。

0

我遇到了非常相似的东西。我使用Galaxy S2进行调试,并尝试播放实况广播流时遇到各种错误和问题。首先你必须知道的是,由于有些设备支持wma文件(Windows Media Audio格式),但Galaxy除非找到将这种类型的流转换为可播放流的方式,否则你会遇到问题。

我发现问题的(种)解决方案如下,因为我很久以前在某个地方读了什么,你可以做的不是使用MediaPlayer而是尝试直接流式传输是使用InputStream从音频(现在我只用Mp3工作,因为我说wma不会工作)将几秒钟的音频转换为mp3文件,然后使用MediaPlayer在本地播放该文件,同时将音频的下一部分重新构建为第二个文件,然后只是来回播放这些文件(您可以设置每个文件的长度)

我给你留下了一部分代码,我试图实现并在缓冲中播放mp3和在手机上播放mp3 ,但我没有继续这个项目,我没有尚未找到wma的可靠解决方案。

public void onClick(View v) 
     { 
      try 
      { 

       URL url = new URL("http://........./myStation.mp3"); 
       InputStream inputStream = url.openStream(); 
       long bytesRead = 0; 

        File root = android.os.Environment.getExternalStorageDirectory();    
        File dir = new File (root.getAbsolutePath() + "/usbStorage"); 
        if(dir.exists()== false) 
        { 
         dir.mkdirs(); 
        } 

       File outputSource = new File(dir, "test.mp3"); 
       FileOutputStream fileOutputStream = new FileOutputStream(outputSource); 
       //Log.d(LOG_TAG, "FileOutputStream: " + outputSource); 
       int c; 
       int howManyBytes = 12000; 
      //You decide the amount of bytes to read because the live stream while keep on going forver 
       while ((c = inputStream.read()) != 10000) 
       { 

        fileOutputStream.write(c); 
        bytesRead++; 
        if (bytesRead > howManyBytes) break; 
       } 
       fileOutputStream.close(); 
       MediaPlayer mp = MediaPlayer.create(this, Uri.fromFile(outputSource)); 
       mp.start(); // no need to call prepare(); create() does that for you 
      } 
      catch(Exception e) 
      { 
       Log.e("radio", e.getMessage()); 
      } 
     }