2012-02-21 1 views
1

Я пытаюсь создать прокси-плагин для OSMF, который будет служить плагином для аналитики, который отслеживает определенные события. Я хочу отслеживать текущее время видео.Прослушивание текущего изменения времени с помощью прокси-плагина OSMF

В методе набора для проксированного элемента, я следующее:

proxiedElement.addEventListener(MediaElementEvent.TRAIT_ADD, _onTraitAdd); 

Затем в методе _onTraitAdd, я прилагаю слушателей событий для DURATION_CHANGE и CURRENT_TIME_CHANGE событий.

private function _onTraitAdd(event:MediaElementEvent):void { 
     trace("adding trait"); 
     trace(event.traitType); 

     if (MediaTraitType.TIME == event.traitType) 
     { 
      //Get the time trait, so we can handle the duration changed event 
      var timeTrait:TimeTrait = proxiedElement.getTrait(MediaTraitType.TIME) as TimeTrait; 
      timeTrait.addEventListener(TimeEvent.DURATION_CHANGE, _onDurationChanged); 
      timeTrait.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, _onTimeChanged); 
      //debug("Media has a timeline"); 

     } 

    } 

Первое событие, DURATION_CHANGE обжигают в начале видео, однако второй один никогда не увольняют.

На каком элементе я должен подключить событие CURRENT_TIME_CHANGE, чтобы отслеживать текущее время видео?

Я проанализировал Google Analytics plugin for OSMF, который утверждает, что отслеживает каждые 5,10 или 20 секунд, однако looking at the code, неясно, как ему удается отслеживать текущее время.

ответ

2

Решение состояло в том, чтобы добавить слушателя событий изменения времени на медиаплеер.

Прежде всего, необходимо передать ссылку медиаплеера на ресурс.

В главном классе для плагина добавьте следующее после определения источника pluginResource.

pluginResource.addMetadataValue("MediaPlayer", mediaPlayer); 

Затем в классе, который расширяет модуль PluginInfo, переопределяет метод initializePlugin. Возьмите ссылку MediaPlayer и добавьте прослушиватель событий.

*/ 
override public function initializePlugin(resource:MediaResourceBase):void 
{ 
var mediaPlayer:MediaPlayer = resource.getMetadataValue("MediaPlayer") as MediaPlayer; 
mediaPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, _onTimeChanged); 

} 

private function _onTimeChanged(event:TimeEvent):void { 

    trace("event.time", event.time); 
    } 

Для получения дополнительной информации см плагин объявления включенного в исходных файлах НПРП (AdvertisementPluginInfo.as).

Смежные вопросы