VideoView seekto()函数极不一致

时间:2012-10-17 16:42:01

标签: android android-videoview seek

我正在尝试寻找Android视频中的特定位置,因为它在行为中显示的不一致性而完全陷入困境。这是我做过的事情清单

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

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

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

  

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

     

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

3 个答案:

答案 0 :(得分:1)

你必须等待寻求完成。

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
            } 
        }); 

    } 
}); 

答案 1 :(得分:-1)

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

https://github.com/brianwernick/ExoMedia

它具有默认视频视图支持的所有功能和更多功能。

您可以使用此视频视频和emVideoView.seekTo(1000);在视频中跳转到1000毫秒。在寻求完成时,您还可以setOnSeekCompletionListener进行处理。

答案 2 :(得分:-2)

我像这样解决了这个问题

the seekTo() function doesn't work in VideoView