2011-09-01 5 views
0

AVPlayer에서 캐시 된 데이터를 UISlider에 표시하는 방법은 무엇입니까? 네트워크에서 AVPlayer로 오디오를 재생하고 다운로드 한 데이터를 표시하려고합니다.AVPlayer 캐시 된 데이터 표시

+1

내가 뭔가 작업이를, 이쪽을 봐 : http://stackoverflow.com/questions/7691854/avplayer-streaming- 진행/7730708 # 7730708 –

+0

고맙습니다. –

답변

1

코멘트에서와 같이 - 원격 URL에서 얼마나 많은 데이터를 다운로드했는지 보여주는 avplayer의 시간 범위를 가져 오는 방법이 있습니다.

AVPlayer streaming progress

0

당신은 당신의 player`s의 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) 
    } 
}