再生速度の変更

Movie PlayListの再生速度を変更し、変更された場合にイベント(RateChangeEvent)を受信するサンプルコード。
setRateで指定する値が1が通常再生、0が一時停止となる。負の値を指定すると逆方向への再生となる。ただし、0と1以外は動作が保証されない。
RateChangeEventは、プログラムから再生速度を変更するときだけでなう、ユーザが一時停止や早送りをした場合も発生する。

 

 

Main.java

 

import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Manager;
import javax.media.Player;
import javax.media.RateChangeEvent;
import javax.tv.xlet.Xlet;
import javax.tv.xlet.XletContext;
import javax.tv.xlet.XletStateChangeException;
import org.bluray.net.BDLocator;
 
// 再生速度変更検出のためControllerListenerを実装
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);
            // 本クラスをJMFプレーヤーにControllerListenerとして登録
            player.addControllerListener(this);
            // 一時停止
            Thread.sleep(5000);
            player.setRate(0F);
            // 再生再開
            Thread.sleep(5000);
            player.setRate(1F);
            // 逆再生
            Thread.sleep(5000);
            player.setRate(-1F);
        } catch(Throwable thr) {
        }
    }
    public void startXlet(){	}
    public void pauseXlet(){	}
    public void destroyXlet(boolean arg0) throws XletStateChangeException {}
    // 再生速度変更検出のためControllerListenerを実装
    public void controllerUpdate(ControllerEvent arg0) {
        // RateChangeEventを抜き出す
        if( arg0 instanceof RateChangeEvent ){
            RateChangeEvent rce = (RateChangeEvent)arg0;
            System.out.println("Rate="+Float.toString( rce.getRate() ) );
        }
    }
}

 


関連する項目

返信を残す

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