当前位置:文档之家› java视频播放器几种

java视频播放器几种

package com.bird.jmf;import java.awt.*;import java.awt.event.*;import java.io.*;import .*;import javax.swing.*;import javax.media.*;// 视频播放程序public class VideoPlayDemo extends JFrame {private Player player; // 播放器对象private Component visualMedia; // 视频显示组件private Component mediaControl; // 视频播放控制组件private Container container; // 主容器private File mediaFile; //媒体文件private URL fileURL; //媒体文件URL地址public VideoPlayDemo() { // 构造函数super("视频播放程序"); //调用父类构造函数container = getContentPane(); //得到窗口容器JToolBar toobar = new JToolBar(); //实例化工具栏JButton openFile = new JButton("打开媒体文件"); //实例化按钮toobar.add(openFile); //增加按钮到工具栏JButton openURL = new JButton("打开网络地址");toobar.add(openURL);container.add(toobar, BorderLayout.NORTH); //设置工具栏openFile.addActionListener(new ActionListener() { //打开文件按钮事件处理public void actionPerformed(ActionEvent event) {JFileChooser fileChooser = new JFileChooser(); //实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);//设置文件打开模式为仅打开文件int result =fileChooser.showOpenDialog(VideoPlayDemo.this);//显示对话框if (result == JFileChooser.APPROVE_OPTION) { //得到用户行为mediaFile = fileChooser.getSelectedFile(); //得到选择的文件}if (mediaFile != null) {try {fileURL = mediaFile.toURL(); //得到文件的URL地址 } catch (MalformedURLException ex) {ex.printStackTrace(); //输出错误信息showMessage("打开错误"); //显示错误信息}startPlayer(fileURL.toString()); //开始播放打开的文件 }}});openURL.addActionListener(new ActionListener() { //打开URL按钮事件处理public void actionPerformed(ActionEvent event) {String addressName=JOptionPane.showInputDialog(VideoPlayDemo.this, "输入URL地址");if (addressName != null)startPlayer(addressName); //开始播放打开的URL}});Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, Boolean.TRUE);setSize(300, 200); //设置窗口大小setVisible(true); //设置窗口为可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}//初始化播放器public void startPlayer(String mediaLocation) {if (player != null)//如果播放器非空则移去先前的播放器组件if (visualMedia != null)container.remove(visualMedia); //如果对象visualMedia非空则移去if (mediaControl != null) {container.remove(mediaControl); //如果对象mediaControl非空则移去player.close(); //关闭播放器}MediaLocator mediaLocator = new MediaLocator(mediaLocation); //媒体定位器if (mediaLocator == null) {showMessage("打开文件错误"); //显示错误信息return;}try {player = Manager.createPlayer(mediaLocator); //得到播放器实例 player.addControllerListener(new PlayerEventHandler()); //增加播放控制器player.realize();} catch (Exception ex) {ex.printStackTrace();showMessage("打开错误"); //显示错误信息}}//取得媒体组件//Download by public void getMediaComponents() {visualMedia = player.getVisualComponent(); //取得视频显示组件//如果对象visualMedia非空则加入到窗口内容窗格if (visualMedia != null) {container.add(visualMedia, BorderLayout.CENTER);pack();}mediaControl = player.getControlPanelComponent(); //取得播放控制组件//如果对象visualMedia非空则加入到窗口内容窗格if (mediaControl != null)container.add(mediaControl, BorderLayout.SOUTH);}//播放器事件处理private class PlayerEventHandler extends ControllerAdapter {public void realizeComplete(RealizeCompleteEvent realizeDoneEvent) {player.prefetch(); //预取媒体数据}//完成预取媒体数据后,开始播放媒体public void prefetchComplete(PrefetchCompleteEvent prefetchDoneEvent) {getMediaComponents();validate();player.start(); //开始播放媒体}//如果媒体播放完毕,重新设置媒体时间并停止媒体播放器public void endOfMedia(EndOfMediaEvent mediaEndEvent) { player.setMediaTime(new Time(0)); //重新设置媒体时间 player.stop(); // 停止媒体播放}}public void showMessage(String s) {JOptionPane.showMessageDialog(this, s); //显示提示信息}public static void main(String args[]) {new VideoPlayDemo();}}第二个源码事例import java.awt.BorderLayout;import ponent;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 implements ActionListener, 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以执行windowCloseddispose();}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();// 创建一个复选框菜单项JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循环", false); 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);}/*** 实现了ActionListener接口,处理组件的活动事件*/public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();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播放器对象player.close();}try {// 创建一个打开选择文件的播放器player = Manager.createPlayer(new MediaLocator("file:"+ fileDialog.getDirectory() + fileDialog.getFile()));} catch (java.io.IOException e2) {System.out.println(e2);return;} catch (NoPlayerException e2) {System.out.println("不能找到播放器.");return;}if (player == null) {System.out.println("无法创建播放器.");return;}first = false;this.setTitle(fileDialog.getFile());// 播放器的控制事件处理player.addControllerListener(this);// 预读文件内容player.prefetch();}/*** 实现ControllerListener接口的方法,处理播放器的控制事件*/public void controllerUpdate(ControllerEvent e) {// 调用player.close()时ControllerClosedEvent事件出现。

相关主题