Failed to realize: com.sun.media.PlaybackEngine@480457

[quote][color=red]Unable to handle format: XVID, 960x540, FrameRate=29.9, Length=777600 0 extra bytes
Unable to handle format: mpeglayer3, 44100.0 Hz, 0-bit, Stereo, Unsigned, 16000.0 frame rate, FrameSize=8 bits
Failed to realize: com.sun.media.PlaybackEngine@480457
Error: Unable to realize com.sun.media.PlaybackEngine@480457[/color]
在测试JMF时出现了这样的错误,一般是avi的编码格式问题,JMF对一些新的avi格式是不支持的,特上传了一个通过测试的avi;以供测试之用
[/quote]
/**
* 视频播放测试
*/
public class VedioTest extends JFrame {
private Player player;

public static void main(String args[]) {
String path = "file:///E:/hello.avi";
VedioTest vt = new VedioTest(path);
vt.initUI();
}

/**
* 在构造器中初始化数据
*
* @param:要初始化的数据源,即视频文件的路径
*/
public VedioTest(String path) {
// 确定视频文件的位置
javax.media.MediaLocator ml = new javax.media.MediaLocator(path);
try {
// 创建一个播放器对象
player = javax.media.Manager.createPlayer(ml);
// 创建一个播放器的控制器监听器对象
MyConreollerListener l = new MyConreollerListener(player, this);
// 给播放器对象注册控制器监听器
player.addControllerListener(l);
// 开始播放
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* 初始化界面
*/
public void initUI() {
this.setTitle("JMF播放视频示例");
this.setSize(400, 300);
this.setDefaultCloseOperation(3);
this.setVisible(true);
}
}

/**
* 视频控制器监听器类
*/
public class MyConreollerListener implements javax.media.ControllerListener {
private Player player;
private JFrame jf;

public MyConreollerListener(Player player, JFrame jf) {
this.player = player;
this.jf = jf;
}

/**
* 实现监听器接口中的方法.此方法可通知应用程序对播放器的事件做出反应
*/
public synchronized void controllerUpdate(ControllerEvent e) {
if (e instanceof javax.media.RealizeCompleteEvent) {
Component comp;
// 得到播放器的可视容器,即播放器显示视频的容器
if ((comp = player.getVisualComponent()) != null) {
// 将可视容器加到窗体上
jf.add("Center", comp);
}
// 得到播放器的控制面板容器
if ((comp = player.getControlPanelComponent()) != null) {
// 添加到窗体上
jf.add("South", comp);
}
jf.validate();// 刷新窗体
}
}
}

你可能感兴趣的:(我的java程序)