📄 让java活起来jmf媒体框架—java大本营-java教程 java游戏 java电子书 j2me j2ee java源代码.htm
字号:
<BR> <BR> ●
Realizing:当调用realize()方法时,Player对象的状态从Unrealized转变为Realizing。在这种状态下,Player对象正在确定它需要占用哪些资源。
<BR> ●
Realized:在这种状态下Player对象已经确定了它需要哪些资源,并且也知道需要播放的多媒体的类型。
<BR> ●
Prefetching:当调用prefectch()方法时,Player对象的状态从Realized变为Prefetching。在该状态下的Player对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取(Prefetch)。
<BR> <BR> ●
Prefetched:当Player对象完成了预取操作后就到达了该状态。
<BR> <BR> ●
Started:当调用start()方法后,Player对象就进入了该状态并播放多媒体。
<BR> 4.处理器 <BR> 处理器对应的接口是Processor,它一种播放器。在JMF
API中,Processor接口继承了Player接口。
Processor对象除了支持支持Player对象支持的所有功能,还可以控制对于输入的多媒体数据流进行何种处理以及通过数据源向其他的Player对象或Processor对象输出数据。
<BR> 除了在播放器中提到了六种状态外,Processor
对象还包括两种新的状态,这两种状态是在Unrealized状态之后,但是在Realizing状态之前。
<BR> ●
Configuring:当调用configure()方法后,Processor对象进入该状态。在该状态下,Processor对象连接到数据源并获取输入数据的格式信息。
<BR> ●
Configured:当完成数据源连接,获得输入数据格式的信息后,Processor对象就处于Configured状态。<BR> 5.数据格式
<BR> Format对象中保存了多媒体的格式信息。该对象中本身没有记录多媒体编码的相关信息,但是它保存了编码的名称。Format的子类包括AudioFormat和VideoFormat类,ViedeoFomat又有六个子类:H261Format、H263Format、IndexedColorFormat、JPEGFormat、RGBFormat和YUVFormat类。
<BR> 6.管理器 <BR> JMF提供了下面四种管理器: <BR> ●
Manager:Manager相当于两个类之间的接口。例如当你需要播放一个DataSource对象,你可以通过使用Manager对象创建一个Player对象来播放它。使用Manager对象可以创建Player、Processor、DataSource和DataSink对象。
<BR> ● PackageManager:该管理器中保存了JMF类注册信息。 <BR> ●
CaptureDeviceManager:该管理器中保存了截取设备的注册信息。 <BR> ●
PlugInManager:该管理器中保存了JMF插件的注册信息。
创建一个Player对象<BR> 在JMF编程中,最常见的工作就是创建一个Player对象。你可以通过Manager类的createPlayer()方法创建Player对象。Manager对象使用多媒体的URL或MediaLocator对象来创建Player对象。当你获得了一个Player对象后,你可以通过调用getVisualComponent()方法得到Player对象的图像部件(Visual
Component,在图像部件上可以播放多媒体的图像)。然后将图像部件加入到应用程序或Applet的界面上。Player对象还包含一个控制面板,在上面可以控制媒体的播放、停止和暂停等。
<BR> Player类中的很多方法只有在Player对象处于Realized的状态下才会被调用。为了保证Player对象已经到达了该状态,你需要使用Manager的createRealizePlayer()方法来获得Player对象。但是对于start()方法来说,你可以在Player对象到达Prefetched状态之前调用它,它可以自动将Player的状态转换到Started状态。
<BR> 截取多媒体数据<BR> 多媒体数据的截取是JMF程序中另一个非常重要的功能。你可以按照下面的步骤截取数据:
<BR> <BR> ●
通过查询CaptureDevieceManager获得你希望使用的截取设备。
<BR> <BR> ● 获得设备对应的CaptureDeviceInfo对象。
<BR> <BR> ●
从CaptureDeviecInfo对象中获得MediaLocator对象,然后用它创建一个DataSource对象。
<BR> <BR> ●
使用DataSource对象创建Player对象或Processor对象。
<BR> <BR> ● 调用start()方法,开始截取多媒体数据。
<BR> <BR> 你可以使用CaptureDeviceManager对象获得系统中可用的视频和音频截取设备。通过调用getDeviceList()方法你可以获得设备的列表。每个设备都对应一个CaptrueDeviceInfo对象。也可以通过调用CaptureDevieceManager对象的getDevice()方法来获得特定的CaptureDeviceInfo对象。在使用设备截取多媒体数据前,还需要从CaptureDeviceInfo对象中获得设备对应的MediaLocator对象。然后你可以直接使用MediaLocator来构造Player或Processor的实例,也可以用MediaLocator构造一个DataSource对象,然后将DataSource对象送入Player或Processor对象中。最后调用start()方法来截取多媒体数据。
<BR> 一个JMF例子<BR> 当你使用JMF进行编程以前,你需要安装JMF。同时在硬件上也有一些要求。由于本文的代码是在Windows
2000下编写和测试,因此文章中提到的操作系统需要的软件都是与Windows有关的。虽然Java是跨平台的,但是JMF是个例外――并不是所有的平台上都实现了JMF。
<BR> <BR> 硬件和软件要求
<BR> <BR> 硬件方面你需要与SoundBlaster兼容的声卡,芯片最好使用奔腾III以上的芯片。内存最好不小于64MB。同时你需要安装下面的软件:
<BR> <BR> ● Windows95/98,Windows NT 4.0,
Windows2000或 WindowsXP。 <BR> <BR> ●
JDK1.1.6或以上的Windows版本。 <BR> <BR> ● JMF类和动态库
<BR> <BR> 在Windows下安装JMF2.1
<BR> <BR> 当下载了JMF2.1以后,运行jmf-2_1_1b-windows-i586.exe。该程序会将JMF2.1安装到你指定的目录下。当安装成功后,你需要确认一下安装程序正确设定了CLASSPATH和PATH环境变量。在CLASSPATH中需要包含jmf.jar和sound.jar;在PATH中需要包含JMF动态库的路径。
<BR> JMFRegistry<BR> 如果你希望使用视频和音频截取的设备,你需要确认安装了这些设备的驱动程序。除此之外,你还需要运行JMFRegistry应用程序。JMFRegistry可以向JMF注册新的数据源、媒体处理器、插件、视频和音频截取设备,然后你才能够在你的程序中使用它们。你只需要运行一次JMFRegistry就能注册系统中所有的视频和音频截取设备。
<BR> 当你运行了JMFRegistry后,会弹出图一所示的窗口:
<CENTER>共3页: 上一页 1 <A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.html">[2]</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_3.html">[3]</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.html">下一页</A>
</CENTER><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080203/5131.html">Java中实现增、删、改、查功能
</A>(02-03)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080202/5121.html">Windows
平台上长路径名文件的解决方法</A>(02-02)<BR></TD></TR>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080202/5119.html">将静态内容映射到servlet中(如html)
</A>(02-02)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080127/5102.html">Java中设置Jpanel的背景
</A>(01-27)<BR></TD></TR>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080123/5086.html">配置log4j,替代log4j.properties
(log4</A>(01-23)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080123/5085.html">Jakarta-Common-Chain的使用
</A>(01-23)<BR></TD></TR>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080123/5084.html">Eclipse中起动Weblogic
报错 java.lang</A>(01-23)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080121/5077.html">Hibernate
本地SQL查询的简单使用 </A>(01-21)<BR></TD></TR>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080121/5075.html">如何用hibernate
SQLQuery实现动态表 </A>(01-21)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080121/5069.html">JAVA中static的用法
</A>(01-21)<BR></TD></TR>
<TR>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080121/5068.html">JAVA
中URL链接中文参数乱码解决之道 </A>(01-21)<BR></TD>
<TD width="50%">·<A
href="http://www.javadby.com/shiyongjiqiao/20080120/5056.html">不规则数组的构建
</A>(01-20)<BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD style="BORDER-TOP: #cccccc 1px solid"
align=right bgColor=#ffffff height=36>
<DIV align=left><FONT
color=#ff0000><B>复制地址发给您的好友:</B> </FONT><INPUT
id=__furl title="由于本站使用分帧技术, 故浏览器地址栏显示的并非本页地址"
style="PADDING-RIGHT: 10px; FONT-SIZE: 11px; OVERFLOW: visible; COLOR: red; FONT-FAMILY: tahoma"
onclick="this.select();document.execCommand('copy');"
value=http://www.javadby.com name=Input> <FONT
color=#ff0000></FONT><INPUT title="由于本站使用分帧技术, 故浏览器地址栏显示的并非本页地址" onclick="document.getElementById('__furl').select();document.execCommand('Copy');" type=button value=" 复制 " name=button>
<SCRIPT language=javascript>document.getElementById('__furl').value=window.location.href;</SCRIPT>
<FONT color=#ff0000></FONT>[<A
href="http://www.javadby.com/plus/recommend.php?arcID=2984"
target=_blank>推荐文章</A>] <A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html#top">[返回顶部]</A>
<A onclick=window.print();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html#"></A><A
onclick=window.close();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html#">[关闭窗口]</A>
</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE height=0 cellSpacing=0 cellPadding=0 width=760
align=center bgColor=#9ec9f4 border=0>
<TBODY>
<TR>
<TD vAlign=top bgColor=#ffffff height=26>
<TABLE cellSpacing=0 cellPadding=0 width=758
align=center border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff colSpan=2 height=6></TD>
<TR>
<TD vAlign=top
bgColor=#eaf9ff></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD align=middle>版权所有 <A href="http://www.javadby.com/"
target=_blank>Java大本营</A> 1999-2007 转载请注明出处<BR>
<SCRIPT language=JavaScript
src="让JAVA活起来JMF媒体框架—java大本营-java教程 java游戏 java电子书 j2me j2ee java源代码.files/stat.htm"
charset=gb2312></SCRIPT>
</TD></TR></TBODY></TABLE>
<DIV></DIV></TR></TBODY></TABLE></TR></TBODY></TABLE></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -