您的位置:首页 > 编程语言 > Java开发

java播放视频

2013-11-15 21:00 218 查看
利用JMF播放视频,需要自行下载和安装JMF。

JMF图解安装教程参看:http://download.csdn.net/detail/piaopiaopiaopiaopiao/6559133

package za;

import java.awt.BorderLayout;  
import java.awt.Component;  
import java.awt.Dimension;  
import java.awt.Frame;  
//import java.awt.Panel;  
import java.awt.event.WindowAdapter;  
import java.awt.event.WindowEvent;  
import java.io.IOException;  
import java.net.MalformedURLException;  
import java.net.URL;  
  
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;  
  
public class JMFSample implements ControllerListener {  
    public static void main(String[] args) {  
        JMFSample sp = new JMFSample();  
        sp.play();  
    }  
     
    private Frame f;  
    private Player player;  
   // private Panel panel;  
    private Component visual;  
    private Component control = null;  
     
    public void play(){  
        f = new Frame("JMF Sample1");  
        f.addWindowListener(new WindowAdapter() {  
            public void windowClosing(WindowEvent we) {  
                if(player != null) {  
                    player.close();  
                }  
                System.exit(0);  
            }  
        });  
        f.setSize(500,400);  
  
        f.setVisible(true);  
        URL url = null;  
        try {  
            //准备一个要播放的视频文件的URL  
       //     url = new URL("file:/D:/viplanedeparture.avi"); 
        	  url = new URL("file:\\D:\\桂林山水视频.mpg");
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        }         
        try {  
            //通过调用Manager的createPlayer方法来创建一个Player的对象  
            //这个对象是媒体播放的核心控制对象  
            player = Manager.createPlayer(url);  
        } catch (NoPlayerException e1) {  
            e1.printStackTrace();  
        } catch (IOException e1) {  
            e1.printStackTrace();  
        }  
  
        //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作  
        player.addControllerListener(this);  
         
        //让player对象进行相关的资源分配  
        player.realize();  
    }  
     
    private int videoWidth = 0;  
    private int videoHeight = 0;  
    private int controlHeight = 30;  
    private int insetWidth = 10;  
    private int insetHeight = 30;  
     
    //监听player的相关事件  
    public void controllerUpdate(ControllerEvent ce) {  
        if (ce instanceof RealizeCompleteEvent) {  
            //player实例化完成后进行player播放前预处理  
            player.prefetch();  
        } else if (ce instanceof PrefetchCompleteEvent) {  
            if (visual != null)  
                return;  
  
            //取得player中的播放视频的组件,并得到视频窗口的大小  
            //然后把视频窗口的组件添加到Frame窗口中,  
            if ((visual = player.getVisualComponent()) != null) {  
                Dimension size = visual.getPreferredSize();  
                videoWidth = size.width;  
                videoHeight = size.height;  
                f.add(visual);  
            } else {  
                videoWidth = 320;  
            }  
             
            //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中  
            if ((control = player.getControlPanelComponent()) != null) {  
                controlHeight = control.getPreferredSize().height;  
                f.add(control, BorderLayout.SOUTH);  
            }  
             
            //设定Frame窗口的大小,使得满足视频文件的默认大小  
            f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);  
            f.validate();  
             
            //启动视频播放组件开始播放  
            player.start();  
        } else if (ce instanceof EndOfMediaEvent) {  
            //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放  
            player.setMediaTime(new Time(0));  
            player.start();  
        }  
    }  
  
}
本程序经验证可以播放mp3,wav音频文件,可以播放avi,mpg格式的视频文件。

源码转自:http://blog.csdn.net/oyzl68/article/details/6958490
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: