首页 > 解决方案 > 寻找不一致的视频视图

问题描述

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

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

那么我该如何实现呢?

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

    int currentPosition = videoView.getCurrentPosition();

    double increment = 1000/60;

    currentPosition += Math.round(increment);

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

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

标签: androidandroid-videoviewframe-rate

解决方案


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

setSeekParameters(SeekParameters.EXACT)

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


推荐阅读