AVPlayer显示缓存数据

时间:2011-09-01 19:09:12

标签: objective-c avfoundation uislider avplayer

如何在AVPlayer中显示UISlider中的缓存数据?我从网络播放AVPlayer的音频,我想显示下载的数据。

2 个答案:

答案 0 :(得分:1)

与评论一样 - 有一种方法可以从一个avplayer获取时间范围,显示从远程URL下载的数据量。

AVPlayer streaming progress

答案 1 :(得分:0)

你应该观察你的玩家的currentItem的属性loadedTimeRanges。 像这样:

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)
    }
}