java jmf实现本地视频播放_Java的JMF实现视频播放器

60eaa1c3065c62a388dc40bc9cf554c4.png

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)

e27859370dc3864f37c68e0f138fffc1.png

{

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();

}

}

44255466b1bf20b1eace45bf04064432.png

}

下面是另外一个视频播放器程序:

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);

}

2fc93c59c5c2fe7ecb35df0d70ae37c7.png

});

// 创建播放器的菜单

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值