我有一个AVQueuePlayer,我试图在按下按钮时后退5秒钟。
我的代码如下:
第一次按下回溯按钮时,它会正确回溯5秒钟,但是在随后的每次按下中,它都会从第一次回溯操作的新时间开始回溯。如果我让视频播放超过5秒钟并按下按钮,它会正确地回溯5秒钟,但是然后会像上面一样卡住。
例如,我播放视频,在10秒处,我按下回溯按钮,播放器回溯到5秒。然后我让播放器再播放1秒钟,再次按下按钮,它只会回溯到5秒标记。如果我反复按下按钮,它只会回溯到5秒标记。然后,如果我让视频再播放10秒钟(总时间约为15秒),再次按下回溯按钮,播放器将回溯到10秒并表现出相同的行为。
我不确定这是否有任何关系,但还有一个按钮可以在1.0、1.5和2.0之间切换播放速率。所述问题在所有3种播放速率下均存在。
由于它是一个AVQueuePlayer,我还尝试了以下实现方式,结果相同(它使用currentItem而不仅仅使用player):
我的代码如下:
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而不仅仅使用player):
func seekBack() {
guard let currentTime = self.player?.currentItem?.currentTime() else { return }
let currentTimeSeconds = CMTimeGetSeconds(currentTime)
let newTimeSeconds = max(currentTimeSeconds - 5, 0)
let newTime = CMTimeMakeWithSeconds(newTimeSeconds, currentTime.timescale)
self.player?.currentItem?.seek(to: newTime)
}