没有合适的资源?快使用搜索试试~ 我知道了~
首页Java_Media_Framework_基础教程
Java_Media_Framework_基础教程
3星 · 超过75%的资源 需积分: 2 29 下载量 138 浏览量
更新于2023-03-16
评论
收藏 67KB DOC 举报
ava 媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。本指南主要通过使用工作的例子提供一个JMF的一些主 要的特征的概述。阅读完本指南后,你将会明白JMF体系结构中的主要播放功能。你同样能正确的使用JMF,使用现存的例子和可为更多特殊功能扩展的源代 码。
资源详情
资源评论
资源推荐
Java 媒体架构基础
第一节. 关于此指南
此指南包含的内容?
Java 媒体架构(JMF)是一个令人激动的通用的 API,它允许 Java 开发者用许多不同的方法处理媒体。本指南主要通
过使用工作的例子提供一个 JMF 的一些主 要的特征的概述。阅读完本指南后,你将会明白 JMF 体系结构中的主要播
放功能。你同样能正确的使用 JMF,使用现存的例子和可为更多特殊功能扩展的源代 码。
本指南包含着以下主题:
· 下载和安装 JMF
· 主要的 JMF 类以及它们在 JMF 体系结构中的应用
· 播放本地的媒体文件
· 为媒体的存取和操作制作以和图形用户界面(GUI)
· 通过网络传播媒体
· 通过网络接收媒体
几乎所有的媒体类型的操作和处理都可以通过 JMF 来实现。全面的讨论 JMF 所提供的所有特征已经超过了本指南的
范围,我们将使用三个简单的媒体应用程序来学习此框架的构建模块。通过这个方法,本指南将为你未来学习和实施
更多特殊的应用提供准备。
我应该使用此指南吗?
本指南会带你学习使用 JMF 工作的基础。为完成这些,我们会创建三个的独立工作的例程序。每个例子都会建立前
一个例子的基础上,显示 JMF 功能性的不同方面。
在 本指南中的例子假定你曾经使用过并且已经熟悉了 Java 程序语言。除了 Java 核心和 JMF 的类之外,我们会使用
一些 Java AWT 和 Swing 类(用于创建 GUI),也会有一些 Java 网络类(用于在网络中传输媒体)。对 GUI 和网络类一
些熟悉有助于你更快的明白观点和这里的 例子,但并非是阅读本指南必须的。
我们将学习的例程序如下
· 一个简单的音频播放器(JMF 的 HelloWorld 应用):这个字符界面的播放器通过在命令行中简单的输入媒体文件的
名字就可以播放大多数的音频类型。此音频播放器的演示大体上显示了 JMF 的特有的类。
· 一个图形界面的媒体播放器:我们将使用 JMF 内置的接口组件来建立图形界面,所以在此练习中必须有一些图形界
面的编程经验。这个媒体阅览器演示使用了一些 Java AWT 和 Swing 类来为用户显示图形组件。
· 一个媒体广播应用:此应用程序允许一个本地媒体文件通过网络传播。此程序能灵活的使媒体只传输到指定的网络
节点,或者传输到一个子网络中的所有节点。此演示使用了一些 Java 的网络 APIs 来在网络中传输媒体。
作为第三个练习的一部分,我们将修改图形界面的播放器,让其能接收并且播放媒体。
跳至 23 页观看 Resources,文章,指南,和其他参考书目的列表,这会帮助你学习到更到关于此指南包括的主题。
安装需求
要运行此指南中的例程序,你需要如下的工具和组件:
·""Java 2 平台,标准版,编译和运行演示程序
1
·""Java 媒体框架,版本 2.1.1a 或者更高
· 一块已经安装并且配置号的适当的声卡
· 一台或者多台测试机器
· 演示的源代码文件在 mediaplayer.jar 中
最后的一个演示应用显示了 JMF 在网络中的应用。如果需要,此演示能运行在一个独立的机器上,使用此机器即是
传输方也是接收方。可是要观察到在网络中使用 JMF 的所有功能,你仍然需要至少两台联网的机器。
在 23 页中的 Resources 可下载 Java 2 平台,完整的源代码文件,以及其他一些完成本指南所需要的工具。
下载安装文件
将 JMF 安装到你的计算机中的第一步是在 JMF 的主页中下载安装文件,它同样包括了 JMF 源代码和 API 文档的链接。
23 页的 Resources 中有下载 JMF 的链接。
目 前,JMF 有 Windows, Solaris, Linux 等版本,以及可运行在任何装有虚拟机的计算机上一个纯 Java 版本。为了
增加性能,你需要下载一个与你操作系统所适应的版本。任何在一个操作系 统 JMF 版本下书写和编译的代码都可以
方便的移植到另外的操作系统上。例如,如果你下载了一个 Solaris 版本的 JMF 并且编译了一个类,这些类就可以
在 Linux 上使用,不会有任何问题。
作为选择,你可以选择下载纯 Java 版本,或者跨平台版本的 JMF。这些版本没有使用操作系统特有的库文件。如果
没有合适的 JMF 版本适合的操作系统,那么跨平台版本就是一个不错的选择。
安装 JMF
下载完 JMF 安装程序后,双击安装程序的图标。
大部分安装程序都会有个选项,安装本地库到系统目录中;例如,Windows 版本安装程序会有一个选项“Move
DLLs to Windows/System directory.”。最好将此选项选中,因为它能确保这些操作系统的库文件能正确的安装
在安装的过程中,你还需要选择项目来更新系统的 CLASSPATH 和 PATH 变量。如果这些选项被关闭,那么在你编
译和运行本指南的例程序的时候就需要在 classpath 中引入 JMF 的 jar 文件。
第二节. 一个简单的音频播放器
浏览
在本节中,我们将进行创建一个简单的音频播放器的第一个练习。本例将介绍 Manager 类和 Player 接口,中两个
都是建立大多数基于 JMF 应用的重要部分。
本例的功能目标是在字符界面下播放本地的音频文件。我们将学习此源代码,并了解每一行所做的任务。完成本节后,
你将会有一个基于 JMF 的可播放包括 MP3, WAV, AU 等多种音频文件的演示程序。
在本练习后的源代码分类种可查询文件 SimpleAudioPlayer.java。
引入必要的类
SimpleAudioPlayer 类中包括了一些调用,在其前几行中需要引入所有必要的类:
import javax.media.*;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLException;
The javax.media 包是由 JMF 定义的多个包之一。javax.media 是一个核心包,包括了定义 Manager 类和
Player 接口等。本节中,我们主要学习 Manager 类和 Player 接口,其余的 javax.media 类放在后面的章节中。
除了引入 javax.media 声明外,以上的代码片断引入了一些创建媒体播放器的输入的声明。
2
Player 接口
在下面的代码片断中,创建一个公共类 SimpleAudioPlayer 并举例定义一个 Player 变量:
public class SimpleAudioPlayer {
private Player audioPlayer = null;
术 语 Player 听起来由点熟悉,因为它是建立在我们公用的音频或者视频播放器的基础上的。事实上,这个接口的例
子就像是当作它们的真实的副本。 Players 揭示了一个实体上的媒体播放器(如立体音箱系统或者 VCR)涉及到功
能上的方法。例如,一个 JMF 媒体播放器可以开始和结束一个媒体流。在 本节种,我们将使用 Player 的开始和结束
功能。
在一个文件上创建一个 Player
使用 JMF 获得一个特定媒体文件的 Player 实例非常简单。Manager 类在 JMF 中如同一个工厂制作许多的特殊接口
类型,包括 Player 接口。因此,Manager 类的责任就是创建 Player 实例,如下例:
public SimpleAudioPlayer(URL url) throws IOException,
NoPlayerException,
CannotRealizeException {
audioPlayer = Manager.createRealizedPlayer(url);
}
public SimpleAudioPlayer(File >le) throws IOException,
NoPlayerException,
CannotRealizeException {
this(>le.toURL());
}
如果你看完本节的代码,你可以注意到 Manager 类包含了创建一个 Player 实例的其他方法。我们会研究其中的一
些,如在后面的章节中的 DataSource 或者 MediaLocator 的实例化。
Player 的状态
JMF 定义了大量的一个 Player 实例可能存在的不同状态。如下:
· Prefetched
· Prefetching
· Realized
· Realizing
· Started
· Unrealized
使用这些状态
因 为使用媒体常常是资源非常密集的,由 JMF 对象揭示的许多方法都是不闭塞的,允许一系列事件监听的状态改变
的异步通知。例如,一个 Player 在它可以启 动之前,必须经过 Prefetched 和 Realized 状态。由于这些状态的改
变都需要一些时间来完成,JMF 媒体应用可以分配一个线程来初始化创建 Player 实例,然后再继续其他的操作。当
Player 准备就绪的时候,它会通知应用程序其状态已经改变。
在一个如同我们的这样简单的 程序中,多功能性的类型并不是很重要。处于这个原因,Manager 类也提供了一些创
建 Realized player 的有用方法。调用一个 createRealizedPlayer()方法来阻塞调用线程,直到 player 达到
3
剩余12页未读,继续阅读
昊日天
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1