JMF下载与安装

JMF,全名为Java Media Framework,它可以在java applet和application中使用音频,视频或者其他基于时间的多媒体。JMF所支持的多媒体格式如下:AIFF(.aiff),AVI(.avi),GSM(.gsm),HotMedia(.mvr),MID(.mid),MPEG-1(.mpg)(即常见的VCD文件),MPEG-2(.mp2)(即常见的DVD文件),QuickTime(.mov),Sun Audio(.au),Wave(.wav);JMF对RTSP(Real Time Streaming Protocol实时流控制协议)的支持:RTSP也是最近才加到JMF中的,它可以使得基于JMF的客户端通过RTSP与服务器交互,请求获取媒体的数据流。

JMF可以开发java 3D (游戏引擎),甚至视频聊天等。

JMF下载地址:java.sun.com/products/java-media/jmf/2.1.1/download.html

JMF安装方法:

1. 在linux或solaris下安装:

先到安装目录,然后执行% /bin/sh ./jmf-2_1_1e-solaris-sparc.bin

2 win下安装

直接执行该文件,即进入JMF安装向导,安装时应注意选择路径为jdk安装路径(C:\jdk1.6\),因为JMF要有JDK的支持。

我下载的是JMF2.1,从SUN下载JMF2.1以后,得到的是一个安装文件(windows系统下),运行jmf-2_1_1b-windows-i586.exe。因为下载的是个自解压的安装版本,里面那个setup.exe(在C:\Users\lenovo\AppData\Local\Temp文件夹中)再双击一下才开始实际安装。该程序会将JMF2.1安装到我的一个指定的目录下。

当安装成功后,你需要确认一下安装程序正确设定了CLASSPATH和PATH环境变量。在CLASSPATH中需要包含jmf.jar和sound.jar;在PATH中需要包含JMF动态库的路径。


[java]  view plain copy
  1. import java.awt.BorderLayout;  
  2. import java.awt.Component;  
  3. import java.awt.Dimension;  
  4. import java.awt.Frame;  
  5. import java.awt.Panel;  
  6. import java.awt.event.WindowAdapter;  
  7. import java.awt.event.WindowEvent;  
  8. import java.io.IOException;  
  9. import java.net.MalformedURLException;  
  10. import java.net.URL;  
  11.   
  12. import javax.media.ControllerEvent;  
  13. import javax.media.ControllerListener;  
  14. import javax.media.EndOfMediaEvent;  
  15. import javax.media.Manager;  
  16. import javax.media.MediaLocator;  
  17. import javax.media.NoPlayerException;  
  18. import javax.media.Player;  
  19. import javax.media.PrefetchCompleteEvent;  
  20. import javax.media.RealizeCompleteEvent;  
  21. import javax.media.Time;  
  22.   
  23. public class JMFSample implements ControllerListener {  
  24.     public static void main(String[] args) {  
  25.         JMFSample sp = new JMFSample();  
  26.         sp.play();  
  27.     }  
  28.      
  29.     private Frame f;  
  30.     private Player player;  
  31.     private Panel panel;  
  32.     private Component visual;  
  33.     private Component control = null;  
  34.      
  35.     public void play(){  
  36.         f = new Frame("JMF Sample1");  
  37.         f.addWindowListener(new WindowAdapter() {  
  38.             public void windowClosing(WindowEvent we) {  
  39.                 if(player != null) {  
  40.                     player.close();  
  41.                 }  
  42.                 System.exit(0);  
  43.             }  
  44.         });  
  45.         f.setSize(500,400);  
  46.   
  47.         f.setVisible(true);  
  48.         URL url = null;  
  49.         try {  
  50.             //准备一个要播放的视频文件的URL  
  51.             url = new URL("file:/E:/c-d.avi");  
  52.         } catch (MalformedURLException e) {  
  53.             e.printStackTrace();  
  54.         }         
  55.         try {  
  56.             //通过调用Manager的createPlayer方法来创建一个Player的对象  
  57.             //这个对象是媒体播放的核心控制对象  
  58.             player = Manager.createPlayer(url);  
  59.         } catch (NoPlayerException e1) {  
  60.             e1.printStackTrace();  
  61.         } catch (IOException e1) {  
  62.             e1.printStackTrace();  
  63.         }  
  64.   
  65.         //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作  
  66.         player.addControllerListener(this);  
  67.          
  68.         //让player对象进行相关的资源分配  
  69.         player.realize();  
  70.     }  
  71.      
  72.     private int videoWidth = 0;  
  73.     private int videoHeight = 0;  
  74.     private int controlHeight = 30;  
  75.     private int insetWidth = 10;  
  76.     private int insetHeight = 30;  
  77.      
  78.     //监听player的相关事件  
  79.     public void controllerUpdate(ControllerEvent ce) {  
  80.         if (ce instanceof RealizeCompleteEvent) {  
  81.             //player实例化完成后进行player播放前预处理  
  82.             player.prefetch();  
  83.         } else if (ce instanceof PrefetchCompleteEvent) {  
  84.             if (visual != null)  
  85.                 return;  
  86.   
  87.             //取得player中的播放视频的组件,并得到视频窗口的大小  
  88.             //然后把视频窗口的组件添加到Frame窗口中,  
  89.             if ((visual = player.getVisualComponent()) != null) {  
  90.                 Dimension size = visual.getPreferredSize();  
  91.                 videoWidth = size.width;  
  92.                 videoHeight = size.height;  
  93.                 f.add(visual);  
  94.             } else {  
  95.                 videoWidth = 320;  
  96.             }  
  97.              
  98.             //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中  
  99.             if ((control = player.getControlPanelComponent()) != null) {  
  100.                 controlHeight = control.getPreferredSize().height;  
  101.                 f.add(control, BorderLayout.SOUTH);  
  102.             }  
  103.              
  104.             //设定Frame窗口的大小,使得满足视频文件的默认大小  
  105.             f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);  
  106.             f.validate();  
  107.              
  108.             //启动视频播放组件开始播放  
  109.             player.start();  
  110.         } else if (ce instanceof EndOfMediaEvent) {  
  111.             //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放  
  112.             player.setMediaTime(new Time(0));  
  113.             player.start();  
  114.         }  
  115.     }  
  116.   
  117. }  
Java术语,意为Java媒体框架(JMF)。该核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。 JMF实际上是Java的一个类包。JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支 持,如M-JPEG、H.263、MP3、RTP/RTSP (实时传送协议和实时流转协议)、Macromedias Flash、IBM的HotMedia和Beatniks的Rich Media Format (RMF)等。JMF 2.1.1还支持广受欢迎的媒体类型,如Quicktime、Microsofts AVI和MPEG-1等。此外,JMF 2.1.1软件中包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。 Sun以四种不同的专用版本提供JMF 2.1.1技术,满足专业开发人员的各类需求,第一个是一个轻便型版本,它完全采用Java语言编写,适用于任何Java兼容系统。此外,开发人员还可选 择分别适用于Solaris、Windows或Linux等操作系统的性能最优化软件包,以提高性能和能力。 JMF 2.1.1软件也是Java Media系列软件的一部分。Java Media系列软件包括Java 3D、Java 2D、Java Sound和Java Advanced Imaging等API。采用各种Java Media API,软件开发商人员就能容易、快速地为他们已有的各种应用程序和客户端Java小程序增添丰富的媒体功能,如流式视频、3D图像和影像处理等。就是 说,各种Java Media API发挥了Java平台的固有优势,将"编写一次,到处运行"的能力扩展到了图像、影像和数字媒体等各种应用领域,从而大大缩减了开发时间和降低了开发 成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值