0

我使用VideoView與MediaController和MediaPlayer播放HLS流(問題不會發生在普通mp4文件中)。 當視頻播放完畢,我嘗試使用seekbar,我得到logcat錯誤:E/MediaPlayer:錯誤(1,-1004)和活動顯示無法播放此視頻對話框。我怎樣才能防止呢?我已經試過實施MediaPlayer.OnCompletionListener這樣的界面:Android MediaPlayer seekTo在視頻播放完畢後

@Override 
public void onCompletion(MediaPlayer mediaPlayer) { 
    videoView.setVideoURI(Uri.parse(...)); 
    videoView.start(); 
    videoView.pause(); 
} 

但它不起作用。

回答

1

取決於你真正想做的事,你的視頻流是如何工作的:

  1. 如果你想循環的視頻 - 因爲你的onCompletion()還挺試圖做到這一點 - 你可以嘗試一種更簡單與setLooping(true)

  2. 最終的辦法可以提高你錯誤處理是這樣的:

    yourPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
        @Override 
        public boolean onError(MediaPlayer mp, int what, int extra) { 
         if (mp.isPlaying()) 
          mp.stop(); 
         mp.reset(); 
         mp.play(); 
         return true; 
        } 
    }); 
    

編輯:

  • (後從評價反饋) - 如果不需要循環,但尋找:最終它是由Android的MediaPlayer的支持HLS級別(MPEG-TS)尋求developer.android.com/guide/appendix/media-formats.html - 說'不可搜索'...可能在最近使用NuPlayer的Android上,情況可能會更好。
  • +0

    我不想循環播放視頻。即使播放結束後,我也無法尋找視頻(這適用於.mp4文件,但不適用於HLS流)。我試圖通過重新設置URI來修復它,但這不是一個解決方案。 – cuddlecheek

    +0

    我看 - 然後最終它達到了水平Android的MediaPlayer支持HLS(MPEG-TS)尋求https://developer.android.com/guide/appendix/media-formats.html - 說'不可搜尋'...可能在最近使用NuPlayer的Android上,情況可能會更好。 –

    +0

    哦,謝謝,你可以在答案中包括這個,所以我可以接受它嗎? – cuddlecheek

    相關問題