avplayer streaming progress

avplayer streaming progress  using -'iphone,ios,avplayer'

I'm successfully using AVPlayer to stream audio from a server and what I want to do now is to show a custom UISlider who shows the progress of the buffering.

Something like this:

With AVPlayer there doesn't seem to be a way to get the total download size or the current downloaded amount for the audio file, only the current playing time and total play time.

There's any workarounds for this?

asked Oct 13, 2015 by dahiyabecomp
0 votes

2 Answers

0 votes

It should work well:


- (CMTime)availableDuration
    NSValue *range = self.player.currentItem.loadedTimeRanges.firstObject;
    if (range != nil){
        return CMTimeRangeGetEnd(range.CMTimeRangeValue);
    return kCMTimeZero;

Swift version:

func availableDuration() -> CMTime
    let range = self.player?.currentItem?.loadedTimeRanges?.first as? NSValue
    if (range != nil){
        return CMTimeRangeGetEnd(range!.CMTimeRangeValue)
    return kCMTimeZero
answered Oct 13, 2015 by tseetha
0 votes

I am just working on this, and so far have the following:

- (NSTimeInterval) availableDuration;
  NSArray *loadedTimeRanges = [[self.player currentItem] loadedTimeRanges];
  CMTimeRange timeRange = [[loadedTimeRanges objectAtIndex:0] CMTimeRangeValue];
  Float64 startSeconds = CMTimeGetSeconds(timeRange.start);
  Float64 durationSeconds = CMTimeGetSeconds(timeRange.duration);
  NSTimeInterval result = startSeconds + durationSeconds;
  return result;
answered Oct 13, 2015 by loknath.ganji