【问题标题】:VideoView seekto() function extremely inconsistentVideoView seekto() 函数极其不一致
【发布时间】:2012-10-17 16:42:00
【问题描述】:

我正在尝试寻找 Android 视频中的特定位置,但由于其行为表现出的不一致,我完全被卡住了。这是我做过的事情的清单

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

为什么会如此不一致?在视频视图中是否有明确的方法可以在几毫秒内找到您想去的地方?我知道我应该使用 MediaPLayer + Surface 但由于 VideoView 只是两者的包装,我在源代码处对其进行了修改但无济于事。

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

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

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

【问题讨论】:

  • 我对这篇文章很感兴趣。你对此有答案或解释吗?
  • 基本上这就是问题所在 - code.google.com/p/android/issues/detail?id=9135 如果您需要详细信息,请告诉我
  • 我相信媒体文件本身不准确。 This guy explains it well.
  • 嗨@Sufian 是的,它对我有用
  • 好吧,我的问题更多与视频查看时间搜索的不一致有关,而不是与其他答案似乎暗示的搜索工作/不工作有关。虽然我不记得我对此做了什么。我认为我们当时接受了次要的 delta seek 错误。所以对我来说,我不确定其他答案是否提供了一种方法,即给定时间 X,准确地寻找到那个点

标签: android android-videoview seek


【解决方案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
            } 
        }); 

    } 
}); 

【讨论】:

    【解决方案2】:

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

    https://github.com/brianwernick/ExoMedia

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

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

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 抱歉,为了更好地理解而编辑了答案,而不是仅仅粘贴 URL。
    【解决方案3】:

    我这样解决了这个问题

    the seekTo() function doesn't work in VideoView

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多