📄 让java活起来jmf媒体框架2—java大本营-java教程 java游戏 java电子书 j2me j2ee java源代码.htm
字号:
dualPlayer;<BR> 在Play()方法中,通过使用FileDialog获得媒体文件的路径和文件名,并保存在filename中。
<BR> <BR> try {<BR> FileDialog fd =
<BR> new FileDialog(this, "Select File",
FileDialog.LOAD);<BR> fd.show();<BR> String
filename = fd.getDirectory() +
fd.getFile();<BR> ...<BR> }<BR> catch
(Exception e)
{<BR> System.out.println(e.toString());<BR> }<BR> 然后你需要通过媒体管理器Manager间接创建一个Player对象。你可以使用Manager类的createPlayer()方法或者createProcessor()方法来获得一个Player对象或Processor对象。在play()方法中,我使用的是createPlayer()方法。
<BR> dualPlayer =
Manager.createPlayer<BR> (new
MediaLocator("file:///" +
filename));<BR> 有时你需要使用一个Player对象来控制多个其他的Player和Controller对象,我们把这个Player对象称为主对象,并把这些对象组成一个组。通过调用主对象中的start()、stop()、setMediaTime()等方法就可以激活组中所有成员的相应方法。主对象控制所有的状态变化和事件发布。然后使用addControllerListerner()方法来将一个ControllerListener对象绑定到Player对象上,Controller对象将向该ControllerListener对象发送事件消息。
<BR> dualPlayer.addControllerListener(this);<BR> 最后需要调用start()方法来启动Player对象。start()方法将Player对象的状态设置为Started。如果Player没有被实体化(Realize)或预取(Prefetch),start()方法会自动执行这些操作。
<BR> dualPlayer.start();<BR> 由于JMF类实现了ControllerLister接口,因此需要实现该接口中的controllerUpdate()方法,该方法在Controller对象产生一个事件时被调用。
<BR> <BR> public synchronized void
controllerUpdate(ControllerEvent event)
{<BR> if (event instanceof
RealizeCompleteEvent) {<BR> Component
comp;<BR> if ((comp =
dualPlayer.getVisualComponent()) !=
null)<BR> add ("Center", comp);<BR> if
((comp = dualPlayer.getControlPanelComponent())
!= null)<BR> add("South",
comp);<BR> validate();<BR> }<BR> }<BR> 当JMF类产生了一个RealizeCompleteEvent事件后,controllerUpdate()方法在界面上增加两个Component对象,一个用于播放媒体,一个用于放置控制按钮,例如播放、停止等。
<BR> 在运行程序的过程中,程序会产生下面的输出。 <BR> Starting
player
...javax.media.TransitionEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Unrealized,<BR> current=Realizing,<BR> target=Started]<BR> Open
log file:
C:\test\Java\JMF\JMF\jmf.log<BR> javax.media.DurationUpdateEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,duration=<BR> javax.media.Time@2a37a6<BR> javax.media.RealizeCompleteEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Realizing,<BR> current=Realized,<BR> target=Started]<BR> Adding
visual component<BR> Adding control
panel<BR> javax.media.TransitionEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Realized,<BR> current=Prefetching,<BR> target=Started]<BR> javax.media.PrefetchCompleteEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Prefetching,<BR> current=Prefetched,target=Started]<BR> javax.media.StartEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Prefetched,<BR> current=Started,<BR> target=Started,<BR> mediaTime=javax.media.Time@56a05e,timeBaseTime=<BR> javax.media.Time@3a8602]<BR> javax.media.EndOfMediaEvent<BR> [source=com.sun.media.content.video.mpeg.Handler@71bb78,<BR> previous=Started,<BR> current=Prefetched,<BR> target=Prefetched,<BR> mediaTime=javax.media.Time@1d332b]<BR> 前面提到,当调用start()方法的时候,Player会切换到Started状态。从上面列出的信息中可以看到Player对象的状态从Unrealized变成了Started。当EndOfMedia事件被激活时(这时Player对象完成了媒体文件的播放),状态从Started变成了Prefetched。图二显示了程序正在播放多媒体文件时的情况。
<BR> <IMG alt=""
src="让JAVA活起来JMF媒体框架2—java大本营-java教程 java游戏 java电子书 j2me j2ee java源代码.files/2256101.jpg">
<BR> 图二 程序正在播放媒体文件<BR> 2.注册音频和视频截取设备
<BR> 在例子中,注册音频和视频截取设备的方法只在程序的内部注册这些设备,在程序外则不起作用。该方法的作用是当用户的计算机上存在多和音频和视频截取设备时,告诉程序因该使用哪个设备和这些设备支持的音频和视频格式。因此在进行截取处理之前需要获得设备的配置信息。在例子中,当在Configure菜单上按下Capture
Device命令后,会弹出CaptureDeviceDialog对话框。如果在截取音频或视频前没有设定设备的配置,也会弹出该对话框。图三显示了该对话框。
<CENTER>共3页: <A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html">上一页</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html">[1]</A>
2 <A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_3.html">[3]</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_3.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_2.html#top">[返回顶部]</A>
<A onclick=window.print();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.html#"></A><A
onclick=window.close();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.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媒体框架2—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 + -