AVPlayer показывает кешированные данные

Как показать кешированные данные в UISlider из AVPlayer? Я воспроизвожу аудио с помощью AVPlayer из сети и хочу показать загруженные данные.


person Timur Mustafaev    schedule 01.09.2011    source источник
comment
У меня что-то работает, посмотрите здесь: stackoverflow.com/questions/7691854 /avplayer-streaming-progress/   -  person Andrew Kuklewicz    schedule 11.10.2011


Ответы (2)


Как и в комментарии - есть способ получить диапазоны времени от avplayer, который показывает, сколько данных загружается с удаленного URL-адреса.

Прогресс потоковой передачи AVPlayer

person Andrew Kuklewicz    schedule 17.10.2011

Вы должны наблюдать за свойством loadTimeRanges для текущего элемента вашего проигрывателя. нравится:

guard let currentItem = self.player?.currentItem else {return}
currentItem.addObserver(self, forKeyPath: "loadedTimeRanges", options: NSKeyValueObservingOptions.New, context: nil)

затем реализовать функцию:

observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>)  {
    guard object is AVPlayerItem else {return}
    let item = object as! AVPlayerItem
    if keyPath == "loadedTimeRanges" {
        let array = item.loadedTimeRanges
        guard let timeRange = array.first?.CMTimeRangeValue else {return}
        let totalBuffer = CMTimeGetSeconds(timeRange.start) + CMTimeGetSeconds(timeRange.duration)
        tmpTime = CGFloat(tmpTime)
        print("totalBuffer - \(totalBuffer)")
        let tmpProgress = tmpTime / playDuration
        progressCallBack?(tmpProgress: Float(tmpProgress), playProgress: nil)
    }
}
person Azen Xu    schedule 19.08.2016