JMF播放mpg格式文件出现错误Error: Unable to realize com.sun.media.amovie.AMController@14fe5
米阑儿 2013-02-01 12:57:28 JMF播放mpg格式文件出现错误Error: Unable to realize com.sun.media.amovie.AMController@14fe5c,求大神相救~~~~
代码很简单:
1.package videoplayer;
2.import java.awt.BorderLayout;
3.import java.awt.Component;
4.import java.awt.Dimension;
5.import java.awt.Frame;
6.import java.awt.event.WindowAdapter;
7.import java.awt.event.WindowEvent;
8.import java.io.IOException;
9.import java.net.URL;
10.import javax.media.ControllerEvent;
11.import javax.media.ControllerListener;
12.import javax.media.EndOfMediaEvent;
13.import javax.media.Manager;
14.import javax.media.NoPlayerException;
15.import javax.media.Player;
16.import javax.media.PrefetchCompleteEvent;
17.import javax.media.RealizeCompleteEvent;
18.import javax.media.Time;
19.
20.public class VideoPlayer extends Frame implements ControllerListener {
21.
22. private int videoWidth = 0;
23. private int videoHeight = 0;
24. private int controlHeight = 30;
25. private int insetWidth = 10;
26. private int insetHeight = 30;
27. private Player player;
28. private Component visual; //播放组件
29. private Component control = null; //控制组件
30.
31. public VideoPlayer() {
32. super("视频播放器");
33. setSize(500, 400);
34. setVisible(true);
35. addWindowListener(new WindowAdapter() {
36. public void windowClosing(WindowEvent we) {
37. if (player != null) {
38. player.close();
39. }
40. System.exit(0);
41. }
42. });
43. }
44.
45. public void play() {
46. URL url = null;
47. try {
48.//准备一个要播放的视频文件的URL
49. url = new URL("file://D:/VIDEO0017.mpg");
50.//通过调用Manager 的createPlayer方法来创建一个Player的对象
51.//这个对象是媒体播放的核心控制对象
52. player = Manager.createPlayer(url);
53. } catch (NoPlayerException e1) {
54. e1.printStackTrace();
55. } catch (IOException e1) {
56. e1.printStackTrace();
57. }
58.//对Player对象注册监听器,能在相关事件发生的时候执行相关的动作
59. player.addControllerListener(this);
60.//让Player对象进行相关的资源分配
61. player.realize();
62.
63. }
64.//监听Player的相关事件
65. public void controllerUpdate(ControllerEvent ce) {
66. if (ce instanceof RealizeCompleteEvent) {
67.//Player实例化完成后进行Player播放前预处理
68. player.prefetch();
69. } else if (ce instanceof PrefetchCompleteEvent) {
70. if (visual != null) {
71. return;
72. }
73.//取得Player中的播放视频的组件,并得到视频窗口的大小
74.//然后把视频窗口的组件添加到Frame 窗口中,
75. if ((visual = player.getVisualComponent()) != null) {
76. Dimension size = visual.getPreferredSize();
77. videoWidth = size.width;
78. videoHeight = size.height;
79. add(visual);
80. } else {
81. videoWidth = 320;
82. }
83.//取得Player中的视频播放控制条组件,并把该组件添加到Frame 窗口中
84. if ((control = player.getControlPanelComponent()) != null) {
85. controlHeight = control.getPreferredSize().height;
86. add(control, BorderLayout.SOUTH);
87. }
88.//设定Frame 窗口的大小,使得满足视频文件的默认大小
89. setSize(videoWidth + insetWidth, videoHeight + controlHeight
90. + insetHeight);
91. validate();
92.//启动视频播放组件开始播放
93. player.start();
94. } else if (ce instanceof EndOfMediaEvent) {
95.//当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
96. player.setMediaTime(new Time(0));
97. player.start();
98. }
99. }
100.
101. public static void main(String[] args) {
102. VideoPlayer vp = new VideoPlayer();
103. vp.play();
104. }
105.}出现错误:
run:
Error: Unable to realize com.sun.media.amovie.AMController@14fe5c
Error value: 800c000d
成功构建 (总时间: 15 秒)
求各位大神搭救,小女子在这谢啦~~~