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

java jmf实现本地视频播放_Java的JMF实现视频播放器相关推荐

  1. java 监听本地端口_JAVA本地监听与远程端口扫描

    摘 要 随着Internet的不断发展,信息技术已成为社会进步的巨大推动力.不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键,这就使保证信息的安全变得格外重要.本地 ...

  2. java读取安卓本地文件_Java Android 二进制文件读写

    1.读取android工程中本地二进制文件 Android studio工程目录中有二进制文件abcd.raw . 二进制文件所放目录 app/src/main/assets/abcd.raw 1.1 ...

  3. java代码删除本地文件_java程序实现删除本地文件

    import java.io.File; public class Test { public static void main(String args[]) { Test t = new Test( ...

  4. java的对象对象映射_Java对象到对象映射器

    java的对象对象映射 我在该项目上使用了Dozer一段时间. 但是,最近我遇到了一个非常有趣的错误,这促使我环顾四周,并尝试使用其他"对象到对象"映射器. 这是我找到的工具列表: ...

  5. java 线程加载类_java JVM-线程上下类加载器

    public class One { public static void main(String[] args) throws Exception { ClassLoader loader=One. ...

  6. JAVA单选组监听_java – 如何将侦听器附加到单选按钮

    我有一个显示各种radiobutton的活动.无线电按钮分组在无线电组中.我希望在检查某个单选按钮时,一些radiobutton会消失.例如,当检查事故按钮时,摔倒,绊倒和疾病的无线电按钮消失.我怎么 ...

  7. java本地缓存_java缓存——(五)LocalCache本地缓存分享

    LocalCache本地缓存分享 前言 一.本地缓存应用场景 二.java本地缓存标准 三.java开源缓存框架 四.LocalCache实现 结束语 前言 本次分享探讨java平台的本地缓存,是指占 ...

  8. [zz] 深入java虚拟机之本地方法

    [zz] 深入java虚拟机之本地方法 转自:http://blog.csdn.net/sunxiaosunxiao/article/details/6829899 本地方法就是直接和硬件打交道的一个 ...

  9. java调节音量代码_用Java调用VC音量控制程序_java

    前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...

最新文章

  1. java if 没有_java – 如何做一个决定没有if语句
  2. linux 分区表dd,dd复制分区后目标分区的大小变成原分区了
  3. hdu-3944 DP?
  4. 【Java】 5.9 初始化块
  5. 游历校园 [COGS 614] [欧拉图]
  6. golang中的go mod开发
  7. java nio proactor_reactor模式与java nio
  8. JoinGroup的过程
  9. 张俊红22岁年度总结
  10. python怎么让输出的数字右对齐_python(格式化输出)
  11. hbase shell 查看列名_hbase shell 常用命令
  12. 小学奥数 7651 自来水供给 python
  13. golang 一段代码不甚明白
  14. 微课|《Python编程基础与案例集锦(中学版)》第2章(1)
  15. 通用权限管理平台--数据模型定义
  16. redis数据类型 - Hash类型
  17. jdbc:initialize-database标签的研究
  18. 111... 南邮NOJ 1079
  19. 【5G通信】基于matlab 5G通信新型多载波技术GFDM【含Matlab源码 106期】
  20. 关于小波分解的滤波器理解

热门文章

  1. 用户画像第一章(企业级360°全方位用户画像_环境搭建)
  2. 8Manage PPM,助力北京测威提升项目运营效益
  3. MacOS Catalina Beta使用体验
  4. vFlat Scan – 可能是最快捷的纸质书扫描应用,一次 2页,居然还能移除手指头[iOS/Android]
  5. Redis-14Redis超时命令
  6. 陆游和辛弃疾都是南宋主战爱国的大才子,而且生活在同一个时代,有没有交集?
  7. Java输出英语字母对应的数字
  8. Google的通用翻译机能成为未来的巴别鱼吗?
  9. 公司技术分享-全文技术分享Lucene VS ElasticSearch VS Solr
  10. 电子物流中的EDI 应用