Java使用Jmf开发播放器

来源:互联网 发布:网络教育和专升本 编辑:程序博客网 时间:2024/05/22 13:58

1.导入jmf的相关jar包 下载地址如下:

http://download.csdn.net/detail/a639735331/9886638

2.运行如下代码

温馨提示:avi文件必须是全帧无压缩的 否则无法播放视频

import java.awt.BorderLayout;import java.awt.Component;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.IOException;import java.net.URL;import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.Manager;import javax.media.NoPlayerException;import javax.media.Player;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.Time;import javax.swing.JFrame;public class VideoPlayer extends JFrame implements ControllerListener {private int videoWidth = 0;private int videoHeight = 0;private int controlHeight = 30;private int insetWidth = 10;private int insetHeight = 30;private Player player;private Component visual; // 播放组件private Component control = null; // 控制组件public VideoPlayer() {super("视频播放器");setSize(320, 240);setVisible(true);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent we) {if (player != null) {player.close();}System.exit(0);}});}public void play() {URL url = null;try {// 准备一个要播放的视频文件的URLurl = new URL("file://F:/FFOutput/16.avi");// 通过调用Manager 的createPlayer方法来创建一个Player的对象// 这个对象是媒体播放的核心控制对象player = Manager.createPlayer(url);} catch (NoPlayerException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}// 对Player对象注册监听器,能在相关事件发生的时候执行相关的动作player.addControllerListener(this);// 让Player对象进行相关的资源分配player.realize();}// 监听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) {//根据视频的宽高设置frame的宽和高//Dimension size = visual.getPreferredSize();//videoWidth = size.width;//videoHeight = size.height;//设置固定大小videoWidth = 500;videoHeight = 400;add(visual);} else {videoWidth = 320;}// 取得Player中的视频播放控制条组件,并把该组件添加到Frame 窗口中if ((control = player.getControlPanelComponent()) != null) {controlHeight = control.getPreferredSize().height;add(control, BorderLayout.SOUTH);}// 设定Frame 窗口的大小,使得满足视频文件的默认大小setSize(videoWidth + insetWidth, videoHeight + controlHeight+ insetHeight);validate();// 启动视频播放组件开始播放player.start();} else if (ce instanceof EndOfMediaEvent) {// 当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放player.setMediaTime(new Time(0));player.start();}}public static void main(String[] args) {VideoPlayer vp = new VideoPlayer();vp.play();}}


原创粉丝点击