AVPlayer currentTime неправильно при перемотке - программирование

AVPlayer currentTime неправильно при перемотке

У меня AVPlayer при перемотке аудиофайла, тогда текущее время больше, чем общая длительность файла. Кто знает, в чем проблема, почему текущее время не так?

@objc func updateProgressBar(){
    guard let value = AppDelegate.avPlayer.currentItem?.currentTime().seconds else { return }
    let time = Func.getHoursMinutesSecondsFrom(seconds: value)
    DispatchQueue.main.async {
        self.startTime.text = time.fullTime
    }
}


func durationAudio(){
    // расчитывает время аудиозвука
    guard let duration = AppDelegate.avPlayer.currentItem?.asset.duration else { return }
    let time = Func.getHoursMinutesSecondsFrom(seconds: CMTimeGetSeconds(duration))
    DispatchQueue.main.async {
        self.endTime.text = time.fullTime
    }
}

конвертируется в часы, минуты, секунды

static func getHoursMinutesSecondsFrom(seconds: Double) -> (hours: Int, minutes: Int, seconds: Int, fullTime:String) {
    let secs = Int(seconds)
    let hours = secs / 3600
    let minutes = (secs % 3600) / 60
    let seconds = (secs % 3600) % 60
    let duration:String!
    if hours != 0 {
        duration = String(format:"%02d:%02d:%02d", hours, minutes, seconds)
    } else {
        duration = String(format:"%02d:%02d", minutes, seconds)
    }
    return (hours, minutes, seconds, duration)
}

перемотать аудио

func seekTo(completion:Bool){
    let duration = CMTimeGetSeconds(AppDelegate.avPlayer.currentItem!.asset.duration)
    let value = self.sliderSong.value
    let durationToSeek = Float(duration) * value
    let timeScale = AppDelegate.avPlayer.currentItem!.duration.timescale
    AppDelegate.avPlayer.seek(to: CMTimeMakeWithSeconds(Float64(durationToSeek), preferredTimescale: timeScale), toleranceBefore: CMTime.zero, toleranceAfter: CMTime.zero) { [weak self](bool) in
        guard completion else { return }
        self?.seeking = false
    }
}
4b9b3361