当前位置: 代码迷 >> J2SE >> java 播放视频文件解决思路
  详细解决方案

java 播放视频文件解决思路

热度:46   发布时间:2016-04-24 01:10:10.0
java 播放视频文件
怎样用一段java代码播放本地的一段视频文件?
急用...

------解决方案--------------------
Java code
import java.io.*;public class MyRun {    private static void Run(String filePath)    {        Runtime r = Runtime.getRuntime();        try         {            r.exec("cmd /c start "+filePath);        } catch (IOException e)         {            System.out.println(e);        }    }    public static void main(String[] args) {        MyRun.Run("D:\\电影\\蜘蛛侠.avi");    }}
------解决方案--------------------
利用JMF播放视频http://zhangjunhd.blog.51cto.com/113473/25474
------解决方案--------------------
Java code
import java.awt.*;   import java.awt.event.*;   import java.io.*;   import java.net.*;   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("打开错误"); //显示错误信息     }      }      //取得媒体组件    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();    }     }
  相关解决方案