JMF是SUN推出的用来提供给Java开发者使用Java开发视频与音频播放程序的开发库,JMF的推出已经有几年的历史了,目前最新的版本为2.1.1e,这里我们来讲述使用Java的AWT组件来开发一个视频播放器,采用JMF作为视频的播放库,希望能够抛砖引玉,使得更多的人能够对JMF进行更加深入的研究,并贡献出自己的研究所得。
首先,您需要下载用于自身操作系统的JMF安装包,下载地址:http://java.sun.com/products/java-media/jmf/2.1.1/download.html,我们这里针对Windows操作系统进行JMF的开发。要注意的是,JMF针对不同平台的实现是有少许差别的,不同的平台对媒体文件格式的支持可能存在差异,具体的平台对媒体文件格式的支持细节,您可以直接查看:http://java.sun.com/products/java-media/jmf/2.1.1/formats.html。安装过程就不用多解释了,您可以直接运行安装文件,选择自己所希望的目录完成安装,我们这里不多做说明。
接下来,我们可以使用Eclipse新建一个普通的java应用程序,把JMF安装目录下的lib中的jmf.jar、mediaplayer.jar、sound.jar三个jar文件加入到项目的classpath(如果您对classpath不了解,可以在我的博客中找到关于classpath的详细解释的文章)中,到这里,编译和运行项目的基本配置都准备好了,下面可以编写代码了。
在项目中添加一个类JMFSample,代码和具体的解释如下:
packagecom.jmfsample2;
importjava.awt.BorderLayout;
importjava.awt.Component;
importjava.awt.Dimension;
importjava.awt.Frame;
importjava.awt.Panel;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.IOException;
importjava.net.MalformedURLException;
importjava.net.URL;
importjavax.media.ControllerEvent;
importjavax.media.ControllerListener;
importjavax.media.EndOfMediaEvent;
importjavax.media.Manager;
importjavax.media.MediaLocator;
importjavax.media.NoPlayerException;
importjavax.media.Player;
importjavax.media.PrefetchCompleteEvent;
importjavax.media.RealizeCompleteEvent;
importjavax.media.Time;
publicclassJMFSampleimplementsControllerListener{
publicstaticvoidmain(String[]args){
JMFSamplesp=newJMFSample();
sp.play();
}
privateFramef;
privatePlayerplayer;
privatePanelpanel;
privateComponentvisual;
privateComponentcontrol=null;
publicvoidplay(){
f=newFrame("JMFSample1");
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventwe){
if(player!=null){
player.close();
}
System.exit(0);
}
});
f.setSize(500,400);
f.setVisible(true);
URLurl=null;
try{
//准备一个要播放的视频文件的URL
url=newURL("file:/E:/c-d.avi");
}catch(MalformedURLExceptione){
e.printStackTrace();
}
try{
//通过调用Manager的createPlayer方法来创建一个Player的对象
//这个对象是媒体播放的核心控制对象
player=Manager.createPlayer(url);
}catch(NoPlayerExceptione1){
e1.printStackTrace();
}catch(IOExceptione1){
e1.printStackTrace();
}
//对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
player.addControllerListener(this);
//让player对象进行相关的资源分配
player.realize();
}
privateintvideoWidth=0;
privateintvideoHeight=0;
privateintcontrolHeight=30;
privateintinsetWidth=10;
privateintinsetHeight=30;
//监听player的相关事件
publicvoidcontrollerUpdate(ControllerEventce){
if(ceinstanceofRealizeCompleteEvent){
//player实例化完成后进行player播放前预处理
player.prefetch();
}elseif(ceinstanceofPrefetchCompleteEvent){
if(visual!=null)
return;
//取得player中的播放视频的组件,并得到视频窗口的大小
//然后把视频窗口的组件添加到Frame窗口中,
if((visual=player.getVisualComponent())!=null){
Dimensionsize=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();
}elseif(ceinstanceofEndOfMediaEvent){
//当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
player.setMediaTime(newTime(0));
player.start();
}
}
}
完成上述代码,直接编译运行就可以了,是不是您的视频播放器开始工作了?恭喜你,成功了!
分享到:
相关推荐
JMF(java media framework)帮助文档
JMF简介java media framework JMF简介java media framework JMF简介java media framework
基于java中JMF(JAVA Media Framework)的一款视频音频播放软件
个人整理的Java Media Framework API (JMF)的API,按Java6 API的风格整理
这些是我在学习JMF,也就是java多媒体时用过的资料,因为我觉得这方面的资料很缺少,就当我学习的时候,根本都找不到我想要的,只有英文的文档,这里是我的一些学习笔记,和一些别人发表过的文档,希望对大家有用吧...
Java Media Framework (JMF) 2.1.1e包,找了好久才找到,希望对您有用。
苦苦寻觅了好多天今天终于在网上找着JMF的源代码了,欣喜之余拿来这里与大家共享。(JMF源代码)
目前最新的JMF2.1.1e,java media framework全网只有这个下载分数最低,直接从官网下载的exe文件,解压后直接安装配置环境变量就可以使用了,而且本人为你们添加了MP3的插件,你们可以直接调用mp3解码器进行播放器的...
Java媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。本指南主要通过使用工作的例子提供一个JMF的一些主要的特征的概述。阅读完本指南后,你将会明白JMF体系结构中的主要播放...
JMF的最实用的开发手册,是一个高级程序员给我的,我就是看这个完成了我的在线实时教学系统的项目!
基于JMF-Java Media Framework API开发的对视屏的处理
MP3Java 带有JMF的Java中的MP3(Java Media Framework) Eclipse专案
针对Java Media Framework的一个入门级教程,通俗易懂,方便使用,来自ibm.com/developerWorks
JMF(Java Media Framework)基础教程
在这基础上,由于相关音频、视频,所以还要涉及到JAVA的多媒体技术的相关知识,即JMF (Java Media Framework)。利用JAVA的这个组件,我们可以方便的处理多媒体文件,并基于RTP协议进行实时传输。
This file includes basics of Java Media Framework
ava 媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。本指南主要通过使用工作的例子提供一个JMF的一些主 要的特征的概述。阅读完本指南后,你将会明白JMF体系结构中的主要播放...