【问题标题】:Android MediaPlayer seekTo after video finished playing视频播放完毕后Android MediaPlayer seekTo
【发布时间】:2016-10-28 14:40:36
【问题描述】:

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

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

但它不起作用。

【问题讨论】:

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


    【解决方案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;
          }
      });
      

    编辑:

    1. (来自 cmets 的反馈后)- 如果不需要循环,但正在寻找:最终它达到了 Android 的 MediaPlayer 支持 HLS (MPEG-TS) 寻找 developer.android.com/guide/appendix/media-formats.html 的水平 - 说“不可寻找”......可能在使用 NuPlayer 的较新的 Android,情况可能会更好。

    【讨论】:

    • 我不想循环播放视频。即使视频播放完毕(适用于 .mp4 文件,但不适用于 HLS 流),我也无法搜索视频。我试图通过重置 URI 来修复它,但这不是解决方案。
    • 我明白了——那么最终它达到了 Android 的 MediaPlayer 支持 HLS (MPEG-TS) 寻求 developer.android.com/guide/appendix/media-formats.html 的水平——说“不可搜索”......可能在使用 NuPlayer 的较新的 Android 上,情况可能会更好。
    • 哦,谢谢,你能把它包括在答案中以便我接受吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多