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

正文內(nèi)容

音頻播放器軟件的設(shè)計(jì)與實(shí)現(xiàn)_畢業(yè)論文(編輯修改稿)

2024-10-01 03:24 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 AU) 通過 Java Sound 的服務(wù)供應(yīng)商接口 ( SPI) 可以進(jìn)行擴(kuò)展 JMF: 添加對(duì)音頻、視頻和其它基于時(shí)間的數(shù)據(jù)的支持 提供多種媒體格式的同步和控制功能 當(dāng)前沒有與任何 JDK 一起提供 本身支持許多音頻格式 ( AIFF、 WAV等 ) 以及 MPEG 和其它格式 包含可擴(kuò)展的編碼器/解碼器媒體支持 第 2 章 關(guān)于 JMF 技術(shù) 4 JMF 常用類 JMF 的常用類包括以下幾個(gè): ● 數(shù)據(jù)源( DataSource) ● 媒體定位器( MediaLocator) ● 播放器( Player) ● 處理器( Processor) ● 數(shù)據(jù)池( DataSink) ● 數(shù)據(jù)格式( Format) ● 管理器( Manager) 數(shù)據(jù)源( DataSource) 在 JMF 中, DataSource 對(duì)象就是數(shù)據(jù)源,它可以是從采集設(shè)備獲得的數(shù)據(jù),也可以是一個(gè)多媒體文件,也可以是從互聯(lián)網(wǎng)上下載的數(shù)據(jù)流。對(duì)于 DataSource對(duì)象,一旦你確定了它的位置和類型,對(duì)象中就包含了多媒體的位置信息和能夠播放該多媒體的軟件信息。當(dāng)創(chuàng)建了 DataSource 對(duì)象后,可以將它送入 Player對(duì)象中,而 Player 對(duì)象不需要關(guān)心 DataSource 中的多媒體是如何獲得的,以及格式是什么 。 媒體定位器( MediaLocator) DataSource 通常用兩種方式來定義,媒體定位器( MediaLocator)或 URL( Universal Resource Locator)。 MediaLocator 類似于 URL,并 且可以由 URL 來構(gòu)造,即使在沒有安裝相應(yīng)的協(xié)議處理機(jī)制的情況下,也能構(gòu)造 MediaLocator(在 Java,只有在系統(tǒng)上安裝了 URL 協(xié)議的處理機(jī)制的情況下,才能構(gòu)造一個(gè)URL)。 MediaLocator 用來定位采集設(shè)備、本機(jī)的媒體文件、網(wǎng)絡(luò)上的媒體文件以及 網(wǎng)絡(luò) RTP 流。 播放器( Player) 第 2 章 關(guān)于 JMF 技術(shù) 5 如 圖 21 所示, 播放器( Player) 對(duì)象將音頻、視頻數(shù)據(jù)流作為輸入,然后將數(shù)據(jù)流輸出到音箱或屏幕上,就像播放器讀取 DV 帶中的數(shù)據(jù),然后將音頻信號(hào)送到音箱上,視頻數(shù)據(jù)送到屏幕上一樣。 圖 21 JMF 播放器( Player)模型 Player 對(duì)象有多種狀態(tài), JMF 中定義了 Player 有六種狀態(tài),如圖 22 所示。在正常情況下 Player 對(duì)象需要經(jīng)歷每個(gè)狀態(tài),然后才能播放多媒體。下面是對(duì)這些狀態(tài)的說明。 圖 22 播放器的狀態(tài)轉(zhuǎn)換圖 ● Unrealized:在這種狀態(tài)下, Player 對(duì)象已經(jīng)被實(shí)例化,但是并不知道它需要播放的多媒體的任何信息。 ● Realizing:當(dāng)調(diào)用 realize( )方法時(shí), Player 對(duì)象的狀態(tài)從 Unrealized 轉(zhuǎn)變?yōu)?Realizing。在這種狀態(tài)下, Player 對(duì)象正在確定它需要占用哪些資源。 ● Realized:在這種狀態(tài)下 Player 對(duì)象已經(jīng)確定了它需要哪些資源,并且也知道需要播放的多媒體的類型。 ● Prefetching:當(dāng)調(diào)用 prefetch( )方法時(shí), Player 對(duì)象的狀態(tài)從 Realized 變?yōu)?Prefetching。在該狀態(tài)下的 Player 對(duì)象正在為播放多媒體做一些準(zhǔn)備工作,其中包括加載多媒體數(shù)據(jù),獲得需要獨(dú)占的資源等。這個(gè)過程被稱為預(yù)取第 2 章 關(guān)于 JMF 技術(shù) 6 ( Prefetch)。 ● Prefetched:當(dāng) Player 對(duì)象完成了預(yù)取操作后就到達(dá)了該狀態(tài)。 ● Started:當(dāng)調(diào)用 start( )方法后, Player 對(duì)象就進(jìn)入了該狀態(tài)并播放多媒體。 當(dāng)一個(gè)播放器從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)時(shí),它將產(chǎn)生 TransitionEvent事件(詳細(xì)請(qǐng)看 事件模型)。通過 ControllerListener 接口,你的程序可以確定播 放器在什么狀態(tài)并作出相應(yīng)的反應(yīng)。使用這種 事件 報(bào)告機(jī)制,你可以在調(diào)用播放器的方法前確定播放器是否在其適當(dāng)?shù)臓顟B(tài)。 為了避免混亂情況,在一個(gè)播放器所有狀態(tài)下,不是所有的方法都能被調(diào)用的。如果你在一個(gè)播放器對(duì)象的當(dāng)前狀態(tài)下,調(diào)用了一個(gè)非法的方法,播放器對(duì)象將拋出異?;蝈e(cuò)誤。 處理器( Processor) 處理器( Processor)對(duì)應(yīng)的接口是 Processor。在 JMF API 中 Processor接口繼承了 Player 接口。 Processor 同樣可以用來播放媒體數(shù)據(jù)。 它 是一種特殊的播放器,它可以 對(duì)輸入媒體流進(jìn)行過程控制。處理器支持所有播放器擁有的播放控制功能。 如 圖 23 所示, 除了將媒體數(shù)據(jù)傳送至播放終端外,處理器可以將媒體數(shù)據(jù)輸出至一個(gè)數(shù)據(jù)源( DataSource),使用 Processor 的 getDataOutput( )方法實(shí)現(xiàn),此數(shù)據(jù)源可以作為其它的播放器的數(shù)據(jù)源,或是通過其它的處理器對(duì)其進(jìn)行進(jìn)一步操作控制,或?qū)⑵渥鳛閿?shù)據(jù)池( DataSink)的參數(shù),利用數(shù)據(jù)池或存儲(chǔ)到一個(gè)文件,或傳送到網(wǎng)絡(luò)中去。 圖 24 處理器模型 如圖 24 所示,除了在播放器中提到了的 6 種狀態(tài)以外,處理器對(duì)象還包括 兩種新的狀態(tài)。這兩種狀態(tài)是在 Unrealized 狀態(tài)之后,在 Realizing 狀態(tài)之前。 ● Configuring:當(dāng)調(diào)用 configure( )方法后,處理器對(duì)象進(jìn)入該狀態(tài)。在該狀態(tài)下處理器對(duì)象連接到數(shù)據(jù)源并獲取輸入數(shù)據(jù)的格式信息。 第 2 章 關(guān)于 JMF 技術(shù) 7 ● Configured:當(dāng)完成數(shù)據(jù)源連接,獲得輸入數(shù)據(jù)格式的信息后,處理器對(duì)象就處于 Configured 狀態(tài)。 圖 24 處理器的狀態(tài)轉(zhuǎn)換圖 數(shù)據(jù)池( DataSink) 數(shù)據(jù)池( DataSink) 用來讀取數(shù)據(jù)源( DataSource)的媒體數(shù)據(jù)和輸出到特定的目的地 ——這里的目的地不同于以上所說的如音箱或屏幕。一個(gè)特定的DataSink 或把數(shù)據(jù)輸出到一個(gè)文件,或通過網(wǎng)絡(luò)傳輸數(shù)據(jù),或進(jìn)行 RTP 廣播。像 Player 一樣, DataSink 對(duì)象以 DataSource 作為參數(shù),通過管理器( Manager)來構(gòu)造。 數(shù)據(jù)格式( Format) 在 JMF 架構(gòu)中, 數(shù)據(jù)格式 ( Format) 對(duì)象中保存了媒體的格式( format)信息。它并不包括編碼參數(shù)和全局時(shí)間信息。只是描述了該格式的編碼名稱和數(shù)據(jù)類別。 Format 的子類包括 AudioFormat 和 VideoFormat 類, VideoFormat又有六個(gè)子類: H261Format、 H263Format、 IndexedColorFormat、 JPEGFormat、RGBFormat 和 YUVFormat 類 [4]。在 AudioFormat 中,描述了音頻格式的屬性,如采樣頻率、每次采樣的數(shù)據(jù)位數(shù)等等。在 VideoFormat 中則描述了視頻數(shù)據(jù)的類型如 等。 圖 25 表示 JMF 對(duì)音頻格式和視頻格式的定義: 第 2 章 關(guān)于 JMF 技術(shù) 8 圖 25 JMF 的媒體數(shù)據(jù)格式 管理器( Manager) JMF 提供了下面四種管理器 ( Manager) : ● Manager: Manager 相當(dāng)于兩個(gè)類之間的接口。例如當(dāng)你需要播放一個(gè)DataSource 對(duì)象,你可以通過使用 Manager 對(duì)象 createPlayer( )方法創(chuàng)建一個(gè) Player 對(duì)象來播放它。使用 Manager 對(duì)象可以創(chuàng)建 Player、 Processor、 DataSource和 DataSink 對(duì)象。 ● PackageManager:該管理器中保存了 JMF 類注冊(cè)信息。 ● CaptureDeviceManager:該管理器中保存了截取設(shè)備的注冊(cè)信息。 ● PlugInManager:該管理器中保存了 JMF 插件的注冊(cè)信息。 事件模型 JMF 利用事件報(bào)告機(jī)制來使基于 JMF 的程序獲知媒體系統(tǒng)當(dāng)前的狀態(tài),從而使程序能夠?qū)ο鄳?yīng)狀態(tài)的改變作出相應(yīng)的操作。在任何時(shí)候,當(dāng)一個(gè) JMF對(duì)象需要報(bào)告當(dāng)前的狀態(tài),它將發(fā)出一個(gè) MediaEvent 事件。 MediaEvent 的子類包括 ControllerEvern, DataSinkEvent, GainChangeEvent, RTPEvent。 對(duì)于任何一個(gè)能發(fā)送 MediaEvent 的 JMF 對(duì)象而言, JMF 都定義了一個(gè)相應(yīng)的偵聽接口 (listener interface)。為了能在某一 MediaEvent 事件發(fā)生時(shí)得到相應(yīng)的通知,必須實(shí)現(xiàn)適當(dāng)?shù)膫陕牻涌谝约霸趯?duì)應(yīng)的類體中重寫該接口中處理第 2 章 關(guān)于 JMF 技術(shù) 9 MediaEvent 事件的方法體,并通過調(diào)用 addListener 方法來接收此 MediaEvent事件。 如 圖 26 所示, JMF 中的 Controller 對(duì)象,例如播放器( Player)和處理器( Processor),以及 Control 對(duì)象,例如 GainControl 都可以發(fā)出 MediaEvent 事件。( Player 和 Processor 繼承于 Controller 類) 圖 26 JMF 的事件模型 圖 27JMF Controller 事件 第 2 章 關(guān)于 JMF 技術(shù) 10 圖 27 列出了所有 的 Controller 事件, ControllerEvent由 Controller(如 Player或 Processor)產(chǎn)生,可分為三類:改變通知( change notification),關(guān)閉事件( closed event),狀態(tài)轉(zhuǎn)變事件( transition event): 1 .改變通知事件如 RateChangeEvent , DurationUpdateEvent ,F(xiàn)ormatChangeEvent 表明一些 Controller 的屬性的改變。 2.狀態(tài)轉(zhuǎn)變事件可以使你的程序?qū)?Controller 對(duì)象的狀態(tài)轉(zhuǎn)變作出反應(yīng)。Player 當(dāng)從一個(gè)狀態(tài)轉(zhuǎn)為另一狀態(tài)時(shí)都會(huì)產(chǎn)生 transition events。 3.當(dāng) Controller 關(guān)閉時(shí),它將產(chǎn)生關(guān)閉事件。 第 3章 系統(tǒng)架構(gòu)和功能模塊設(shè)計(jì) 11 第 3 章 系統(tǒng)架構(gòu)和功能模塊設(shè)計(jì) MVC 模式概述 MVC 架構(gòu)是“ ModelViewController”的縮寫,即將“模型 視圖 控制”作為應(yīng)用程序構(gòu)成的三要素。 Event(事件)導(dǎo)致 Controller 改變 Model 或 View,或者同時(shí)改變兩者。只要 Controller 改變了 Models 的數(shù)據(jù)或者屬性,所有以來的 View 都會(huì)自動(dòng)更新。類似的,只要 Controller 改變了 View, View 會(huì)從潛在的 Model 中獲取數(shù)據(jù)來刷新自己。 相應(yīng)地,本軟件也同樣使用 MVC 思想指導(dǎo)設(shè)計(jì),做到模塊細(xì)化,分工明確,模塊間邏輯順序清晰的三大目標(biāo)。 流程如圖 31 所示 圖 31 系統(tǒng)目標(biāo) 對(duì)于 音頻 播放器,必須給用戶提供最簡(jiǎn)單的操作和最完善的功能。至少應(yīng)該能夠?qū)?音頻文件 進(jìn)行播放、暫停、停止、 音量和進(jìn)度 拖放操作等。除了最基本的操作以外,優(yōu)秀的播放器還提供了許多附加的功能來突出顯示該媒體播放器的特色,例如本播放器的歌詞實(shí)時(shí)顯示。 在這樣的情況下,對(duì)播放器的設(shè)計(jì)目標(biāo)要求有如下功能的實(shí)現(xiàn): ◆ 用戶界面窗口的控制功能:播放器主窗口控制、播放列表窗口的控制和歌詞顯示窗口的控制; 第 3章 系統(tǒng)架構(gòu)和功能模塊設(shè)計(jì) 12 ◆ 媒體文件的播放控制功能:開始播放、暫停播放、停止播放和拖動(dòng)播放等; ◆ 媒體文件的管理功能 :添加歌曲、添加目錄,刪除歌曲、清空列表、保存列表和裝載列表; ◆ 音頻文件信息顯示功能:將音頻文件的基本信息呈現(xiàn)給用戶,同時(shí)用戶自己可以設(shè)置一些信息。 系統(tǒng)功能模塊 概要 設(shè)計(jì) 本軟件同樣采用 MVC 的設(shè)計(jì)模式,做到控制,信息與視圖的相互分離,同時(shí)相互間有聯(lián)系緊密,互相調(diào)用,互為條件與依賴。故將系統(tǒng)分為五大模塊進(jìn)行構(gòu)建,分別是 用戶界面模塊 播放控制模塊 播放信息模塊 播放列表 控制 模塊 歌詞控制模塊 其相互關(guān)系如 圖 32所示 用戶請(qǐng)求事件 用戶請(qǐng)求事件 視圖信息更新 視圖信息更新 更新信息 讀取信息 更新信息 讀取信息 讀取信息 更新信息 播放信息模塊 用戶界面模塊 播
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1