📄 让java活起来jmf媒体框架3—java大本营-java教程 java游戏 java电子书 j2me j2ee java源代码.htm
字号:
.<BR> }<BR> 上面的程序运行后,audioDevices()中将包含所有的音频设备,videoDevices()中将保存所有的视频设备。其中cdi是CaptureDeviceInfo对象。然后将设备名称填入下拉列表中:
<BR> <BR> // 将音频设备显示在下拉列表中<BR> for (int
i=0; i<audioDevices.size(); i++)
{<BR> cdi = (CaptureDeviceInfo)
audioDevices.elementAt(i);<BR> audioDeviceCombo.addItem(cdi.getName());<BR> }<BR> //
将视频设备显示在下拉列表中<BR> for (int i=0;
i<videoDevices.size(); i++) {<BR> cdi =
(CaptureDeviceInfo)
videoDevices.elementAt(i);<BR> videoDeviceCombo.addItem(cdi.getName());<BR> }<BR> 然后程序显示出当前选中的设备支持的格式:<BR> displayAudioFormats();<BR> displayVideoFormats();<BR> 下一步需要获取用户选中的音频设备和视频设备以及它们支持的格式,相关的方法是JMF类中的getAudioDevice()、getVideoDevice()、getAudioFormat()和getVideoFormat()方法。然后将获取的对象分别保存到audioCDI,videoCDI,audioFormat和videoFormat中:
<BR> <BR> audioCDI =
cdDialog.getAudioDevice();<BR> if
(audioCDI!=null) {<BR> audioDeviceName =
audioCDI.getName();<BR> System.out.println("Audio
Device Name: " +
audioDeviceName);<BR> }<BR> videoCDI =
cdDialog.getVideoDevice();<BR> if
(videoCDI!=null) {<BR> videoDeviceName =
videoCDI.getName();<BR> System.out.println("Video
Device Name: " +
videoDeviceName);<BR> }<BR> //
获得选中的多媒体格式<BR> videoFormat =
cdDialog.getVideoFormat();<BR> audioFormat =
cdDialog.getAudioFormat();<BR> 3.截取视频和音频
<BR> 使用capture()方法可以截取音频和视频数据。但是在使用该方法前需要确定是否已经选中了视频和音频截取设备:
<BR> if (audioCDI==null &&
videoCDI==null)<BR>
registerDevices();<BR> 和play()方法类似,可以通过使用Manger类中的静态方法createPlayer()创建一个Player对象,该对象可以播放一个DataSource对象中的数据流。
<BR> <BR> Player createPlayer(MediaLocator
sourceLocator)<BR> 在例子中,我首先通过调用audioCDI和videoCDI的getLocator()方法来获得MediaLocator对象,然后利用Manager类的createPlayer()方法创建Player对象。最后将一个ControllerListener对象绑定到视频Player对象上并开始播放。
<BR> <BR> videoPlayer =
Manager.createPlayer(videoCDI.getLocator());<BR> audioPlayer
=
Manager.createPlayer(audioCDI.getLocator());<BR> videoPlayer.addControllerListener(this);<BR> videoPlayer.start();<BR> audioPlayer.start();<BR> 使用这种方法导致最后获得了两个Player对象。我们也可以使用Manager类中的createDataSource()方法从视频和音频CaptureDeviceInfo对象(audioCID和videoCDI)中获得视频和音频数据源(DataSource对象),然后调用createMergingDataSource()方法将两个数据源合并成一个数据源(ds):
<BR> <BR> DataSource[] dataSources = new
DataSource[2];<BR> dataSources[0]
=<BR> Manager.createDataSource(audioCDI.getLocator());<BR> dataSources[1]
=<BR> Manager.createDataSource(videoCDI.getLocator());<BR> DataSource
ds =
Manager.createMergingDataSource(dataSources);<BR> 然后可以使用ds作为createPlayer()方法的参数来获得一个Player对象dualPlayer。调用addControllerListener()就可以进行播放了。
<BR> <BR> dualPlayer =
Manager.createPlayer(ds);<BR> dualPlayer.addControllerListener(this);<BR> dualPlayer.start();<BR> 小结<BR> Java多媒体框架是一个很好的多媒体编程工具。在这篇文章中我只是简单介绍了JMF的一些基本功能。如果有兴趣的话可以仔细阅读一下Sun公司的Java网站上提供的JMStudio的例子。在JMStudio中不仅实现了简单的播放和视频/音频截取功能,还实现了从互联网下载和向互联网上传多媒体数据流的功能。而且它还包含了JMFRegistry的源代码,将相应的代码移植到你的应用程序中后,你就不需要在运行程序前运行JMFRegistry来向JMF注册设备了。
<BR> 作者简介:冯睿,2000年毕业于美国Northern
Illinois大学电气工程系,获硕士学位。随后在New
Monics软件公司工作了一年,其间参加了Java虚拟机的开发和优化工作。目前在国内一家GIS公司担任项目经理,主要从事应急指挥系统的交通GIS系统的开发 <BR>
<P></P>
<CENTER>共3页: <A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.html">上一页</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984.html">[1]</A>
<A
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_2.html">[2]</A>
3 下一页 </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_3.html#top">[返回顶部]</A>
<A onclick=window.print();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_3.html#"></A><A
onclick=window.close();
href="http://www.javadby.com/shiyongjiqiao/20071115/2984_3.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媒体框架3—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 + -