视频视图寻求不一致

Video view seeking inconsistencies

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

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

那么我该如何实现呢?

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

    int currentPosition = videoView.getCurrentPosition();

    double increment = 1000/60;

    currentPosition += Math.round(increment);

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

所以方法 videoView.getCurrentPosition() 有时 returns 错误值。

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

setSeekParameters(SeekParameters.EXACT)

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