Omitir pausas publicitarias durante un periodo de tiempo

Última actualización: 2023-09-19

De forma predeterminada, TVSDK fuerza la reproducción de una pausa publicitaria cuando el usuario realiza una búsqueda sobre una pausa publicitaria. Puede personalizar el comportamiento para omitir una pausa publicitaria si el tiempo transcurrido desde que se completó una pausa anterior se encuentra dentro de un determinado número de minutos.

IMPORTANTE

Cuando hay una búsqueda interna para omitir un anuncio, puede haber una ligera pausa en la reproducción.

El siguiente ejemplo de selector de políticas de publicidad personalizado omite los anuncios en los siguientes cinco minutos (hora del reloj mural) después de que un usuario haya visto una pausa publicitaria.

  1. Amplíe el selector predeterminado de directivas de publicidad para anular el comportamiento predeterminado.

    /**
     * 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. Cree una nueva fábrica de publicidad que utilice su selector personalizado.

    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. Registre la nueva clase de generador de publicidad que se va a utilizar con 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);
    

En esta página