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