?? 讓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對象正在為播放多媒體做一些準備工作,其中包括加載多媒體數據,獲得需要獨占的資源等。這個過程被稱為預?。≒refetch)。
<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 + -