1

特定のイベントを追跡する分析プラグインとして機能するOSMFのプロキシプラグインを作成しようとしています。ビデオの現在の時刻を追跡したい。

プロキシされた要素のsetメソッドには、次のものがあります。

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はビデオの冒頭で発生しますが、2番目のイベントは発生しません。

CURRENT_TIME_CHANGEビデオの現在の時刻を追跡するには、どの要素にイベントを添付する必要がありますか?

5、10、または20秒ごとに追跡すると主張するOSMF用のGoogle Analyticsプラグインを分析しましたが、コードを見ると、現在の時刻を追跡する方法が明確ではありません。

4

1 に答える 1

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);
  }

詳細については、OSMFソースファイルに含まれているアドバタイズメントプラグインを参照してください(AdvertisementPluginInfo.as)。

于 2012-02-21T09:38:59.470 に答える