Java媒体架构基础

c#小王子 c#小王子 2022-01-27 541 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 DLLsto 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 file) throws IOException,
NoPlayerException,
CannotRealizeException {
this(file.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达到Realized状态。为了调 用一个无阻塞的创建 player 的方法,我们在 Manager 类中使用了一个 createPlayer()方法。


下面的一行代码中创建了一个我们需要在例 程序中使用的


-3-Realized player:
audioPlayer = Manager.createRealizedPlayer(url);


启动和停止 Player


设定一个 Player 实例的启动或是停止就如同调用 Player 的一个简单的认证方法,如下所示:


public void play() {
audioPlayer.start();
}
public void stop() {
audioPlayer.stop();
audioPlayer.close();
}


调用 SimpleAudioPlayer 类中的 play()方法来实现调用 Player 实例的 start()方法。调用此方法后,你能听到本地的喇叭的声音文件。同样的,stop()方法使 player 停止并且关闭掉 Player 对象。对 于读取和或者播放本地媒体文件来说,关闭 Player 实例释放所有资源是一个有用的方法。因为这是一个简单的例子,关闭 Player 是终止一个会话可接受 的方法。但是在实际的应用中,你需要小心的确认在除掉 Player 之前必须要关闭掉。一但你已经关闭掉 player,在再次播放一个媒体之前你必须要创建 一个新的 Player 实例(等待它的状态改变)。


建立一个 SimpleAudioPlayer

最后,这个媒体播放应用程序要包含一个可以从命令提示行中输入命令而调用的 main()方法。在此 main()方法中,我们将调用创建

SimpleAudioPlayer 的方法:

File audioFile = new File(args[0]);
SimpleAudioPlayer player = new SimpleAudioPlayer(audioFile);


在播放音频文件之前的唯一的一些事情就是调用已经创建的音频 player 的方法 play(),如下所示:

player.play();


要停止和清除掉音频 player,在 main()方法中也应该有如下调用:


player.stop();


编译和运行 SimpleAudioPlayer

通过在命令提示行输入 javac SimpleAudioPlayer.java 来编译例程序。所创建的文件 SimpleAudioPlayer.class在当前工作目录中。


然后在命令提示行中键入如下命令来运行例程序:

java SimpleAudioPlayer audioFile


将 audioFile 替换成你本地机器上的音频文件。所有的相对文件名都试相对于当前的工作目录。你会看到一些当前正在播放文件的标志信息。要终止播放,按下回车键。


百度网盘链接:https://pan.baidu.com/s/1vwf6aiosBC4y099ui_ty8w

提取码:ey2t


相关文章


使用-JFreeChart来创建基于web的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

FlashFXP绿色版网盘下载,附激活教程 1778

FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具

Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1564

firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ

navicat for mysql中文绿色版网盘下载 1623

Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq

火车头采集器(旗舰版)绿色版网盘下载 1706

火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA

Photoshop(CS-2015-2023)绿色中文版软件下载 1822

安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之