Android MediaPlayer在视频播放结束后搜索

时间:2016-10-28 14:40:37

标签: android video video-streaming android-mediaplayer android-videoview

我使用VideoView与MediaController和MediaPlayer播放HLS流(普通mp4文件不会出现此问题)。 当视频播放完毕并且我尝试使用搜索栏时,我收到logcat错误: E / MediaPlayer:错误(1,-1004),活动显示无法播放此视频< / strong>对话框。我怎么能防止这种情况?我已经尝试过像这样实现MediaPlayer.OnCompletionListener界面:

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

但它不起作用。

1 个答案:

答案 0 :(得分:1)

取决于您真正想做的事情以及视频流的运作方式:

  1. 如果您想循环播放视频 - 因为您的onCompletion()有点尝试这样做 - 您可以尝试使用setLooping(true)

  2. 的更简单的方法
  3. 最终,您可以将错误处理改进为:

    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;
        }
    });
    
  4. 编辑:

    1. (来自评论的反馈) - 如果不需要循环,但寻求:最终达到Android的级别,MediaPlayer支持HLS(MPEG-TS)寻求developer.android.com/guide/appendix/media-formats.html - 说&#39 ;不可寻找的......可能在最近使用NuPlayer的Androids上,情况可能更好。