2013-07-28 72 views
1

我使用下面的代碼:Android的MediaPlayer的失敗,狀態0x64

  try { 
      File f = new File(getVideoUrl(listVideoUrls.get(0))); 
      Log.d("MediaPlayer","Fexists?"+f.exists()); 
      MediaPlayer pl = new MediaPlayer(); 
      FileInputStream fi = new FileInputStream(f); 
      pl.setDataSource(fi.getFD()); 
      pl.prepare(); 
      pl.start(); 
      Log.d("MediaPlayer","MediaPlayer startet."); 
      } catch (Exception e) { alert(e.getMessage()); } 

但它與該消息未能

Android的媒體播放器準備故障狀態0x64

我不不明白爲什麼。該文件存在(file.exists()爲true)並被放置在/Android/obb/de.blub.kaese/video.mp4處。

+0

嘗試使用'pl.prepareAsync()',然後做一個'OnPreparedListener()''用於和pl'聽者內做'pl.start()' – kabuto178

+0

嘗試使用'setDataSource(String path)'http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource(java.lang.String) –

+0

@ kabuto178: thx,但是onPrepared函數永遠不會被調用。代碼:pl.prepareAsync(); pl.setOnPreparedListener(新OnPreparedListener(){ \t \t \t \t \t公共無效onPrepared(MediaPlayer的PL){ \t \t \t \t \t \t \t pl.start(); \t \t \t \t \t} \t \t \t \t \t});我之前用videoview也嘗試過這種方式,但是在那裏它沒有回調onPrepared ...在肯:我需要打開一個不可世界讀取的文件,所以我必須流式傳輸它。打開直接路徑不起作用。 – aqm

回答

0

嘗試通過release()方法

所以嘗試下面的代碼

try { 
    File f = new File(getVideoUrl(listVideoUrls.get(0))); 
    Log.d("MediaPlayer","Fexists?"+f.exists()); 
    MediaPlayer pl = new MediaPlayer(); 
    pl.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      mp.release(); 
     } 
    }); 
    FileInputStream fi = new FileInputStream(f); 
    pl.setDataSource(fi.getFD()); 
    pl.prepare(); 
    pl.start(); 
    Log.d("MediaPlayer","MediaPlayer startet."); 
} catch (Exception e) { alert(e.getMessage()); } 
+0

thx這有助於播放至少視頻的聲音。 – aqm

相關問題