ビデオの表示サイズおよび表示位置を変更するサンプルコードである。
JMF Controlの1つであるjavax.tv.media.AWTVideoSizeControlを使用している。BD-JのAWTVideoSizeControlは次のことが可能である。
- ビデオ表示サイズを1/2または1/4に縮小
- その際、表示位置をピクセル単位で指定
APIの仕様を見る限り、Clippingも可能そうだが、PS3のAVCHD再生ではできなかった。
Main.java
import java.awt.Rectangle;
import javax.media.Manager;
import javax.media.Player;
import javax.tv.media.AWTVideoSize;
import javax.tv.media.AWTVideoSizeControl;
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 {
public void initXlet(XletContext context){
try {
// JMFプレイヤーを生成
BDLocator loc = new BDLocator("bd://1.PLAYLIST:00000");
MediaLocator ml = new MediaLocator(loc);
Player player = Manager.createPlayer(ml);
// AWTVideoSizeControlを取得
AWTVideoSizeControl avsc = (AWTVideoSizeControl) player.getControl("javax.tv.media.AWTVideoSizeControl");
// 再生開始
player.start();
// 再生途中でも変更可能
Thread.sleep(5000);
// 縮小前のサイズを指定
Rectangle src = new Rectangle(0, 0,1920,1080);
// 表示位置と、縮小後のサイズを指定
Rectangle dest = new Rectangle(500, 500, 1920/4,1080/4);
AWTVideoSize avs = new AWTVideoSize(src, dest);
// 縮小
avsc.setSize(avs);
} catch(Throwable thr) {
}
}
public void startXlet(){ }
public void pauseXlet(){ }
public void destroyXlet(boolean unconditional){ }
}