Display the current time and remaining time

You can display the current and remaining time of the content that is being played.

  1. To implement a display that shows the current and remaining time of the active content, use the following sample code:

       // 1. Register for the PTMediaPlayerTimeChangeNotification
       [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onMediaPlayerTimeChange:)
         name:PTMediaPlayerTimeChangeNotification object:self.player];
    
       ...
    
       // 2. Create labels for displaying current and remaining time
       _timeCurrentLabel = [[UILabel alloc] initWithFrame:CGRectMake(50.0, 16.0, 50.0, 21.0)];
       _timeCurrentLabel.text = @"00:00:00";
       _timeCurrentLabel.font = [UIFont boldSystemFontOfSize:12.0];
       _timeCurrentLabel.numberOfLines = 1;
       _timeCurrentLabel.textAlignment = UITextAlignmentCenter;
       _timeCurrentLabel.backgroundColor = [UIColor clearColor];
       _timeCurrentLabel.textColor =
         [UIColor colorWithRed:209.0/255.0 green:209.0/255.0 blue:209.0/255.0 alpha:1.0];
       [self addSubview:_timeCurrentLabel];
    
       _timeRemainingLabel = [[UILabel alloc] initWithFrame:CGRectMake(485.0, 16.0, 50.0, 21.0)];
       _timeRemainingLabel.text = @"00:00:00";
       _timeRemainingLabel.font = [UIFont boldSystemFontOfSize:12.0];
       _timeRemainingLabel.numberOfLines = 1;
       _timeRemainingLabel.textAlignment = UITextAlignmentCenter;
       _timeRemainingLabel.backgroundColor = [UIColor clearColor];
       _timeRemainingLabel.textColor =
         [UIColor colorWithRed:209.0/255.0 green:209.0/255.0 blue:209.0/255.0 alpha:1.0];
    
       ...
    
       // 3. This method is called whenever the player time changes
       (PTMediaPlayerTimeChangeNotification) - (void) onMediaPlayerTimeChange:(NSNotification *)notification {
           //The seekable range provides the playback range of a stream
           CMTimeRange seekableRange = self.player.seekableRange;
    
           //Verify if the seekableRange is a valid CMTimeRange
           if (CMTIMERANGE_IS_VALID(seekableRange)) {
               double  duration = CMTimeGetSeconds(seekableRange.duration);
               double currentTime = CMTimeGetSeconds(self.player.currentItem.currentTime);
               if (CMTIME_IS_INDEFINITE(self.player.currentItem.duration)) {
                   //If the duration is indefinite then the content is live.
                   [_timeCurrentLabel setText:[NSString stringWithFormat:@"--:--"]];
                   [_timeRemainingLabel setText:[NSString stringWithFormat:@"Live"]];
               }
               else {
                   [_timeCurrentLabel setText:[self timeFormatter:currentTime]];
                   [_timeRemainingLabel setText:[self timeFormatter:(duration - currentTime)]];
               }
           }
       }
    
    
  2. To implement a display that show the progress of an ad and the remaining time, use the following sample code:

       double adBreakDurationLeft;
       double adBreakDuration;
       float currentAdPosition;
       (void)onMediaPlayerAdBreakStarted:(NSNotification *) notification
       {
       PTAdBreak *adBreak = [notification.userInfo objectForKey:PTMediaPlayerAdBreakKey];
       self.adBreakDuration = CMTimeGetSeconds(adBreak.range.duration);
       self.adBreakDurationLeft = self.adBreakDuration;
       }
       (void)onMediaPlayerAdBreakCompleted:(NSNotification *) notification
       {
       self.adBreakDuration = 0.0f;
       self.adBreakDurationLeft = 0.0f;
       }
       (void)onMediaPlayerAdPlayStarted:(NSNotification *) notification
       {
       self.currentAdPosition = 0;
       }
       (void)onMediaPlayerAdPlayProgress:(NSNotification *) notification
       {
       PTAd *ad = [notification.userInfo objectForKey:PTMediaPlayerAdKey];
       CMTime progress = [(NSValue *)[notification.userInfo objectForKey:PTMediaPlayerAdProgressKey] CMTimeValue];
       if (ad != nil) { // remaining ad playback time in milliseconds self.currentAdPosition = CMTimeGetSeconds(progress); double timeLeft = self.adBreakDurationLeft - (double)self.currentAdPosition; float currentprogress = 1.0f - (timeLeft/self.adBreakDuration); }
       }
       (void)onMediaPlayerAdPlayCompleted:(NSNotification *) notification
       {
       PTAd *ad = [notification.userInfo objectForKey:PTMediaPlayerAdKey];
       self.adBreakDurationLeft = self.adBreakDurationLeft - ad.primaryAsset.duration;
       }
    

On this page