【问题标题】:VideoView seekTo 0 instead of specific positionVideoView seekTo 0 而不是特定位置
【发布时间】:2020-04-27 09:40:50
【问题描述】:

我正在尝试从特定位置开始播放视频,但 VideoView 的行为很奇怪。当我运行这样的代码时

videoView.seekTo(2000)
int current = videoView.getCurrentPosition()
Log.e("Current Time", String.valueOf(current))

日志给我值 0。它应该给 2000,因为这是当前位置。即使我实现 onPreparedListener 它也不起作用(但以不同的方式)。它显示正确的值(2000),但视频仍然不是搜索。

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp)
            {
                videoView.getDuration();
                videoView.seekTo(2000);
                Log.e("Current: ", String.valueOf(videoView.getCurrentPosition()));
            }
        });

如何解决这个问题?如果我将构建 MediaPlayer + SurfaceView 它会有所帮助或将与 VideoView 表现相同?

【问题讨论】:

  • 您是否检查过 seekTo 是否可行:developer.android.com/reference/android/widget/…
  • 嗯,常规的 MediaPlayer 类提供了回调 OnSeekCompleteListener,但看起来 VideoView 没有提供回调。我想自己实现可能是更好的解决方案。或考虑例如使用 Exoplayer?
  • @Christopher 你可以找。

标签: android android-mediaplayer surfaceview android-videoview seek


【解决方案1】:

实际上,VideoView.seekTo() 是 MediaPlayer.seekTo() 的包装。即使仍在执行实际搜索,此函数也几乎立即返回。因此,您希望等待通过 MediaPlayer.OnSeekCompleteListener 完成搜索。

但是,标准 VideoView 不支持 OnSeekCompleteListener

但您可以复制并在本地自定义 VideoView 类以自己添加此支持。

或者,你可以试试这个

mVideoView.setOnPreparedListener(new MediaPlayer .OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {

    mp.setOnSeekCompleteListener(new OnSeekCompleteListener() {
        @Override
        public void onSeekComplete(MediaPlayer mp) {


            Log.e("Current: ", String.valueOf(videoView.getCurrentPosition()));
        }
    });

}
});
videoView.seekTo(2000); //or wherever the call is to be made

希望这会有所帮助。

【讨论】:

  • 我以前读过它:D 无论如何它并不能解释这种奇怪的行为。
  • 不过,您可以通过媒体播放器对象使用 OnSeekCompleteListener。我已添加该代码,希望对您有所帮助。
  • 我会在几分钟内试试
  • 代码甚至没有被调用。
  • 你到底遇到了什么问题?你能详细说明一下吗?这里的问题是,您必须从 OnPreparedListener 内部调用 OnSeekCompleteListener,因为 videoview 没有 SeekCompleteListener。
猜你喜欢
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多