Ios AVQueuePlayer seek(to:)和CMTime出现问题

Ios AVQueuePlayer seek(to:)和CMTime出现问题,ios,swift,avfoundation,avplayer,avqueueplayer,Ios,Swift,Avfoundation,Avplayer,Avqueueplayer,我有一个AVQueuePlayer,我试着,按下按钮,向后搜索5秒 我的代码如下: func seekBack() { guard let currentTime = self.player?.currentTime() else { return } let currentTimeSeconds = CMTimeGetSeconds(currentTime) let newTimeSeconds = max(currentTimeSeconds - 5, 0)

我有一个AVQueuePlayer,我试着,按下按钮,向后搜索5秒

我的代码如下:

func seekBack() {
    guard let currentTime = self.player?.currentTime() else { return }

    let currentTimeSeconds = CMTimeGetSeconds(currentTime)
    let newTimeSeconds = max(currentTimeSeconds - 5, 0)

    let newTime = CMTimeMakeWithSeconds(newTimeSeconds, currentTime.timescale)

    self.player?.seek(to: newTime)
}
我第一次按下“返回搜索”按钮时,它将返回正确的时间量(5秒),但每次按下后,它将从第一次返回搜索操作返回到新的时间。如果我让视频播放超过5秒,然后按下按钮,它将正确地向后搜索5秒,但随后会像上面一样卡住

例如,我播放视频,在10秒标记处,我按下“向后搜索”按钮,播放器向后搜索5秒。然后我让玩家再玩1秒钟,再按一下按钮,它只会返回到5秒钟的标记。如果我反复按下按钮,它只会返回到5秒标记。如果我让视频再播放10秒(总时间约15秒),然后再次按下“向后搜索”按钮,播放器将向后搜索10秒并显示相同的行为

我不确定这是否与此有关,但还有一个按钮可在1.0、1.5和2.0之间切换播放速率。上述问题与所有3个播放速率一起展示

由于它是一个
AVQueuePlayer
,我也尝试了以下实现,得到了相同的结果(它使用
currentItem
而不仅仅是播放器):


在胡闹之后,我明白了。出于某种原因

seek(to:)
似乎不起作用,但如果我用

seek(to:toleranceBefore:toleranceAfter:)
带有
kCMTimeZero
的函数用于前后公差,工作正常

seek(to:toleranceBefore:toleranceAfter:)