-
Notifications
You must be signed in to change notification settings - Fork 146
seek
Franken Zeng edited this page May 15, 2017
·
4 revisions
缓存内Seek是指用户Seek的目标位置在播放器的缓存内时,可直接Seek值目标位置
金山云播放SDK默认支持cache内seek
下面简单对比普通Seek和缓存内Seek的特点
播放器原有的Seek操作大致分为以下三个步骤:
- 清除已经缓存的数据
- 找到离Seek目标位置最近的关键帧,以该关键帧为最终Seek的目标位置
- 请求最终Seek目标位置的数据
点播场景下,播放器会缓存较多数据,这样操作可能会重复下载部分数据,在网络较差的情况下会引发卡顿,用户体验并不是非常好。
该功能可大致分为两个步骤:
- Seek目标位置在播放器的缓存内,则会使用缓存内Seek
- 反之则如同普通Seek
播放点播文件时可以通过以下方式调整播放进度和位置。当前提供两种seek方式:
- 普通seek,在指定seek点前寻找关键帧。seek位置和起播位置会有误差,误差最大在一个gop。
- 精准seek,拖动到哪就从哪开播,但是seek过程略耗时,没有普通seek反应快
与MPMoviePlayerController相同的属性 @property (nonatomic) NSTimeInterval currentPlaybackTime
if (_player) {
_player.currentPlaybackTime = 200; //播放进度跳转到200s处
}
因为currentPlaybackTime属性进行跳转定位时依赖的是视频关键帧,当文件总时长较小或视频关键帧间隔较大时,无法做到精确定位,所以v1.9.1版本SDK中新增一个跳转函数。
- accurate设置为YES时为精确定位
- accurate设置为NO时功能等同于currentPlaybackTime
if (_player) {
[_player seekTo:10 accurate:YES]; //播放进度跳转到10s处
}