Skip ad breaks for a period of time

By default, TVSDK forces an ad break to play when the user seeks over an ad break. You can customize the behavior to skip an ad break if the time elapsed from a previous break completion is within a certain number of minutes.

IMPORTANT

When there is an internal seek to skip an ad, here might be a slight pause in the playback.

The following example of a customized ad policy selector skips ads in the next five minutes (wall clock time) after a user has watched an ad break.

  1. Extend the default ad policy selector to override the default behavior.

    /** 
     * Custom ad policy selector. 
     */ 
    public class CustomAdPolicySelector extends DefaultAdPolicySelector { 
      
        /** 
         * Default constructor. 
         * 
         * @param item Associated media player item. 
         */ 
        public function CustomAdPolicySelector(item:MediaPlayerItem) { 
            super(item); 
      
            item.player.addEventListener(AdBreakPlaybackEvent.AD_BREAK_COMPLETED,  
                                         onAdBreakCompleted); 
        } 
      
        override public function selectPolicyForAdBreak(adPolicyInfo:AdPolicyInfo):String { 
            if (shouldPlayAds()) { 
                return super.selectPolicyForAdBreak(adPolicyInfo); 
            } 
      
            return AdBreakPolicy.SKIP; 
        } 
      
        override public function selectAdBreaksToPlay(adPolicyInfo:AdPolicyInfo):Vector.<AdBreakTimelineItem> { 
            if (shouldPlayAds()) { 
                return super.selectAdBreaksToPlay(adPolicyInfo); 
            } 
      
            return new Vector.<AdBreakTimelineItem>(); 
        } 
      
        override public function selectPolicyForSeekIntoAd(adPolicyInfo:AdPolicyInfo):String { 
            if (shouldPlayAds()) { 
                return super.selectPolicyForSeekIntoAd(adPolicyInfo); 
            } 
      
            return AdPolicy.SKIP_TO_NEXT_AD_IN_AD_BREAK; 
        } 
      
        private function onAdBreakCompleted(event:AdBreakPlaybackEvent):void { 
            _lastAdBreakPlayedTime = new Date().valueOf(); 
        } 
      
        private function shouldPlayAds():Boolean { 
            var currentTime:Number = new Date().valueOf(); 
            return isNaN(_lastAdBreakPlayedTime) 
                    ||  (currentTime - _lastAdBreakPlayedTime > _minimumInterval); 
        } 
      
        private var _lastAdBreakPlayedTime:Number = NaN; 
        private var _minimumInterval:Number = 300000; // 5 minutes in milliseconds 
    }
    
  2. Create a new advertising factory that uses your custom selector.

    public class CustomAdPolicyContentFactory extends DefaultContentFactory { 
      
        private var _adPolicySelector:CustomAdPolicySelector; 
             
        /** 
         * Default constructor. 
         */ 
        public function CustomAdPolicyContentFactory() { 
                 
        } 
             
        /** 
        * @inheritDoc 
        */ 
        override protected function doRetrieveAdPolicySelector(item:MediaPlayerItem):AdPolicySelector { 
        if (!_adPolicySelector) { 
            _adPolicySelector = new CustomAdPolicySelector(item); 
        } 
                             
        return _adPolicySelector; 
        } 
    }
    
  3. Register the new advertising factory class to be used with the MediaPlayer.

    var mediaResource:MediaResource =  
      MediaResource.createFromUrl("https://example.org/stream.m3u8", null); 
    var mediaPlayerItemConfig:MediaPlayerItemConfig =  
      PSDKConfig.retrieveMediaPlayerItemConfig(); 
    mediaPlayerItemConfig.advertisingFactory = new CustomAdPolicyContentFactory(); 
    player.replaceCurrentResource(mediaResource, mediaPlayerItemConfig);
    

On this page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now