текущее время после поиска AVPlayer неверно - PullRequest
0 голосов
/ 17 марта 2020
func seekFullRead(seconds: Float64, completion: (() -> ())? = nil) {
    let targetTime:CMTime = CMTimeMakeWithSeconds(seconds, preferredTimescale: 60000)
    fullReadPlayer?.currentItem?.seek(to: targetTime, toleranceBefore: .zero, toleranceAfter: .zero, completi[enter image description here][1]onHandler: { (finish) in
        if finish {
            completion?()
        }
    })
}

fullReadTimeObserver = fullReadPlayer?.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: 10), queue: DispatchQueue.main, using: { [weak self](time) in
        guard let self = self else { return }
        if self.fullReadPlayer?.status == .readyToPlay {
            self.delegate?.audioPlayer(self, didUpdateCurrentTime: time.seconds, teach: nil)
        }
    })

Когда я стремлюсь к 4,57 секундам, сначала отображается правильное текущее время, затем текущее время будет на 0,2 секунды вперед, но воспроизведение начнется после того, как текущее время будет на 0,2 секунды вперед.

Журналы:

текущее время: 1.30104062

текущее время: 1.401042787

искать: 4.579999923706055

текущее время: 1.498295786

текущее время: 4.579983333333334

текущее время: 4.319330793

текущее время: 4.319642834

текущее время: 4.401050459

текущее время: 4.501045084

текущее время: 4.601038959

...