JAVA
课程小论文
------JMF技术
:桂俊飞:0804012021班级:计本2班
JMF是
Java媒体框架(JMF)。实际上它是Java的一个类包。JMF2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支持,如M-JPEG、H.263、MP3、RTP/RTSP(实时传送协议和实时流转协议)、MacromediasFlash、的HotMedia和Beatniks的RichMediaIBMFormat(RMF)等。JMF2.1.1还支持广受欢迎的媒体类型,如Quicktime、MicrosoftsAVI和MPEG-1等。此外,JMF2.1.1
软件中包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。Sun以四种不同的专用版本提供JMF2.1.1技术,满足专业开发人员的各类需求,第一个是一个轻便型版本,它完全采用Java语言编写,适用于任何Java兼容
系统。此外,开发人员还可选择分别适用于Solaris、Windows或Linux等操作系统的性能最优化软件包,以提高性能和能力。JMF2.1.1软件也是JavaMedia系列软件的一部分。JavaMedia系列软件包括Java3D、Java2D、JavaSound和JavaAdvancedImaging等API。采用各种JavaMediaAPI,软件开发商人员就能容易、快速地为他们已有的各种应用
程序和客户端Java小程序增添丰富的媒体功能,如流式视频、3D图像和影像处理等。就是说,各种JavaMediaAPI发挥了Java平台的固有优势,将"编写一次,到处运行"的能力扩展到了图像、影像和数字媒体等各种应用领域,从而大大缩减了开发时间和降低了开发成本。
一.简介
1.1JMF体系结构简介
在开发JMF应用程序之前要完全理解JMF的体系架构、接口和类。就拿我们的家用摄像机系统作个例子。首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。DV带可以放在放像机里播放、放像机提供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱里听到声音。JMFAPI提供的也是同样的模型。JMF提供的模型可大致分为七类*数据源(Datasource)*截取设备(CaptureDevice,包括视频和音频截取设备)*播放器(Player)*处理器(Processor)*数据池(DataSink)*数据格式(Format)*管理器(Manager)
1.2如何应用JMF捕获媒体数据
可以应用JMF从摄像头和麦克风中采集数据,采集后的数据可以被处理、保存、渲染为以后应用。捕获媒体数据需要做以下
工作。1.定位所需要用的捕获设备,可以通过
查询CaptureDeviceManager来定位。2.获取这个捕获设备的信息CaptureDeviceInfo对象。3.从CaptureDeviceInfo对象中获取捕获设备的位置Medialocator。4.利用MediaLocator创建DataSource。5.使用DataSource创建Player或是Processor。6.然后启动Player就开始了媒体的捕获。如果只是想观看捕获的内容,只需要使用捕获数据源创建播放器Player即可。如果想把捕获的数据发送到
网络或者保存起来,就需要创建处理器Processor。可以从CaptureDeviceManager中获取捕获设备的信息。CaptureDeviceManager是可在JMF中使用的全部捕获设备的
注册中心。可以通过调用CaptureDeviceManager的getDeviceList方法获取可用的捕获设备
列表。每个捕获设备都由CaptureDeviceInfo对象代表,要获取一个特定的设备只需要调用CaptureDeviceManager的getDevice方法。从特定的设备捕获媒体数据,需要从它的CaptureDeviceInfo对象中获取这个设备的位置信息MediaLocator。可以用MediaLocator直接构建一个Player或者Processor。还可以用MediaLocator构建一个DataSource作为Player的输入。Play开始的播放的时候,当就开始捕获过程。一个捕获设备通常有一系列属性可以进行配置。通常控制分为2种,一种是端口控制PortControl,另一种是监视MonitorControl。可以通过调用捕获DataSource的getControl方法,来获取这两种控制对象。和其他的控制对象一样,对于PortControl或者MonitorControl都可以通过调用getControlCompent方法来得到它们的可视化组件。这些组件可以添加到Applet中或者应用程序中,这样用户可以和这些控制对象交互。