freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于jmf的視頻播放器設(shè)計和實現(xiàn)畢業(yè)論文(更新版)

2025-08-05 18:15上一頁面

下一頁面
  

【正文】 技大學(xué)出版社,20。在畢業(yè)設(shè)計期間,黎才茂老師的諄諄教誨督促時刻響徹在耳畔??偟膩碚f,JMF 是一個強(qiáng)大但是也有些復(fù)雜的框架,需要在以后的使用中進(jìn)一步學(xué)習(xí)和理解。} 系統(tǒng)操作演示點擊主菜單上的“File”菜單選擇“Open”,找到所要播放的示例視頻《遙望》。MenuItem itemStop = new MenuItem(Stop)。 //將 設(shè) 置 的 菜 單 依 次 加 入 程 序 的 菜 單 欄 中 去MenuItem itemOpen = new MenuItem(Open)。4.2.4 SetupMenu 構(gòu)造程序菜單SetupMenu 構(gòu)造程序的功能包括:* 創(chuàng)建“File”菜單 * 創(chuàng)建“Open”菜單項* 把 Media 對象注冊成為“Open”菜單項動作事件的監(jiān)聽器 * 把“Open”菜單項加入“File”菜單。我們把每個事件的處理程序叫作監(jiān)聽器,那么本程序就包括 4 個監(jiān)聽器:動作事件監(jiān)聽器,控制器件監(jiān)聽器,菜單項事件監(jiān)聽器,窗口事件監(jiān)聽器。}}public synchronized void controllerUpdate(ControllerEvent event) {if (event instanceof RealizeCompleteEvent) {Component p。}return jContentPane。MenuItem itemExit = new MenuItem(Exit)。()。setMenuBar(mb)。(0)。(this)。}}if (j == false) {(filename)。(filename)。(08 計算機(jī)MC 視頻播放器)。(str)。}return jSplitPane。private JSplitPane jSplitPane = null。import 。import 。要進(jìn)行正常播放,必須利用這個方法捕捉合適的事件并調(diào)用 Player 相應(yīng)的方法來實現(xiàn)。帶有 main:前綴的行表示 Media 的 main()方法。在正式編寫代碼之前,我們先用偽代碼的形式寫出這個程序的運(yùn)行過程,以后正式編寫代碼時只需把偽代碼翻譯成 Java 代碼即可?!癝top”菜單暫停播放當(dāng)前視頻。 主 窗 口 把 窗 口 標(biāo) 題 顯 示 為 “08 計算 機(jī) MC 視 頻 播 放 器 ”, 顯 示 “File”“Action” 菜 單 。 軟硬件環(huán)境分析視頻播放器可以在多種平臺上運(yùn)行。17 18 3 系統(tǒng)分析與設(shè)計 需求分析 功能分析首先我們來看看構(gòu)造這個視頻播放器要達(dá)到什么樣的目標(biāo),確定了目標(biāo)也就確定了代碼量和程序的復(fù)雜程度。 因為程序經(jīng)常需要得知一個特定的媒體流要運(yùn)行多久時間,所有的控制器(Controller)都實現(xiàn)了 Duration 接口。調(diào)用這個方法將會返回一個浮點型數(shù)據(jù)作為速率的值。(JMF 不會限制一個以前被預(yù)取完畢(Prefetched)或者開始(Started)的現(xiàn)處于已識別(Realized)狀態(tài)的Player 對象維護(hù)信息,而這些信息將使得 Player 對象在未來某個時刻會更快的開始。Deallocate 方法只能被處于已停止(Stopped)狀態(tài)的 Player 對象調(diào)用。然而你只能設(shè)置停止時間在處于已開始(Started)的 Player 對象上,如果停止時間當(dāng)前還沒有設(shè)定。14 你可以調(diào)用 setStopTime 方法來指明什么時候該停止 Player 對象。(2)當(dāng)指定的停止的時間到達(dá)時。Start 方法通知Player 對象盡可能快的開始表現(xiàn)媒體數(shù)據(jù)。因為有些資源,比如說聲卡,可能一次僅僅能被一個程序使用,有一個在預(yù)取完畢的 Player 對象生存時可能會阻止其它 Player 對象開始。你調(diào)用 realize 方法將 Player 對象進(jìn)入識別(Realizing)狀態(tài)并且開始識別過程。或者如果媒體數(shù)據(jù)在網(wǎng)絡(luò)設(shè)備上,Player 對象可能需要在下載數(shù)據(jù)之前建立一個網(wǎng)絡(luò)連接。當(dāng)你查找一幀時,Player 對象的媒體時間的值將會設(shè)置成那一幀的開始時間,同時一個 MediaTimeEvent 將會被拋出。Player 對象僅保證支持 的速率。如果你實現(xiàn)你自己的進(jìn)度條組件,當(dāng) CachingControlEvent 被拋出時,你應(yīng)該能監(jiān)聽這個事件并且更新進(jìn)度條。這個組件會自動的隨著下載進(jìn)度而更新。注意 getControls 方法不返回 Player 對象的 GainControl。如果你選擇定義一個定制的用戶接口,你可以實現(xiàn) GUI 組件并且調(diào)用正確的 Player 方法來響應(yīng)用戶的動作。9 (2)將它加到 applet 的外觀表示或者應(yīng)用程序的窗口中。Manager也提供了一個相同的 createRealizedProcessor 方法來創(chuàng)建一個已識別的Processor 對象。 Player 對象 Player 對象通過使用媒體 Manager 來直接創(chuàng)建一個 Player 對象,要顯示這個 Player對象,你獲取這個對象的組件并且將這些組件加到你的 applet 的外觀或者應(yīng)用程序的窗口中。對于每一個可以拋出MediaEvent 的對象,JMF 定義了相應(yīng)的監(jiān)聽者對象。 管 理 器通過使用管理器(Manager)這個對象,JMF 使得用戶實現(xiàn)的新的關(guān)鍵接口與已存在的類無縫對接。 JMF API 提 供 的 也 是 同 樣 的 模 型 。 JMF 技 術(shù) 提 供 了 先 進(jìn) 的 媒 體 處理 能 力 , 從 而 擴(kuò) 展 了 Java 平 臺 的 功 能 。Java Media 系列軟件包括 Java 3D、Java 2D、Java Sound 和 Java Advanced Imaging 等 API。這樣 Java 程序可以只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。當(dāng)前的視頻播放器有用各種不同的語言和技術(shù)實現(xiàn)的,使用 JAVA 語言編寫的視頻播放器有獨(dú)特的優(yōu)勢:Java 跨平臺,使得通過 JMF API 開發(fā)的多媒體應(yīng)用同其他 Java 應(yīng)用一樣,擁有“一次開發(fā),到處運(yùn)行”(write once, run anywhere)的特點。下載視頻文件要播放則必須使用視頻播放軟件,因此編制好的視頻播放軟件有非常實際的現(xiàn)實意義?,F(xiàn)在 Java 平臺已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。 JMF 軟件也是 Java Media 系列軟件的一部分。3 2 技術(shù)背景 JMF 結(jié)構(gòu) 定義 JMFJMF 實 際 上 是 Java 的 一 個 類 包 。 DV 帶 可 以 放 在 放 像 機(jī) 里 播 放 、 放 像 機(jī) 提 供 視 頻 信 號 給 電視 機(jī) , 提 供 音 頻 信 號 給 音 箱 , 這 樣 我 們 就 可 以 在 電 視 機(jī) 上 看 到 畫 面 , 從 音 箱里 聽 到 聲 音 。媒體流的持續(xù)時間(Duration)是媒體數(shù)據(jù)流的從開始到結(jié)束的經(jīng)歷的時間。MediaEvent 由許多特定類型的事件。許多 JMF 對象都可獲得控制器接口,包括 DataSource 對象,DataSink 對象和 JMF plugins。當(dāng)這個方法被調(diào)用時,它會阻塞直到這個 Player 對象被識別。要顯示 Player 對象的可視化組件: (1)通過調(diào)用 getVisualComponent 得到組件。(2)將返回的組件加到 applet 的外觀表示和應(yīng)用程序的窗口。(3)將返回的組件加到 applet 的外觀表示或者應(yīng)用程序的窗口上。CachingControl 提供了一個默認(rèn)的進(jìn)度條組件。當(dāng)進(jìn)度條需要更新時,Player 對象拋出一個 CachingControlEvent。當(dāng) setRate 被調(diào)用時,這個方法返回當(dāng)前的設(shè)置,即使它沒被改變。要設(shè)置幀的位置,你調(diào)用 FranePositioningControl 的 seek 方法。比如說,如果一 Player 對象之前從未開始過,則它需要分配緩存來存儲媒體數(shù)據(jù)。要得到更多的信息,請查閱選擇跟蹤處理選項。記住一個在預(yù)取完畢的 Player 對象與系統(tǒng)資源相關(guān)。一般你會通過調(diào)用 start 方法來開始表現(xiàn)一個媒體流。有四種情況媒體的表現(xiàn)將會停止:(1)當(dāng) stop 方法被調(diào)用時。如果你在一個處于停止(Stopeed)狀態(tài)的 Player 對象調(diào)用 stop 方法,唯一的效果是StopByRequestEvent 被拋出。你也可以在一個停止(Stopped)狀態(tài)的 Player 對象上調(diào)用 setStopTime方法。當(dāng) deallocate 方法調(diào)用時一個較好實現(xiàn)的 Player 對象盡量釋放多的內(nèi)部存儲。通過調(diào)用 deallocate 方法,當(dāng)釋放其它資源為系統(tǒng)整體來使用時,程序?qū)⒕S護(hù)一個指向 Player 對象的引用。要獲得 Player 對象當(dāng)前的速率,你調(diào)用 getRate 方法。當(dāng)一個 Player 正在運(yùn)行時,通過調(diào)用 mapToTimeBase 方法,你可以得到相對于一個特殊的媒體時間的時間基線的時間。如果媒體源沒有一個已定義的持續(xù)時間,比如說一個直播的廣播,getDuration 返回 DURATION_UNBOUNDED。 “Stop”,停止播放當(dāng)前視頻。 首 先 我 們 來 看 看 主 窗 口 的 設(shè) 計 。 “Play”菜單開始播放當(dāng)前視頻。 數(shù)據(jù)源 Player揚(yáng)聲器顯示器22 偽代碼設(shè)計前面我們了解了構(gòu)成視頻播放器 GUI 的各個部件,下面要開始“設(shè)想”一下這個程序的具體構(gòu)造。這個對話框是一個模式對話框 * 如果用戶沒有通過對話框選擇媒體文件 * 返回 * 保存用戶在對話框中選擇的目錄 * 如果以前已經(jīng)創(chuàng)建 JMF 播放器對象 * 關(guān)閉該對象 * 根據(jù)指定的目錄和名字,創(chuàng)建一個使用 file:協(xié)議的媒體定位器(MediaLocator)對象,再利用該對象創(chuàng)建一個 JMF 播放器對象 * 如果出現(xiàn)異常 * 顯示錯誤信息,然后返回 * 把主窗口的標(biāo)題設(shè)置為媒體文件的名字 * 把 Media 對象注冊為來自 JMF 播放器對象的控制器事件的監(jiān)聽器* 讓 JMF 播放器對象預(yù)先提取媒體內(nèi)容 * 返回 控制器監(jiān)聽器: 當(dāng)控制器被關(guān)閉: * 如果 JMF 播放器的視覺部件存在,從 Media 容器拆除視覺部件 * 如果 JMF 播放器的控制面板部件存在,從 Media 容器拆除控制面板部件 24 * 返回 當(dāng)預(yù)提取媒體內(nèi)容結(jié)束: * JMF 播放器對象開始播放媒體 * 返回 當(dāng)實例化(realize)完成: * 獲取 JMF 播放器對象的視覺部件 * 如果視覺部件存在,則把它加入到 Media 容器的中間 * 獲取 JMF 播放器對象的控制面板部件 * 如果控制面板部件存在,則把它加入到 Media 容器的南方 * 執(zhí)行 pack()操作* 返回 窗口監(jiān)聽器: windowClosing: * 調(diào)用 dispose 以執(zhí)行 windowClosed * 返回 windowClosed: * 如果已經(jīng)創(chuàng)建 JMF 播放器對象 * 關(guān)閉 JMF 播放器對象 * 結(jié)束程序 偽代碼的前面三行聲明了媒體播放器的類名稱、超類的名稱和 Media 類實現(xiàn)的監(jiān)聽器。ControllerUpdate 方法用于處理 JMF 傳出的關(guān)于播放器的事件。import 。import 。 // jve:declindex=0:private JPanel jContentPane = null。(getPlayPanel())。}filename = str。}public static void main(String[] args) {(new Runnable() {public void run() {JMF_MC thisClass = new JMF_MC()。filename = () + ()。break。}(new MediaLocator( + filename))。}if ((Exit)) {dispose()。MenuBar mb = new MenuBar()。(itemOpen)。(itemStop)。(getJSplitPane(), )。}if (control != null) {(control)。這部程序聲明下列事件的處理程序:動作事件,控制器件,菜單項事件,窗口事件。}}調(diào)用 dispose 以執(zhí)行 windowClosing。(actMenu)。()。37 (true)。在本項目中大量的運(yùn)用到 JMF 提供的功能,我也從項目中對 JMF 的結(jié)構(gòu)有了大致的了解,并且能較熟練的使用其中部分的 API。42 致 謝首先要對我的指導(dǎo)老師表示深
點擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1