资源描述:
《浅谈jmf及其应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本栏目责任编辑:唐一东多媒体技术及其应用浅谈JMF及其应用董黄伟,张晓博(河南大学计算机与信息工程学院,河南开封475004)摘要:JMF(JavaMediaFramework)可以在javaapplet和application中使用音频,视频或者其他基于时间的多媒体。这个J2SE的可选包扩展了java2平台,利用它可以捕获帧,顺序播放,回放多种媒体格式,并对之编码。它为多媒体的开发者提供了一个强大的工具包。本文介绍了JMF的基本思想和框架,并对其主要的Player类,Processor类的用法和功能进行了详细阐述和举例。关键词:JMF;JAVA;多
2、媒体;跨平台中图分类号:TP37文献标识码:A文章编号:1009-3044(2008)10-20145-03OnJMFandItsApplicationDONGHuang-wei,ZHANGXiao-bo(SchoolofComputerandInformationEngineering,HenanUniversity,Kaifeng475004,China)Abstract:JMF(JavaMediaFramework)canjavaappletapplicationandtheuseofaudio,videoorothertime-basedmu
3、ltimedia.J2SEthisoptionalpackageextendsthejava2platform,itcancaptureframesoftheorderplayerstoplaybackavarietyofmediaformats,andthecod-ing.Itmultimediadeveloperswithapowerfultoolkit.ThispaperintroducesthebasicideasandJMFframework,anditsmajorPlayercate-gory,Processortypeandfuncti
4、onoftheuseofadetailedelaborationandexamples.Keywords:JMF;JAVA;multimedia;cross-platform1引言在面向对象编程方法大行其道的今天,开发者可以快速高效地利用各种现成的组件(类库)开发出各种功能强大的应用程序。本文介绍的JavaMediaFramework(JMF)就是由SUN公司开发的一种基于JAVA平台的多媒体应用程序接口,它支持目前大多数的媒体格式,如AIFF,AU,AVI,GSM,MID,MPEG,QuickTime,RMF,MP3和WAV.并且充分发挥了JAVA
5、语言的面向对向和跨平台的特性,实现了一次编写,所有平台通用,其结构分明,易于使用,非常适合初学者。2JMF思想及框架在面向对象编程方法里,我们要把现实中的客观事物抽象成各种各样的“类”,并用程序语言代码表示出来。我们利用JMF主要是来处理一些音频,视频或多媒体数据(既有音媒,又有视频),这些东西都有一个共同的特征——时间轴,我们可以控制一首歌曲的播放速度,可以让一个视频片段逆序播放,其实都是对它们的“时间”进行操作(压缩时间,或者让时间倒流),因此在JMF中,我们把这类time-base数据抽像成一个Clock.之前我们说过,我们可以处理、存储、捕获
6、、播放媒体数据,这些功能在JMF中都由一些特定的类来实现,比如说压缩或解码一段音频,我们可以用Processor类,在存储一段视频,可以用DataSink类,要播放媒体数据时,可以用Player类,这些类都是Clock类的子类。到这里,我想大家已经对JMF的框架有些模糊的认识了,它深刻地抽象了媒体数据以及各种处理活动,要想实现某种功能,只要找到合适的类和方法就行了。总的来说,JMF大致有以下几大功能:处理基于时间流的媒体,捕获和存储媒体数据,在回放媒体数据的同时控制处理类型,执行自定义流媒体处理操作,利用RTP协议实现媒体数据在网络上的同步传输,高级
7、开发者还可以为JMF开发自定义的插件来扩展JMF的功能。接下来我们逐步为大家介绍JMF。3如何播放媒体数据3.1Player接口我们先看一下Player接口的继承关系,如图1所示。Player主要用来播放一段媒体数据,它提供一系列的方法和机制来让使用者实现控制媒体的播放速度,起使位置,终止位置,暂停,关闭的动作。另外,一个Player还提供有一些现成的可视化组件(这些组件可以通过getControlPanelCompone-ment()方法获得,但不保证每个Player的此方法返回值不为空),利用这些可视化组件可以方便可控制Player的快进,暂停,
8、停止等行为。3.2Player的生命期图1JMF主要类关系图由Player的继承关系可以知道,一个Playe