java本地视频播放器
str;
Thread mythread;
Choice choice;
Component visualCompoment,controlCompoment,progressBar;
String mediaFile;
URL mediaURL,codeBase;
Frame frame;
public void init()
{
str='music.MPE';
mythread=new Thread(this);
choice=new Choice();
choice.add('music01.MPG');
choice.add('music02.avi');
choice.add('music03.avi');
choice.addItemListener(this);
frame=new Frame('Movie System');
frame.setSize(640,480);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(player!=null)
{
player.stop();
player.deallocate();
}
frame.setVisible(false);
System.exit(0);
}
});
add(choice);
}
public void stop()
{
if(player!=null)
{
player.stop();
}
}
public synchronized void controllerUpdate(ControllerEventevent)
{
player.getDuration();
if(event instanceof RealizeCompleteEvent)
{
if((visualCompoment=player.getVisualComponent())!=null)
{
frame.add('Center',visualCompoment);
}
if((controlCompoment=player.getControlPanelComponent())!=null)
if(visualCompoment!=null)
frame.add('South',controlCompoment);
else
frame.add('Center',controlCompoment);
frame.validate();
frame.pack();
}
else if(event instanceof PrefetchCompleteEvent)
{
player.start();
}
}
public void itemStateChanged(ItemEvent e)
{
str=choice.getSelectedItem();
if(player==null) {}
else
{
player.stop();
player.deallocate();
}
frame.removeAll();
frame.setVisible(true);
frame.setBounds(300,100,150,100);
frame.validate();
if(!(mythread.isAlive()))
{
mythread=new Thread(this);
}
try{
mythread.start();
}
catch(Exception ee) {}
}
public synchronized void run()
{
try{
mediaURL=new URL(codeBase,str);
player=Manager.createPlayer(mediaURL);
player.getDuration();
if(player!=null)
{
player.addControllerListener(this);
}
else
{
System.out.println('failed to creat player for'+mediaURL);
}
}
catch(MalformedURLException e)
{
System.out.println('URL for'+mediaFile+'is invalid');
}
catch(IOException e)
{
System.out.println('URL for'+mediaFile+'is invalid');
}
catch(NoPlayerException e)
{
System.out.println('Can't find a player'+mediaURL);
}
if(player!=null)
{
player.prefetch();
}
}
}
下面是另外一个视频播放器程序:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class JMFMediaPlayer extends JFrame implementsActionListener,
ControllerListener, ItemListener {
// JMF的播放器
Player player;
// 播放器的视频组件和控制组件
Component vedioComponent;
Component controlComponent;
// 标示是否是第一次打开播放器
boolean first = true;
// 标示是否需要循环
boolean loop = false;
// 文件当前目录
String currentDirectory;
// 构造方法
public JMFMediaPlayer(String title) {
super(title);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
// 用户点击窗口系统菜单的关闭按钮
// 调用dispose以执行windowClosed
dispose();
}
public void windowClosed(WindowEvent e){
if (player != null){
// 关闭JMF播放器对象
player.close();
}
System.exit(0);
}
});
// 创建播放器的菜单
JMenu fileMenu = new JMenu('文件');
JMenuItem openMemuItem = new JMenuItem('打开');
openMemuItem.addActionListener(this);
fileMenu.add(openMemuItem);
// 添加一个分割条
fileMenu.addSeparator();
// 创建一个复选框菜单项
terminaltypeoptionhandler ttopt = new terminaltypeoptionhandler(termtype, false, false, true, false)。 subject sub = new subject(false, princ, new hashset(), new hashset())。 //每次加上new会循环这个加上的new,进入循环又会加一个new。
loopMenuItem.addItemListener(this);
fileMenu.add(loopMenuItem);
fileMenu.addSeparator();
JMenuItem exitMemuItem = new JMenuItem('退出');
exitMemuItem.addActionListener(this);
fileMenu.add(exitMemuItem);
JMenuBar menuBar = new JMenuBar();
menuBar.add(fileMenu);
this.setJMenuBar(menuBar);
this.setSize(200, 200);
try {
// 设置界面的外观,为系统外观
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) {
e.printStackTrace();
}
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals('退出')) {
// 调用dispose以便执行windowClosed
dispose();
return;
}
FileDialog fileDialog = new FileDialog(this, '打开媒体文件',FileDialog.LOAD);
fileDialog.setDirectory(currentDirectory);
fileDialog.setVisible(true);
// 如果用户放弃选择文件,则返回
if (fileDialog.getFile() == null){
return;
}
currentDirectory = fileDialog.getDirectory();
if (player != null){
// 关闭已经存在JMF播放器对象
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-97007-1.html