Если вы играете в конце, попробуйте
NotificationCenter.default.addObserver(self,
selector: #selector(playerItemDidReachEnd(notification:)),
name: Notification.Name.AVPlayerItemDidPlayToEndTime,
object: avPlayer?.currentItem)
@objc func playerItemDidReachEnd(notification: Notification) {
if let playerItem: AVPlayerItem = notification.object as? AVPlayerItem {
playerItem.seek(to: kCMTimeZero, completionHandler: nil)
}
}
Если нет, я бы посоветовал управлять своим с помощью dTime (запустить NSTimer 1/30 секунд или что-то в этом роде) и настроить для игры с чем-то вроде этого
player.seekToTime(seekTimeInProgress, toleranceBefore: kCMTimeZero,
toleranceAfter: kCMTimeZero, completionHandler: ...
kCMTimeZero чрезвычайно важны, иначе время не будет точным.И, наконец, я обнаружил, что при перезапуске видео есть время загрузки, в зависимости от типа телефона на iOS и продолжительности видео, а также от того, сколько вы играете, поэтому, если вы по-прежнему испытываете это отставание после устранения проблем с синхронизацией,может быть принужден к учету в вашем UX.