JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去

     




1. package com.bird.jmf;  
2.
3. import java.awt.BorderLayout;
4. import java.awt.Component;
5. import java.awt.Dimension;
6. import java.awt.Frame;
7. import java.awt.Panel;
8. import java.awt.event.WindowAdapter;
9. import java.awt.event.WindowEvent;
10. import java.io.IOException;
11. import java.net.MalformedURLException;
12. import java.net.URL;
13.
14. import javax.media.CannotRealizeException;
15. import javax.media.ControllerEvent;
16. import javax.media.ControllerListener;
17. import javax.media.EndOfMediaEvent;
18. import javax.media.Manager;
19. import javax.media.MediaLocator;
20. import javax.media.NoPlayerException;
21. import javax.media.Player;
22. import javax.media.PrefetchCompleteEvent;
23. import javax.media.RealizeCompleteEvent;
24. import javax.media.Time;
25.
26. @SuppressWarnings({ "restriction", "unused" })
27. public class JMFSample implements ControllerListener {
28. public static void main(String[] args) {
29. new JMFSample();
30. sp.play();
31. }
32.
33. private Player mediaPlayer;
34. private Frame f;
35. private Player player;
36. private Panel panel;
37. private Component visual;
38. private Component control = null;
39.
40. public void play(){
41. new Frame("JMF Sample1");
42. new WindowAdapter() {
43. public void windowClosing(WindowEvent we) {
44. if(player != null) {
45. player.close();
46. }
47. 0);
48. }
49. });
50. 500,400);
51.
52. true);
53. null;
54. try {
55. //准备一个要播放的视频文件的URL
56. new URL("file:/d:/2.mpg");
57. catch (MalformedURLException e) {
58. e.printStackTrace();
59. }
60. try {
61. //通过调用Manager的createPlayer方法来创建一个Player的对象
62. //这个对象是媒体播放的核心控制对象
63. player = Manager.createPlayer(url);
64. catch (NoPlayerException e1) {
65. e1.printStackTrace();
66. catch (IOException e1) {
67. e1.printStackTrace();
68. }
69.
70. //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
71. this);
72.
73. //让player对象进行相关的资源分配
74. player.realize();
75. }
76.
77. private int videoWidth = 0;
78. private int videoHeight = 0;
79. private int controlHeight = 30;
80. private int insetWidth = 10;
81. private int insetHeight = 30;
82.
83. //监听player的相关事件
84. public void controllerUpdate(ControllerEvent ce) {
85. if (ce instanceof RealizeCompleteEvent) {
86. //player实例化完成后进行player播放前预处理
87. player.prefetch();
88. else if (ce instanceof PrefetchCompleteEvent) {
89. if (visual != null)
90. return;
91.
92. //取得player中的播放视频的组件,并得到视频窗口的大小
93. //然后把视频窗口的组件添加到Frame窗口中,
94. if ((visual = player.getVisualComponent()) != null) {
95. Dimension size = visual.getPreferredSize();
96. videoWidth = size.width;
97. videoHeight = size.height;
98. f.add(visual);
99. else {
100. 320;
101. }
102.
103. //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
104. if ((control = player.getControlPanelComponent()) != null) {
105. controlHeight = control.getPreferredSize().height;
106. f.add(control, BorderLayout.SOUTH);
107. }
108.
109. //设定Frame窗口的大小,使得满足视频文件的默认大小
110. f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
111. f.validate();
112.
113. //启动视频播放组件开始播放
114. player.start();
115. mediaPlayer.start();
116. else if (ce instanceof EndOfMediaEvent) {
117. //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
118. new Time(0));
119. player.start();
120. }
121. }
122.
123. }

效果图如下






 JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去

     




1. package com.bird.jmf;  
2.
3. import java.awt.BorderLayout;
4. import java.awt.Component;
5. import java.awt.Dimension;
6. import java.awt.Frame;
7. import java.awt.Panel;
8. import java.awt.event.WindowAdapter;
9. import java.awt.event.WindowEvent;
10. import java.io.IOException;
11. import java.net.MalformedURLException;
12. import java.net.URL;
13.
14. import javax.media.CannotRealizeException;
15. import javax.media.ControllerEvent;
16. import javax.media.ControllerListener;
17. import javax.media.EndOfMediaEvent;
18. import javax.media.Manager;
19. import javax.media.MediaLocator;
20. import javax.media.NoPlayerException;
21. import javax.media.Player;
22. import javax.media.PrefetchCompleteEvent;
23. import javax.media.RealizeCompleteEvent;
24. import javax.media.Time;
25.
26. @SuppressWarnings({ "restriction", "unused" })
27. public class JMFSample implements ControllerListener {
28. public static void main(String[] args) {
29. new JMFSample();
30. sp.play();
31. }
32.
33. private Player mediaPlayer;
34. private Frame f;
35. private Player player;
36. private Panel panel;
37. private Component visual;
38. private Component control = null;
39.
40. public void play(){
41. new Frame("JMF Sample1");
42. new WindowAdapter() {
43. public void windowClosing(WindowEvent we) {
44. if(player != null) {
45. player.close();
46. }
47. 0);
48. }
49. });
50. 500,400);
51.
52. true);
53. null;
54. try {
55. //准备一个要播放的视频文件的URL
56. new URL("file:/d:/2.mpg");
57. catch (MalformedURLException e) {
58. e.printStackTrace();
59. }
60. try {
61. //通过调用Manager的createPlayer方法来创建一个Player的对象
62. //这个对象是媒体播放的核心控制对象
63. player = Manager.createPlayer(url);
64. catch (NoPlayerException e1) {
65. e1.printStackTrace();
66. catch (IOException e1) {
67. e1.printStackTrace();
68. }
69.
70. //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
71. this);
72.
73. //让player对象进行相关的资源分配
74. player.realize();
75. }
76.
77. private int videoWidth = 0;
78. private int videoHeight = 0;
79. private int controlHeight = 30;
80. private int insetWidth = 10;
81. private int insetHeight = 30;
82.
83. //监听player的相关事件
84. public void controllerUpdate(ControllerEvent ce) {
85. if (ce instanceof RealizeCompleteEvent) {
86. //player实例化完成后进行player播放前预处理
87. player.prefetch();
88. else if (ce instanceof PrefetchCompleteEvent) {
89. if (visual != null)
90. return;
91.
92. //取得player中的播放视频的组件,并得到视频窗口的大小
93. //然后把视频窗口的组件添加到Frame窗口中,
94. if ((visual = player.getVisualComponent()) != null) {
95. Dimension size = visual.getPreferredSize();
96. videoWidth = size.width;
97. videoHeight = size.height;
98. f.add(visual);
99. else {
100. 320;
101. }
102.
103. //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
104. if ((control = player.getControlPanelComponent()) != null) {
105. controlHeight = control.getPreferredSize().height;
106. f.add(control, BorderLayout.SOUTH);
107. }
108.
109. //设定Frame窗口的大小,使得满足视频文件的默认大小
110. f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
111. f.validate();
112.
113. //启动视频播放组件开始播放
114. player.start();
115. mediaPlayer.start();
116. else if (ce instanceof EndOfMediaEvent) {
117. //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
118. new Time(0));
119. player.start();
120. }
121. }
122.
123. }

效果图如下