我对 MediaPlayer 的 seekTo() 方法有问题。好像根本没用!我关注了有关此问题的其他线程并尝试了不同的解决方法,但仍然 seekTo() 什么也不做!这是我的代码:

private MediaPlayer mMediaPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
 ...
    final VideoView videoView = (VideoView)findViewById(R.id.videoView);
    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    final Uri video = Uri.parse("android.resource://"+getPackageName()+"/"+R.drawable.video_myopia);
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);
    videoView.setOnPreparedListener(new OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {

            mMediaPlayer = mp;

            System.out.println("CURRENT POSITION 0: " + mp.getCurrentPosition());
            mp.seekTo(3000);
            System.out.println("CURRENT POSITION 1: " + mp.getCurrentPosition());
            mp.start();
            System.out.println("CURRENT POSITION 2: " + mp.getCurrentPosition());
        }
    });

System.out.println() 显示以下输出:
  • 位置 0: 0
  • 位置 1:3000
  • 位置 2:3000

  • (注意:我也尝试在 seekTo() 之前 start() 然后在 seekTo() 方法之后再次 start() )

    所以在 mp.start() 行之后 mp.getCurrentPosition() 说它是 3000 但问题是它不是!视频从头开始。在我尝试过的每种情况下,seekTo(ms) 和 start() 之后,无论如何视频都从头开始。

    我必须提到,我还使用 mp.setOnSeekCompleteListener() 来了解搜索何时完成。在这个回调中,我再次尝试 start() 视频,但它总是从头开始。

    有谁可以帮助我吗?我将不胜感激任何建议:)。谢谢!

    最佳答案

    我发现我的视频不可搜索,这就是为什么每次我使用 seekTo 都会让我的视频从头开始。为了解决这个问题,我用 H.264 转换了它们

    关于Android MediaPlayer seekTo 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23515337/

    10-12 06:00