?? 讓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 + -