【问题标题】:Video view seeking inconsistencies寻找不一致的视频视图
【发布时间】:2018-12-30 23:59:55
【问题描述】:

我有一个以每秒 60 帧或每秒 30 帧的速度录制的视频。现在我在视频视图中查看该视频。我希望视频在每次点击跳过按钮时逐帧跳过。

问题在于 seek to 方法会寻找最近的关键帧并移动到该位置。因此,有时当我跳过帧时,它会因此显示不一致的行为。

那么我该如何实现呢?

这是我用来寻找视频视图的代码:

    int currentPosition = videoView.getCurrentPosition();

    double increment = 1000/60;

    currentPosition += Math.round(increment);

    if (videoLoader.canSeekForward()) {
           videoLoader.seekTo(currentPosition);
    }            

所以videoView.getCurrentPosition()方法有时会返回错误的值。

【问题讨论】:

  • 我看到您在增量参数中除以 60。为什么不将帧速率传递给您的方法并除以它呢?含义,双倍增量 = 1000/frameRate
  • 我可以这样做,但这不会导致问题。问题是寻求特定的框架。我使用以 30fps 录制的视频测试了代码,但仍然存在问题。

标签: android android-videoview frame-rate


【解决方案1】:

我通过用 ExoPlayer 替换视频视图解决了这个问题。 ExoPlayer 有一个名为setSeekParameters 的方法。只需将该方法与以下参数一起使用:

setSeekParameters(SeekParameters.EXACT)

然后 seekto 方法将寻找精确的帧,而不仅仅是最近的关键帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2017-10-16
    • 2013-12-07
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多