Skip to content

SeekInCache

xinbaicheng edited this page Apr 10, 2017 · 3 revisions

缓存内Seek是指用户Seek的目标位置在播放器的缓存内时,可直接Seek值目标位置

该功能在播放点播视频时默认开启

下面简单对比普通Seek缓存内Seek的特点

1.普通Seek

播放器原有的Seek操作大致分为以下三个步骤:

  1. 清除已经缓存的数据
  2. 找到离Seek目标位置最近的关键帧,以该关键帧为最终Seek的目标位置
  3. 请求最终Seek目标位置的数据

点播场景下,播放器会缓存较多数据,这样操作可能会重复下载部分数据,在网络较差的情况下会引发卡顿,用户体验并不是非常好。

2.缓存内Seek

该功能可大致分为两个步骤:

  1. Seek目标位置在播放器的缓存内,则会使用缓存内Seek
  2. 反之则如同普通Seek

3.版本要求

支持版本:v1.7.1及以上

4.接口说明

以下两个接口均支持缓存内Seek

/**
 * 快进快退
 * @param msec 目标时间点,单位:毫秒
 * @throws IllegalStateException
 */
 public void seekTo(long msec);

/**
 * 快进快退
 * @param msec 目标时间点,单位:毫秒
 * @param accurate 是否进行精准seek;accurate=false等同于public void seekTo(long msec);
 * @throws IllegalStateException
 */
 public void seekTo(long msec, boolean accurate);

5.缓存内Seek与精准Seek

精准Seek功能可参考Wiki
缓存内Seek和精准Seek可同时使用,如下所示

KSYMediaPlayer ksyMediaPlayer;
long seekPosition = 100 * 1000; // seek至视频第100s

ksyMediaPlayer.seekTo(seekPosition, true);
Clone this wiki locally