我正在尝试寻找Android视频中的特定位置,因为它在行为中显示的不一致性而完全陷入困境。这是我做过的事情清单
- VideoView.Seekto一个视频转到5:19,一个视频转到5:17,另一个视频转到另一个视频5:32(326000 ms)!
- 由于VideoView不支持onSeekListener,我修改了 源VideoView并添加了对它的支持。然而它并没有停顿 从我想要的地方开始寻求 - 总是有滞后!该 onSeekListener会在我想要它之前的6秒内立即调用 停止。在许多情况下,搜索栏显示正确的时间,并突然跳回几秒钟,即使我正在调用video.start 来自onSeekCompleteListener
醇>
为什么这么不一致?在videoview中有没有明确的方法可以在几毫秒内找到你想去的地方?我知道我应该使用MediaPLayer + Surface,但由于VideoView只是两个包装器,我在源头修改它但无济于事。
我知道这一点:http://code.google.com/p/android/issues/detail?id=9135 但有没有办法解决这个问题并且有明确的方法
1。)以毫秒为单位寻找确切的时间
2。)在确切的时间暂停和恢复?
答案 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)
我像这样解决了这个问题