java多媒体编程

上传人:cl****1 文档编号:546132155 上传时间:2023-06-01 格式:DOC 页数:23 大小:96.50KB
返回 下载 相关 举报
java多媒体编程_第1页
第1页 / 共23页
java多媒体编程_第2页
第2页 / 共23页
java多媒体编程_第3页
第3页 / 共23页
java多媒体编程_第4页
第4页 / 共23页
java多媒体编程_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《java多媒体编程》由会员分享,可在线阅读,更多相关《java多媒体编程(23页珍藏版)》请在金锄头文库上搜索。

1、java 多媒体编程Java 媒体框架( JMF) 资料分类 :技术文摘Java 媒体框架 ( JMF)使你能够编写出功能强大的多媒体程序,却不用关心底层复杂的实现细节。JMF API 的使用相对比较简单,但是能够满足几乎所有多媒体编程的需求。在这篇文章中,我将向你介绍如何用很少的代码就编写出多媒体程序。Java 多媒体框架( JMF)中包含了许多用于处理多媒体的API 。它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。JMF目前的最新版本是2.1,Sun通过它向Java 中引

2、入处理多媒体的能力。下面是JMF所支持的功能的一个概述: 可以在Java Applet和应用程序中播放各种媒体文件,例如AU、 AVI、MIDI、 MPEG 、QuickTime 和 WAV 等文件。 可以播放从互联网上下载的媒体流。 可以利用麦克风和摄像机一类的设备截取音频和视频,并保存成多媒体文件。 处理多媒体文件,转换文件格式。 向互联网上传音频和视频数据流。 在互联网上广播音频和视频数据。JMF的结构为了更好地说明JMF 的结构,让我们用立体声音响做一个简单的比喻。 当你 CD 机播放 CD 唱片的时候, CD 唱片向系统提供音乐信号。这些数据是在录音棚中用麦克风和其他类似的设备记录下

3、来的。CD 播放机将音乐信号传送到系统的音箱上。在这个例子中,麦克风就是一个音频截取设备,CD 唱片是数据源,而音箱是输出设备。JMF 的结构和立体声音响系统非常相似,在后面的文章中,你会遇到下面的这些术语: 数据源( Data source) 截取设备(Capture Device ,包括视频和音频截取设备) 播放器( Player) 处理器(Processor) 数据格式( Format) 管理器( Manager) 下面让我们来看一看这些术语到底代表什么意思。1数据源就像 CD 中保存了歌曲一样,数据源中包含了媒体数据流。在 JMF 中, DataSource 对象就是数据源,它可以是一

4、个多媒体文件,也可以是从互联网上下载的数据流。对于DataSource 对象,一旦你确定了它的位置和类型,对象中就包含了多媒体的位置信息和能够播放该多媒体的软件信息。当创建了 DataSource 对象后,可以将它送入Player 对象中,而 Player 对象不需要关心 DataSource 中的多媒体是如何获得的,以及格式是什么。在某些情况下,你需要将多个数据源合并成一个数据源。例如当你在制作一段录像时,你需要将音频数据源和视频数据源合并在一起。JMF 支持数据源合并,在后面的例子中我们将提到这一点。2截取设备截取设备指的是可以截取到音频或视频数据的硬件,如麦克风、摄像机等。截取到的数据可

5、以被送入Player 对象中进行处理。3播放器在 JMF 中对应播放器的接口是Player。Player 对象将音频视频数据流作为输入,然后将数据流输出到音箱或屏幕上,就像 CD 播放机读取CD 唱片中的歌曲,然后将信号送到音箱上一样。 Player 对象有多种状态, JMF 中定义了 JMF 的六种状态,在正常情况下 Player 对象需要经历每个状态,然后才能播放多媒体。下面是对这些状态的说明。 Unrealized :在这种状态下, Player 对象已经被实例化,但是并不知道它需要播放的多媒体的任何信息。 Realizing :当调用 realize()方法时, Player 对象的状

6、态从 Unrealized 转变为 Realizing 。在这种状态下, Player 对象正在确定它需要占用哪些资源。 Realized:在这种状态下 Player 对象已经确定了它需要哪些资源,并且也知道需要播放的多媒体的类型。 Prefetching :当调用 prefectch()方法时, Player 对象的状态从 Realized 变为 Prefetching 。在该状态下的 Player 对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取 ( Prefetch)。 Prefetched:当 Player 对象完成了预取操作后就到达

7、了该状态。 Started:当调用 start()方法后, Player 对象就进入了该状态并播放多媒体。 4处理器处理器对应的接口是 Processor,它一种播放器。在 JMF API 中, Processor 接口继承了 Player 接口。 Processor 对象除了支持支持 Player 对象支持的所有功能,还可以控制对于输入的多媒体数据流进行何种处理以及通过数据源向其他的 Player 对象或 Processor 对象输出数据。除了在播放器中提到了六种状态外,Processor 对象还包括两种新的状态,这两种状态是在Unrealized 状态之后,但是在 Realizing 状态

8、之前。 Configuring :当调用 configure ()方法后, Processor 对象进入该状态。在该状态下, Processor 对象连接到数据源并获取输入数据的格式信息。 Configured :当完成数据源连接,获得输入数据格式的信息后, Processor 对象就处于 Configured 状态。 5数据格式Format 对象中保存了多媒体的格式信息。该对象中本身没有记录多媒体编码的相关信息,但是它保存了编码的名称。 Format 的子类包括 AudioFormat 和 VideoFormat 类, ViedeoFomat 又有六个子类: H261Format 、 H26

9、3Format 、IndexedColorFormat 、JPEGFormat、RGBFormat 和 YUVFormat类。6管理器JMF 提供了下面四种管理器: Manager: Manager 相当于两个类之间的接口。例如当你需要播放一个 DataSource 对象,你可以通过使用 Manager 对象创建一个 Player 对象来播放它。 使用 Manager 对象可以创建 Player、 Processor、 DataSource 和 DataSink 对象。 PackageManager:该管理器中保存了 JMF 类注册信息。 CaptureDeviceManager :该管理器中

10、保存了截取设备的注册信息。 PlugInManager :该管理器中保存了JMF 插件的注册信息。创建一个 Player 对象在 JMF 编程中,最常见的工作就是创建一个Player 对象。你可以通过 Manager 类的 createPlayer()方法创建 Player 对象。 Manager 对象使用多媒体的 URL 或 MediaLocator 对象来创建 Player 对象。当你获得了一个 Player 对象后,你可以通过调用 getVisualComponent ()方法得到 Player 对象的图像部件( Visual Component ,在图像部件上可以播放多媒体的图像)。然

11、后将图像部件加入到应用程序或Applet 的界面上。 Player 对象还包含一个控制面板,在上面可以控制媒体的播放、停止和暂停等。Player 类中的很多方法只有在Player 对象处于Realized的状态下才会被调用。为了保证Player 对象已经到达了该状态,你需要使用Manager 的 createRealizePlayer()方法来获得 Player 对象。但是对于start()方法来说, 你可以在 Player对象到达 Prefetched 状态之前调用它,它可以自动将Player的状态转换到Started 状态。截取多媒体数据多媒体数据的截取是 JMF 程序中另一个非常重要的功

12、能。你可以按照下面的步骤截取数据: 通过查询 CaptureDevieceManager 获得你希望使用的截取设备。 获得设备对应的CaptureDeviceInfo 对象。 从 CaptureDeviecInfo 对象中获得 MediaLocator 对象,然后用它创建一个 DataSource 对象。 使用 DataSource 对象创建Player 对象或 Processor 对象。 调用 start()方法,开始截取多媒体数据。你可以使用CaptureDeviceManager 对象获得系统中可用的视频和音频截取设备。通过调用getDeviceList ()方法你可以获得设备的列表。每

13、个设备都对应一个CaptrueDeviceInfo 对象。也可以通过调用 CaptureDevieceManager 对象的 getDevice ()方法来获得特定的 CaptureDeviceInfo 对象。在使用设备截取多媒体数据前,还需要从 CaptureDeviceInfo 对象中获得设备对应的MediaLocator对象。然后你可以直接使用MediaLocator来构造 Player 或 Processor 的实例,也可以用MediaLocator 构造一个 DataSource 对象,然后将DataSource 对象送入Player或 Processor 对象中。 最后调用 start()方法来截取多媒体数据。一个 JMF 例子当你使用 JMF 进行编程以前,你

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号