在 AVPlayer 播放视频时,可以通过设置AVPlayerItem的preferredForwardBufferDuration属性来预先缓存视频。当在回退时遇到卡顿时,可以通过重新计算需要预先缓存的视频时间,并最终修改preferredForwardBufferDuration属性值来解决问题。
具体代码示例:
// 计算需要预先缓存的视频时间
CGFloat seekTime = CMTimeGetSeconds(self.player.currentItem.currentTime);
if (seekTime < bufferDuration) {
bufferDuration = 1;
} else if (seekTime >= bufferDuration && seekTime < 2 * bufferDuration) {
bufferDuration = 2;
} else {
bufferDuration = 3;
}
// 修改preferredForwardBufferDuration属性值
CGFloat maxTimeToBuffer = bufferDuration * 2;
self.player.currentItem.preferredForwardBufferDuration = maxTimeToBuffer;
其中,bufferDuration可以根据实际情况进行调整。