VideoView seekto()函数极不一致

我正试图在Androidvideo中查找特定位置,因为它在行为中显示的不一致性而完全卡住了。 这是我做过的事情清单

  1. VideoView.Seekto为一个video转到5:19,一个video转到5:17,另一个video转到另一个video5:32(326000 ms)!
  2. 由于VideoView不支持onSeekListener,我修改了源VideoView并添加了对它的支持。 然而它并没有暂停并开始从我想要的地方寻求 – 总是有一个滞后! onSeekListener会在我希望停止之前的6秒内立即调用。 在许多情况下,搜索栏显示正确的时间并突然跳回几秒钟,即使我从onSeekCompleteListener调用video.start

为什么这么不一致? 在videoview中有没有明确的方法可以在几毫秒内find你想去的地方? 我知道我应该使用MediaPLayer + Surface,但由于VideoView只是我在修改它的两个包装,但无济于事。

我知道这一点: http : //code.google.com/p/android/issues/detail?id = 9135但是有没有办法解决这个问题并且有一个明确的方法

1.)以毫秒为单位寻找确切的时间

2.)在确切的时间暂停和恢复?

    你必须等待寻求完成。

    VideoView没有OnSeekCompleteListener(),但您可以从VideoView的onPrepared方法访问MediaPlayer,然后设置OnSeekCompleteListener,如下所示:

    videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setOnSeekCompleteListener(new OnSeekCompleteListener() { @Override public void onSeekComplete(MediaPlayer mp) { //Seek completed. Move seekbar } }); } }); 

    我知道这不是您问题的正确解决方案,但请查看通过Google默认video观看的图书馆

    https://github.com/brianwernick/ExoMedia

    它具有默认video视图支持的所有function和更多function。

    您可以使用此video视图和emVideoView.seekTo(1000); 在video中跳到1000毫秒。 您还可以使用setOnSeekCompletionListener在搜索完成时执行此过程。

    我这样解决了这个问题

    seekTo()函数在VideoView中不起作用