请教java窗体中插入视频怎么做?
比如点击一个按钮就播放指定的一段视频。
注意不是JS或JSP,是JAVA窗体

解决方案 »

  1.   

    要有相应的JAR包!应该支持任何格式!不过用JAVA的媒体流的操作好象只是在J2ME中比较常见!
      

  2.   

    用DJNativeSwing,里面有个JFlashPlayer控件,可以方便地添加到其他的swing容器上,它能把你本地的播放器如暴风影音之类的嵌进去也可以用Adobe Flash播放
      

  3.   

    内嵌 mplayer :
    http://beradrian.wordpress.com/2008/01/30/jmplayer/感谢gfw。
      

  4.   

    URL location = SPlayer.class.getResource("name.mp3"); //同目录下文件
    MediaLocator mrl = new MediaLocator(location); 
    Player player = Manager.createPlayer(mrl); 
    player.start(); 
      

  5.   

    这个是JMF的播放视频的实例,但是你主机需要额外装JMF,对应安装包可以加我QQ 519582737给你,否则程序跑不起来
    还有JMF这里还不支持AVI ,可以播放MEPG格式
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.FileDialog;
    import java.awt.Font;
    import java.awt.FontMetrics;
    import java.awt.Graphics;
    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;/**
     * 循环播放声音的实例 这个程序要正常播放还需要本机装有JMF,单纯有JMF的jar包发现确实是不行
     * 这个例子还可以播放视频文件,已经播放过的有mpg格式
     * @author ioe_gaoyong
     * 
     */
    public class MediaPlayer extends JFrame implements ActionListener,ControllerListener, ItemListener{ Player player; Component vc, cc; boolean first = true, loop = false; String currentDirectory; MediaPlayer(String title) { super(title); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ // 用户点击窗口系统菜单的关闭按钮 // 调用dispose以执行windowClosed dispose(); } public void windowClosed(WindowEvent e){ if (player != null)
    player.close(); System.exit(0); } }); JMenu m = new JMenu("文件"); JMenuItem mi = new JMenuItem("打开"); mi.addActionListener(this); m.add(mi); m.addSeparator(); JCheckBoxMenuItem cbmi = new JCheckBoxMenuItem("循环", false); cbmi.addItemListener(this); m.add(cbmi); m.addSeparator(); mi = new JMenuItem("退出"); mi.addActionListener(this); m.add(mi); JMenuBar mb = new JMenuBar(); mb.add(m); setJMenuBar(mb); setSize(200, 200); setVisible(true); } public void actionPerformed(ActionEvent e){ if (e.getActionCommand().equals("退出")) { // 调用dispose以便执行windowClosed dispose(); return; } // 利用FileDialog来帮助完成选择文件
    // FileDialog貌似是平台相关的一个实现,是AWT的组件
    FileDialog fd = new FileDialog(this, "打开媒体文件", FileDialog.LOAD); fd.setDirectory(currentDirectory); fd.show(); // 如果用户放弃选择文件,则返回 if (fd.getFile() == null)
    return; currentDirectory = fd.getDirectory(); if (player != null) player.close(); try{ player = Manager.createPlayer(new MediaLocator ("file:" + fd.getDirectory() + fd.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; setTitle(fd.getFile()); player.addControllerListener(this); player.prefetch(); } public void controllerUpdate(ControllerEvent e) { // 调用player.close()时ControllerClosedEvent事件出现。 // 如果存在视觉部件,则该部件应该拆除(为一致起见, // 我们对控制面板部件也执行同样的操作) if (e instanceof ControllerClosedEvent) { if (vc != null) { remove(vc); vc = null; } if (cc != null) { remove(cc); cc = null; } return; } if (e instanceof EndOfMediaEvent){ if (loop){ player.setMediaTime(new Time(0)); player.start(); } return; } if (e instanceof PrefetchCompleteEvent) {
    System.out.println("主程序抛出PrefetchCompleteEvent事件");
    player.start();
    System.out.println("这首歌时长" + player.getDuration().getSeconds()
    + "秒"); return; } if (e instanceof RealizeCompleteEvent){
    System.out.println("主程序抛出RealizeCompleteEvent事件");
    vc = player.getVisualComponent(); if (vc != null) add(vc); cc = player.getControlPanelComponent(); if (cc != null) add(cc, BorderLayout.SOUTH); pack(); } } public void itemStateChanged(ItemEvent e){ loop = !loop;// 设置是否循环 } public void paint(Graphics g){ if (first){ int w = getSize().width; int h = getSize().height; g.setColor(Color.blue); g.fillRect(0, 0, w, h); Font f = new Font("DialogInput", Font.BOLD, 16); g.setFont(f); FontMetrics fm = g.getFontMetrics(); int swidth = fm.stringWidth("*** 欢迎 ***"); g.setColor(Color.white); g.drawString("*** 欢迎 ***", (w - swidth) / 2, (h + getInsets().top) / 2); } // 调用超类Frame的paint()方法,该paint()方法将调用Frame包含的各个容器 // 和部件(包括控制面板部件)的paint()方法。 super.paint(g); } // 不执行背景清除操作,以免控制面板部件闪烁 public void update(Graphics g){ paint(g); } public static void main(String[] args){ new MediaPlayer("媒体播放器1.0"); }}
      

  6.   

    现在windows下的java可以使用javafx 2来播放视频,http://download.oracle.com/javafx/2.0/media/simpleplayer.htm
    http://download.oracle.com/javafx/2.0/media/jfxpub-media.htm