再生状態の取得

JMF Playerの再生の状態遷移イベント(ControllerEvent)を取得するサンプルコード。
これを使うことで、再生開始や再生終了などの状態変化を捉えることができる。手順は以下のとおり。

 

  1. イベントを受け取るinterfaceであるjavax.media.ControllerListenerを実装
  2. JMFプレーヤーに、addControllerLisnterで先ほどのlistenerを指定
  3. 状態遷移毎に先ほどのlistenerにcontrollerUpdateメソッドが呼び出されるので、渡されるイベントの型を調べる。

 

なお、Movie PlayListだけでなく、Sound data fileなどJMF Playerを使うものであれば何でも使用可能である。

 

 

Main.java

 

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.Player;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import org.bluray.net.BDLocator;
import org.davic.media.MediaLocator;
 
public class Main implements Xlet, ControllerListener {
 
    public void initXlet(XletContext context){
        try {
            BDLocator loc = new BDLocator("bd://1.PLAYLIST:00000");
            MediaLocator ml = new MediaLocator(loc);
            Player player = Manager.createPlayer(ml);
            player.addControllerListener(this);
            player.start();
        } catch(Throwable thr) {
        }
    }
    public void controllerUpdate(ControllerEvent arg0) {
    }
    public void startXlet(){	}
    public void pauseXlet(){	}
    public void destroyXlet(boolean unconditional){	}
}

 

ちなみに、PS3で実行した際に、取得できたイベントは以下のとおりである。

 

Movie PlayListの場合

 

javax.media.TransitionEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.DurationUpdateEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent

 

sound.bdmvの場合

 

javax.media.TransitionEvent
javax.media.RealizeCompleteEvent
javax.media.TransitionEvent
javax.media.PrefetchCompleteEvent
javax.media.StartEvent
javax.media.org.davic.media.MediaPresentedEvent
javax.media.EndOfMediaEvent

 


関連する項目

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください