Plugins 使用OSMF代理插件监听当前时间变化

Plugins 使用OSMF代理插件监听当前时间变化,plugins,osmf,Plugins,Osmf,我正在尝试为OSMF创建一个代理插件,作为跟踪特定事件的分析插件。我想跟踪视频的当前时间 在代理元素的set方法中,我有以下内容: proxiedElement.addEventListener(MediaElementEvent.TRAIT_ADD, _onTraitAdd); 然后,在\onTraitAdd方法中,我为持续时间\u更改和当前时间\u更改事件附加事件侦听器 private function _onTraitAdd(event:MediaElementEvent ):v

我正在尝试为OSMF创建一个代理插件,作为跟踪特定事件的分析插件。我想跟踪视频的当前时间

在代理元素的set方法中,我有以下内容:

proxiedElement.addEventListener(MediaElementEvent.TRAIT_ADD, _onTraitAdd);
然后,在
\onTraitAdd
方法中,我为持续时间\u更改和当前时间\u更改事件附加事件侦听器

    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\u CHANGE
在视频开始时触发,但第二个事件从未触发

我应该在哪个元素上附加
CURRENT\u TIME\u CHANGE
事件以跟踪视频的当前时间


我已经分析了声称每5秒、10秒或20秒跟踪一次的事件,但是不清楚它是如何跟踪当前时间的。

解决方案是在媒体播放器上添加时间更改事件侦听器

首先,需要将媒体播放器的引用传递给资源

在plugin的主类中,在定义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);
  }
有关更多信息,请参阅OSMF源文件中包含的广告插件(
AdvertisementPluginInfo.as