2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  畢 業(yè) 設(shè) 計(jì) [論 文]</p><p>  題目:MP3播放器的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  系 別:計(jì)算機(jī)科學(xué)與工程系</p><p>  專 業(yè):信息管理與信息系統(tǒng)</p><p><b>  姓 名:</b></p><p><b> 

2、 學(xué) 號(hào):</b></p><p><b>  指導(dǎo)教師: </b></p><p><b>  河南城建學(xué)院</b></p><p>  2012年 05月 20日</p><p><b>  摘 要</b></p><p>  隨著

3、Linux系統(tǒng)主要有服務(wù)器向普通用戶擴(kuò)展,越來越多的人開始接觸并使用Linux系統(tǒng),可以說Linux是開源、免費(fèi)的代稱,具有極強(qiáng)的平臺(tái)可伸縮性,可以多任務(wù)用戶,有豐富的圖形用戶界面和強(qiáng)大的網(wǎng)絡(luò)功能等等一系列優(yōu)勢。在Linux下的Qt是一款跨平臺(tái)的圖形開發(fā)軟件,它提供給應(yīng)用程序開發(fā)者建立圖形用戶界面所需的所有功能,該軟件利用已有的媒體文件的解碼播放控件和Qt開發(fā)而成。該播放器實(shí)現(xiàn)了播放MP3,并且支持其他的一些常見的媒體文件,如:MIDI

4、、DAT、ASF、MPG和WAV等。</p><p>  論文首先介紹了MP3與MP3播放器、研究內(nèi)容,然后,論文介紹了系統(tǒng)的設(shè)計(jì)目標(biāo),劃分并設(shè)計(jì)了系統(tǒng)功能模塊,包括:播放控制窗口模塊、播放列表管理模塊、菜單管理模塊等,設(shè)計(jì)了媒體文件和歌詞文件的處理流程。最后,論文介紹了系統(tǒng)的運(yùn)行環(huán)境及運(yùn)行效果,并對(duì)各個(gè)部分進(jìn)行了圖示說明。</p><p>  關(guān)鍵字: Linux;Qt GUI框架;音樂

5、播放器 </p><p><b>  Abstract</b></p><p>  With the Linux system to the general user, the server expansion, more and more people came into contact with and use the Linux system, you can

6、say that Linux is open source, free of charge in lieu of that, with a strong platform for scalability, you can multi-task users, there are a number of advantages of the rich graphical user interface and powerful network

7、functions. Qt is a cross-platform graphics development software under Linux, it provides all the functionality required to create a graph</p><p>  Firstly, this thesis introduces MP3 and MP3 player, Secondly

8、, the design goal of the system is analyzed, and the function modules of the system are divided and designs, including playing control, playlist management, lyric display, menu management and help, also the process flows

9、 of media and lyric files are designed. Thirdly, the development platforms are introduced, and the detailed design and realization of various functions of the system are described. At last, the running results of the sys

10、</p><p>  Keyword: Linux;Qt GUI;frameworks music player</p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  1. 前言1</b></p><p> 

11、 1.1 Winamp2</p><p>  1.2 Foobar 20002</p><p>  1.3 千千靜聽3</p><p>  1.4 課題簡介3</p><p><b>  2 .系統(tǒng)目標(biāo)5</b></p><p>  2.1 系統(tǒng)的功能模塊設(shè)計(jì)5</p>

12、<p>  2.2 MP3 文件的播放處理流程6</p><p>  2.3歌詞文件的處理流程6</p><p>  3.系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)9</p><p>  3.1 開發(fā)工具介紹9</p><p>  3.2 C++ 介紹10</p><p>  4. 界面窗口模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)14<

13、/p><p>  4.1 控制界面窗口14</p><p>  4.2 控制組件15</p><p>  4.2.1 播放/暫停按鈕15</p><p>  4.2.2停止按鈕的設(shè)計(jì)16</p><p>  4.2.3.上一首按鈕的設(shè)計(jì)16</p><p>  4.2.4.下一首按鈕的設(shè)計(jì)

14、16</p><p>  4.2.5.打開按鈕的設(shè)計(jì)16</p><p>  4.2.6.列表按鈕的設(shè)計(jì)16</p><p>  4.2.7.歌詞按鈕的設(shè)計(jì)17</p><p>  4.2.8.靜音按鈕17</p><p>  4.2.9.音量控制條17</p><p>  4.2.

15、10.進(jìn)度控制條17</p><p>  4.3播放列表界面17</p><p>  4.4 MP3 文件播放控制模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)18</p><p>  4.4.1 播放19</p><p>  4.4.2 暫停21</p><p>  4.4.3 停止播放21</p><p>

16、  4.4.4 上一首22</p><p>  4.4.5 下一首23</p><p>  4.4.6 打開文件并播放23</p><p>  4.4.7 向列表中添加單首 MP3 文件24</p><p>  4.4.8刪除列表中的一首 MP3 文件24</p><p>  4.4.9播放器控制窗口上的菜單

17、功能25</p><p>  5.系統(tǒng)運(yùn)行環(huán)境及效果26</p><p>  5.1 系統(tǒng)運(yùn)行環(huán)境26</p><p>  5.2 運(yùn)行效果26</p><p>  5.3 播放器的播放列表窗口界面28</p><p><b>  結(jié)束語29</b></p><p&

18、gt;<b>  致 謝30</b></p><p><b>  參考文獻(xiàn)31</b></p><p><b>  附 錄A32</b></p><p>  A.1系統(tǒng)主函數(shù)代碼32</p><p>  A.2控制界面函數(shù)代碼32</p><p&g

19、t;  A.3列表窗口函數(shù)代碼44</p><p>  A.4歌詞實(shí)現(xiàn)代碼46</p><p><b>  1 前言</b></p><p>  辦公自動(dòng)化管理系統(tǒng)(OA),是伴隨著Internet技術(shù)在各個(gè)領(lǐng)域的廣泛應(yīng)用,和各行各業(yè)企業(yè)信息化建設(shè)步伐的加快應(yīng)運(yùn)而生。</p><p>  當(dāng)代社會(huì)已經(jīng)進(jìn)入信息時(shí)代,信

20、息技術(shù)革命使社會(huì)的各個(gè)領(lǐng)域都發(fā)生了翻天覆地的變化,每個(gè)企業(yè)都必須緊跟時(shí)代的步伐,加強(qiáng)企業(yè)競爭力和提升現(xiàn)代化企業(yè)的管理能力,以適應(yīng)整個(gè)社會(huì)的發(fā)展變化。</p><p>  近年來,隨著計(jì)算機(jī)技術(shù)的發(fā)展和互聯(lián)網(wǎng)時(shí)代的到來,我們已經(jīng)進(jìn)入了信息時(shí)代也有人稱為數(shù)字化時(shí)代,計(jì)算機(jī)網(wǎng)絡(luò)已經(jīng)進(jìn)入大部分家庭,人們的生產(chǎn)生活方式已經(jīng)發(fā)生很大的變化,特別是通信技術(shù)的迅猛發(fā)展,使得人與人之間的信息交流突破了地域,國界的限制,商業(yè)國際化,

21、信息全球化速度加快。因此,在這數(shù)字化的時(shí)代里,企業(yè)的運(yùn)營管理也受到了極大的挑戰(zhàn)。Internet技術(shù)持續(xù)迅猛的發(fā)展,也給各行各業(yè)的管理提出了新的模式。</p><p>  MP3的全稱是Moving Picture Experts Group Audio Layer III,是一種連續(xù)圖像(電 影)格式中的聲音部分,即一種音頻壓縮技術(shù),簡稱為MPEG Audio Layer 3, 由于這個(gè)格式使用廣泛,就進(jìn)一步簡

22、稱為 MP3。MP3是利用 MPEG Audio Layer 3的技術(shù),將 音樂以1:10甚至1:12的壓縮率,壓縮成容量較小的文件,同時(shí)保持較好的音頻質(zhì)量。盡管目前多媒體技術(shù)還處于不斷發(fā)展的階段,競爭也異常激烈,目前的多媒體格式極不統(tǒng)一,不同格式的多媒體文件需要用不同的播放軟件來播放,但是MP3作為使用最為廣泛的音頻格式,得到了幾乎所有的軟件播放器和大部分硬件播放器的支持。下面,就來看看最常見的三款有名的音樂播放軟件。</p&g

23、t;<p>  為了更好的為用戶服務(wù),企業(yè)都會(huì)提供用戶管理系統(tǒng),來對(duì)客戶資料進(jìn)行管理,使管理突破時(shí)空限制,提高管理效率與水平,使用戶在時(shí)候任何地點(diǎn)都可以通過網(wǎng)絡(luò)進(jìn)行與企業(yè)進(jìn)行信息交流,滿足用戶需求,實(shí)現(xiàn)企業(yè)朝著網(wǎng)絡(luò)化,信息化,現(xiàn)代化方向發(fā)展。本課題就試圖使用java技術(shù)來實(shí)現(xiàn)一個(gè)最基本的網(wǎng)上辦公自動(dòng)化系統(tǒng)。本系統(tǒng)通過設(shè)計(jì)和建設(shè)網(wǎng)絡(luò)拓?fù)浼軜?gòu)、網(wǎng)絡(luò)安全系統(tǒng)、數(shù)據(jù)庫基礎(chǔ)結(jié)構(gòu)、信息共享與管理、信息的發(fā)布與管理,從而方便企業(yè)和客戶之

24、間的信息交流和信息共享。</p><p>  1.1 Winamp </p><p>  Winamp由Nullsoft公司開發(fā),創(chuàng)始人Justin Frankel,伴隨著MP3這種音樂格式的出現(xiàn)而出現(xiàn),伴隨著MP3的成長而成長,是一個(gè)非常著名的高保真的音樂播放軟件,支持MP3、MP2、MOD、S3M、MTM、ULT、XM、IT、669、CD-Audio和Line-In等格式。Winamp

25、最大的優(yōu)點(diǎn)就是音質(zhì)好,而且接口界面很酷,同時(shí)支持插件,擴(kuò)展更多的功能,并且其資源占用較少,在MP3的發(fā)展史上擁有無可替代的重要地位,甚至一度成為MP3的代名詞,是用戶播放MP3 的不二選擇。Winamp很有進(jìn)取精神,在保持原有領(lǐng)地的基礎(chǔ)上,還不斷地學(xué)習(xí)、創(chuàng)造開發(fā)新功能,而且很受歡迎。例如:EQ均衡器、播放列表、插件、更換皮膚、AVS 和媒體庫等等,尤其是2.81版本的DFX 更是使其音質(zhì)百尺竿頭更進(jìn)一步,受到了廣泛歡迎。但是,Winam

26、p從1.0版本發(fā)展到如今的版本,雖然更新頻繁,更新時(shí)間也很快,但總體來看并沒有質(zhì)的飛躍。就市場角度來看,這對(duì)Winamp是不利的, 而且對(duì)新用戶其操作不便,這樣就使Winamp的新用戶增長速度大大降低,甚至連老用戶這塊陣地也很難守住。特別是從2002年發(fā)布的</p><p>  1.2 Foobar 2000</p><p>  Foobar 2000是由以前專門為Winamp寫插件的Pe

27、ter Pawlowski編寫的一個(gè)革命性的高級(jí)音頻播放器。Foobar 2000之所以出現(xiàn),在于它不滿Winamp 2.x的插件體系架構(gòu)和更傾向于圖形、皮膚的發(fā)展方向的Winamp3。Foobar 2000值得關(guān)注的,在于它良好的體系架構(gòu)。除了重要的音頻管道以外,播放器所有功能部件均是模塊化的,并且支持插件擴(kuò)展,例如其可視化的核心由插件提供。Foobar 2000是一個(gè)Windows平臺(tái)下的高級(jí)音頻播放器,尤其在播放MP3時(shí)可以使用很

28、多高級(jí)功能,可以對(duì)其播放音效進(jìn)行調(diào)節(jié),適合于對(duì)MP3的播放有苛刻要求的用戶。它包含了一些播放增益支持、低內(nèi)存占用等基本特色,以及內(nèi)置支持一些流行的音頻格式。Foobar 2000的定位是高級(jí)音頻播放器,雖然有很多人迷上了其豐富的音效調(diào)節(jié)功能,但是其高難度的專業(yè)參數(shù)設(shè)置注定了其用戶數(shù)量不會(huì)有太大的發(fā)展。因?yàn)橛脩魯?shù)量的增長緩慢,大大限制Foobar 2000這一款優(yōu)秀的MP3播放器的發(fā)展。目前,F(xiàn)oobar 2000播放器可以使用《速配歌詞

29、2005獨(dú)立版for Winamp &amp; Foobar</p><p><b>  1.3 千千靜聽 </b></p><p>  千千靜聽(Thousand tunes player, TTPlayer)是一款完全免費(fèi)的音樂播放軟件,集播放、音效、轉(zhuǎn)換、歌詞等眾多功能于一身。其小巧精致、操作簡捷、功能強(qiáng)大的特點(diǎn),深得用戶喜愛,被網(wǎng)友評(píng)為中國十大優(yōu)秀軟件

30、之一,并且成為目前國內(nèi)最受歡迎的音樂播放軟件,擁有最大的用戶群,漸漸取代了Winamp在個(gè)人PC上MP3播放器的王者地位。千千靜聽同樣支持多種流行的音樂格式,并可通過插件進(jìn)行擴(kuò)展。支持均衡器、播放列表、格式轉(zhuǎn)換等,資源占用率低。千千靜聽倍受用戶喜愛和推崇,最大的原因是其強(qiáng)大而完善的同步歌詞顯示功能。在播放歌曲的同時(shí),可以自動(dòng)連接到千千靜聽龐大的歌詞庫服務(wù)器,自動(dòng)下載相匹配的歌詞文件,并且以卡拉OK式效果同步滾動(dòng)顯示,并支持鼠標(biāo)拖動(dòng)定位播

31、放;另有獨(dú)具特色的歌詞編輯功能,可以自己制作或修改同步歌詞,還可以直接將自己精心制作的歌詞上傳到服務(wù)器實(shí)現(xiàn)與他人共享。千千靜聽播放MP3使用的是同F(xiàn)oobar 2000一樣的mpg123解碼器,其音質(zhì)是有保證的,但是音效調(diào)節(jié)的效果要遠(yuǎn)遠(yuǎn)弱于Foobar 2000,只能憑借其簡便的操作和設(shè)置占據(jù)上風(fēng)。千千靜聽的皮膚除了部分自己設(shè)計(jì)外,其</p><p><b>  1.4 課題簡介</b>&l

32、t;/p><p>  本文主要研究的內(nèi)容是設(shè)計(jì)并實(shí)現(xiàn)一款支持歌詞的音樂播放器系統(tǒng)。用戶通過對(duì)播放器的主窗口界面進(jìn)行控制,以達(dá)到控制系統(tǒng)的各個(gè)功能模塊及對(duì)媒體文件進(jìn)行管理和歌詞實(shí)時(shí)顯示的目的。本軟件是用Linux下的QT開發(fā)而成的,QT是一個(gè)跨平臺(tái)的C++ GUI應(yīng)用構(gòu)架,它提供了豐富的窗口部件集,具有面向?qū)ο?、易于擴(kuò)展、真正的組件編程等特點(diǎn),更為引人注目的是目前Linux上最為流行的KDE桌面環(huán)境就是建立在QT庫的基

33、礎(chǔ)之上。QT支持下列平臺(tái):MS/WINDOWS-95、98、NT和2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EMBEDDED-支持framebuffer的Linux平臺(tái)。伴隨著KDE的快速發(fā)展和普及,QT很可能成為Linux窗口平臺(tái)上進(jìn)行軟件開發(fā)時(shí)的GUI首選</p><p><b>  2 系統(tǒng)目標(biāo)</

34、b></p><p>  對(duì)于MP3音樂播放器,必須給用戶提供最簡單的操作和最完善的功能。至少應(yīng)該能夠?qū)P3及其他常見的媒體類型進(jìn)行播放、暫停、停止、拖放操作等。除了最基本的操作以外,優(yōu)秀的MP3播放器還提供了許多附加的功能來突出顯示該媒體播放器的特色,例如本播放器的歌詞實(shí)時(shí)顯示。為了實(shí)現(xiàn)一個(gè)播放器所應(yīng)該具有的功能,并給播放器的使用者提供最簡單的操作,本系統(tǒng)設(shè)計(jì)的目標(biāo)就是要讓設(shè)計(jì)的播放器能夠?qū)P3和常見

35、的多媒體文件進(jìn)行播放、暫停播放、停止播放、拖動(dòng)播放等;在提供操作的簡易性的同時(shí)還要保證操作界面的友好性。在這樣的情況下,對(duì)播放器的設(shè)計(jì)目標(biāo)要求有如下功能的實(shí)現(xiàn):</p><p>  界面窗口的控制功能:播放器主窗口控制、播放列表窗口的控制和歌詞顯示窗口的控制;</p><p>  媒體文件的播放控制功能:開始播放、暫停播放、停止播放和拖動(dòng)播放等; </p><p>

36、  媒體文件的管理功能:添加歌曲、刪除歌曲、清空列表、保存列表;</p><p>  菜單控制播放功能:播放界面上的菜單、列表窗口上的菜單。</p><p><b>  功能特色:</b></p><p>  1.實(shí)現(xiàn)桌面歌詞顯示。</p><p>  2.實(shí)現(xiàn)音樂拖入播放。</p><p>  

37、3.實(shí)現(xiàn)系統(tǒng)托盤菜單。</p><p>  4.實(shí)現(xiàn)窗口相互吸附。</p><p>  5.實(shí)現(xiàn)主窗口攜帶子窗口移動(dòng)。</p><p>  2.1 系統(tǒng)的功能模塊設(shè)計(jì)</p><p>  一個(gè)軟件系統(tǒng)設(shè)計(jì)的成敗,除了在功能上要盡可能地完善以外,在界面設(shè)計(jì)上也有很大的決定性作用。如果你的軟件界面很糟糕,不能讓使用該軟件的用戶滿意,那么你開發(fā)的產(chǎn)

38、品將被“凍結(jié)”起來,得不到用戶的響應(yīng)。所以,軟件產(chǎn)品的界面設(shè)計(jì)應(yīng)該具有友好性這一特點(diǎn)。除此之外,還應(yīng)該有簡潔性。如果你的產(chǎn)品只注意了友好美觀的界面,而使得你的界面很復(fù)雜,將會(huì)給用戶帶來極大的不便,從而會(huì)適得其反。比如,一個(gè)最簡單的操作用戶要點(diǎn)擊一個(gè)按鈕,而你的界面上到處都是按鈕圖片之類的,這就會(huì)讓用戶花上很長的時(shí)間去尋找要點(diǎn)擊的按鈕,這樣一來,當(dāng)然就不能使用戶滿意了?;诖?,本系統(tǒng)使用Qt來設(shè)計(jì)界面,并且共有2個(gè)界面窗口,分別是:播放器

39、控制窗口、播放列表窗口、歌詞顯示窗口。為了更好地實(shí)現(xiàn)系統(tǒng)的各項(xiàng)功能及這些功能的完整性,現(xiàn)在把系統(tǒng)共分為以下2大模塊進(jìn)行設(shè)計(jì): (1) 系統(tǒng)的播放控制窗口模塊(2) MP3文件的播放列表管理模塊 (3) MP3歌詞的實(shí)時(shí)顯示模塊</p><p>  2.2 MP3 文件的播放處理流程</p><p>  對(duì)MP3文件的傳送主要是用在播放列表處理的過程中,當(dāng)播放器的用戶想利用本播放器來播放一個(gè)

40、MP3文件時(shí),首先要做的就是將該MP3文件所在磁盤上的地址傳到播放列表中。當(dāng)要播放該文件時(shí),就從播放列表中提取該文件地址并將地址傳送到播放控制窗,剩下的工作都交給 phonon控件進(jìn)行MP3文件的播放。對(duì)MP3文件的詳細(xì)傳送處理過程如圖2-1所示。</p><p>  圖2-1 MP3 文件的播放處理流程</p><p>  2.3歌詞文件的處理流程</p><p>

41、;  歌詞的實(shí)時(shí)顯示作為本播放器的重要功能,LRC歌詞文件的處理流程也就顯得至關(guān)重要,因?yàn)長RC歌詞可能處于不同位置,所以其地址和數(shù)據(jù)處理流程要比MP3文件 的處理流程要復(fù)雜得多,其具體處理過程如圖2-2所示</p><p>  圖2-2 歌詞文件的處理流程</p><p>  首先,也是將MP3文件所在磁盤上的地址傳到播放列表中,當(dāng)要播放該文件時(shí),就從播放列表中提取該文件地址并將地址傳送

42、到播放控制窗口,并將MP3文件擴(kuò)展名改為LRC,以獲得一個(gè)與MP3文件相同路徑的LRC歌詞文件的地址,將MP3文件名和LRC文件名傳遞到MP3信息獲取模塊;在MP3信息獲取模塊中先讀取MP3文件的TAG信息,然后將MP3文件末尾的內(nèi)容傳遞給歌詞處理模塊,檢查該MP3文件是否內(nèi)嵌了歌詞,如果內(nèi)嵌歌詞存在則分離出時(shí)間信息和歌詞文本并返回;如果不存在內(nèi)嵌歌詞,則檢查同路徑下LRC 歌詞文件是否存在,如果存在則將其傳遞給歌詞處理模塊進(jìn)行歌詞處理

43、,分離出時(shí)間信息和歌詞文本并返回;如果不存在則嘗試自動(dòng)關(guān)聯(lián)歌詞文件夾中是否存在該歌詞。如果存在,則將其傳遞給歌詞處理模塊進(jìn)行時(shí)間信息和歌詞文本的分離,然后返回播放控制模塊;如果此時(shí)返回的歌詞存在,則將其傳遞給歌詞顯示窗口進(jìn)行顯示,并使用時(shí)間信息進(jìn)行控制。</p><p>  3.系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  3.1 開發(fā)工具介紹</p><p>  Qt從

44、4.4版本開始提供的一套多媒體框架,提供多媒體回放的功能。目前在Qt 4.6中實(shí)現(xiàn)多媒體播放圖形界面主要依賴于phonon框架,其實(shí)qt中還有一個(gè)Multimedia模塊,幫助文檔中對(duì)它的描述是:實(shí)現(xiàn)底層的多媒體播放功能,在一般情況下上層的接口phonon模塊更適合實(shí)現(xiàn)這些功能。phonon最初是一個(gè)源于KDE的項(xiàng)目,為使用音頻和視頻的應(yīng)用程序開發(fā)提供的一個(gè)框架。應(yīng)用程序不用去管多媒體播放是通過什么實(shí)現(xiàn)的(如gstreamer、xine

45、),只需調(diào)用相應(yīng)的接口就行,但這中間需要一個(gè)中轉(zhuǎn),被稱為backend。Qt也是通過phonon來實(shí)現(xiàn)夸平臺(tái)的多媒體播放。多媒體文件的播放主要過程包括:文件讀取、分流、解碼、輸出。如圖3-1所示</p><p>  圖3-1 多媒體文件的播放主要過程</p><p>  這些在不同的系統(tǒng)中實(shí)現(xiàn)方式不同,如windows下的DirectX、Linux下的 gstreamer或xine及Mac

46、下的QuickTime。而Qt中的phonon作為夸平臺(tái)的多媒體解決方案,就因該為用戶屏蔽掉這些差異。而實(shí)際上它做得還不夠好,因?yàn)橛脩暨€需要自己來安裝相應(yīng)的后端插件來完成播放任務(wù)。如圖3-2</p><p>  圖3-2 Phonon庫的調(diào)用使用過程</p><p>  應(yīng)用Phonon框架實(shí)質(zhì)上分4個(gè)部分,你的程序,Phonon庫,Phonon后端插件(phonon_backend),真

47、正的后端。Phonon其實(shí)什么都不干,他只是提供了一套API接口,這套接口可以給你的程序調(diào)用,同時(shí)也是給編寫后端插件提供一個(gè)規(guī)范。程序完全不知道最后誰來放我的Mp3,誰來解碼我的視頻,播放的又是哪個(gè)設(shè)備。同樣,Phonon庫也不知道,他只管搜索符合自己規(guī)范的插件。并告訴這些插件,現(xiàn)在程序發(fā)出的指令是什么,從插件返回給程序現(xiàn)在的媒體狀態(tài)和信息。而后端才是實(shí)際進(jìn)行讀入媒體、解碼并且播放的部分,他們和后端插件是一一對(duì)應(yīng)的。后端可以是任何形式,

48、只要你寫出了相應(yīng)的后端插件。所以,使用Phonon必需要先做2件事:</p><p>  1、編譯Phonon庫:通常情況下,Qt默認(rèn)沒有編譯,需要configure后加好參數(shù),然后單獨(dú)進(jìn)入phonon的文件夾進(jìn)行編譯就可以了</p><p>  2、編譯Phonon后端插件:Qt為3大平臺(tái)分別提供了一個(gè)可用的后端插件,放在src\plugins\phonon目錄下。進(jìn)入目錄編譯即可,Qt

49、會(huì)自動(dòng)選擇你當(dāng)前系統(tǒng)的后端插件的。(出現(xiàn)phonon backend plugin could not be loaded就是這步?jīng)]有做).如果是MinGW用戶,Windows下Qt只提供了DirectShow這個(gè)后端插件,而這個(gè)后端插件因?yàn)檎{(diào)用了DX的SDK,所以只能由VC編譯。當(dāng)然其實(shí)有更好的選擇,比如這個(gè)phonon-vlc-mplayer插件,通過他,可以將mplayer作為后端,徹底拋棄臃腫的VS以及讀ID3v2都會(huì)出錯(cuò)的Di

50、rectShow,Phonon是KDE 4的多媒體API 。Phonon提供一個(gè)穩(wěn)定的API允許KDE 4獨(dú)立于任何一個(gè)聲音系統(tǒng)服務(wù)器如xine。</p><p>  Phonon讓各種后端提供界面給開發(fā)者所謂的"引擎";每個(gè)引擎運(yùn)作在一個(gè)具體的后端。每個(gè)后端都可讓Phonon控制基本功能,如播放、暫停和搜尋。Phonon也支持更高層次的功能,如讓音軌轉(zhuǎn)化之間變微弱。使用Solid,Phono

51、n將給予用戶更多配件的控制能力如耳機(jī)、揚(yáng)聲器、麥克風(fēng)。一個(gè)例子是,因?yàn)槟憧赡苤挥幸粋€(gè)VoIP會(huì)話使用您的耳機(jī),但所有其他的聲音通過揚(yáng)聲器出來。支援 Unix-like 系統(tǒng)下的后端xine、VLC、MPlayer。支援 Windows 下的后端 DirectShow、VLC和MPlayer.支援 Mac OS X下的后端QuickTime。</p><p>  如上所述,如果想要運(yùn)行使用Qt中的phonon寫的程

52、序,需要滿足一下條件:Qt基本庫、Qt phonon庫、phonon_backend(后端插件)和多媒體播放后臺(tái)。</p><p>  3.2 C++ 介紹</p><p>  C++即“C plus plus”,“CPP”。它是一種使用非常廣泛的計(jì)算機(jī)編程語言。C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語言。它支持過程化程序設(shè)計(jì)、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計(jì)、制作圖標(biāo)

53、等等泛型程序設(shè)計(jì)等多種程序設(shè)計(jì)風(fēng)格。C++語言發(fā)展大概可以分為三個(gè)階段: </p><p>  第一階段從80年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當(dāng)大份額; </p><p>  第二階段從1995年到2000年,這一階段由于標(biāo)準(zhǔn)模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設(shè)計(jì)在C+

54、+中占據(jù)了越來越多的比重性。當(dāng)然,同時(shí)由于Java、C#等語言的出現(xiàn)和硬件價(jià)格的大規(guī)模下降,C++受到了一定的沖擊; </p><p>  第三階段從2000年至今,由于以Loki、MPL等程序庫為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個(gè)新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程序設(shè)計(jì)語言中最復(fù)雜的一員。</p><p>  根據(jù)Ef

55、fective C++第三版第一條款的描述,C++由以下四個(gè)“子語言”組成: </p><p>  1、C子語言。C++支持C語言的幾乎全部功能,主要是c89的部分,在語法上與C語言僅有極微妙的差別(如括號(hào)表達(dá)式的左右值性)。 </p><p>  2、面向?qū)ο蟮腃++語言。C++語言原本不具備面向?qū)ο蟮脑O(shè)計(jì)功能,然而隨著面向?qū)ο缶幊痰母拍畹奶岢鲆约叭鏙ava等語言的發(fā)展成熟,C++語言也

56、開發(fā)出了支持面向?qū)ο蠊δ艿陌姹尽?</p><p>  3、泛型編程語言。C++強(qiáng)大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運(yùn)行期效率。 </p><p>  4、STL(C++標(biāo)準(zhǔn)模板庫,Standard Template Library)。隨著STL的不斷發(fā)展,它已經(jīng)逐漸成為C++程序設(shè)計(jì)中不可或缺的部分,其效率可能比一般的native代碼低些,但是其安全性與規(guī)

57、范性使它大受歡迎。 </p><p><b>  C++特點(diǎn):</b></p><p>  (1)C++設(shè)計(jì)成靜態(tài)類型、和C同樣高效且可移植的多用途程序設(shè)計(jì)語言。(2)C++設(shè)計(jì)成直接的和廣泛的支援多種程序設(shè)計(jì)風(fēng)格(程序化程序設(shè)計(jì)、資料抽象化、面向?qū)ο蟪绦蛟O(shè)計(jì)、泛型程序設(shè)計(jì))。</p><p> ?。?)C++設(shè)計(jì)成給程序設(shè)計(jì)者更多的選擇,即使

58、可能導(dǎo)致程序設(shè)計(jì)者選擇錯(cuò)誤。</p><p> ?。?)C++設(shè)計(jì)成盡可能與C兼容,籍此提供一個(gè)從C到C++的平滑過渡。(5)C++避免平臺(tái)限定或沒有普遍用途的特性。</p><p> ?。?)C++不使用會(huì)帶來額外開銷的特性。</p><p> ?。?)C++設(shè)計(jì)成無需復(fù)雜的程序設(shè)計(jì)環(huán)境。 </p><p>  出于保證語言的簡潔和運(yùn)行高效

59、等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。</p><p><b>  C++編譯技巧</b></p><p>  使用new和delete進(jìn)行動(dòng)態(tài)內(nèi)存分配和釋放運(yùn)算符new和delete提供了存儲(chǔ)的動(dòng)態(tài)分配和釋放功能。它的作用相當(dāng)于C語言的函數(shù)malloc()和free(),但是性能更為優(yōu)越。使用new較之使用

60、malloc()有以下的幾個(gè)優(yōu)點(diǎn):</p><p> ?。?)new自動(dòng)計(jì)算要分配類型的大小,不使用sizeof運(yùn)算符,比較省事,可以避免錯(cuò)誤。</p><p>  (2)自動(dòng)地返回正確的指針類型,不用進(jìn)行強(qiáng)制指針類型轉(zhuǎn)換。</p><p> ?。?)可以用new對(duì)分配的對(duì)象進(jìn)行初始化。 </p><p><b>  使用例子: &

61、lt;/b></p><p>  (1)int* p; </p><p>  p=new int[10]; //分配一個(gè)含有10個(gè)整數(shù)的整型數(shù)組 </p><p>  delete[] p; //釋放這個(gè)指向數(shù)組的指針?biāo)純?nèi)存 </p><p>  (2)int* p; </p><p>  p=new int

62、(100);//動(dòng)態(tài)分配一個(gè)整數(shù)并初始化</p><p><b>  使用缺省參數(shù)</b></p><p>  在C++中函數(shù)可以使用缺省參數(shù),例如: </p><p>  void PutHzxy(char *str,int x=-1, int y=-1) </p><p><b>  { </b>

63、;</p><p>  if(x==-1) </p><p>  x=wherex(); </p><p>  if(y==-1) </p><p>  x=wherex(); </p><p>  moveto(x,y); </p><p>  PutHx(str); </p>

64、<p><b>  } </b></p><p>  可以有三種方式調(diào)用函數(shù)PutHzxy(),例如: </p><p>  PutHzxy("C++語言");//使用缺省參數(shù),在當(dāng)前位置輸出 </p><p>  PutHzxy("C++語言",10,10);//沒有使用缺省參數(shù) </p

65、><p>  PutHzxy("C++語言",10);//對(duì)y使用缺省參數(shù),指定x的位置 </p><p>  通常的情況下,一個(gè)函數(shù)應(yīng)該具有盡可能大的靈活性。使用缺省參數(shù)為程序員處理更大的復(fù)雜性和靈活性問題提供了有效的方法,所以在C++的代碼中都大量地使用了缺省參數(shù)。 </p><p>  需要說明的是,所有的缺省參數(shù)必須出現(xiàn)在不缺省參數(shù)的右邊。亦

66、即,一旦開始定義缺省參數(shù),就不可再說明非缺省的參數(shù)。否則當(dāng)你省略其中一個(gè)參數(shù)的時(shí)候,編譯器無法知道你是自定義了這個(gè)參數(shù)還是利用了缺省參數(shù)而定義了非缺省的參數(shù)。 </p><p><b>  例如:  </b></p><p>  void PutHzxy(char*str,int x=-1,int y=-1)//正確 </p><p>  vo

67、id PutHzxy(int x=-1,int y=-1,char*str)//錯(cuò)誤</p><p><b>  C++優(yōu)點(diǎn)</b></p><p>  C++在一定程度上可以和C語言很好的結(jié)合,甚至目前大多數(shù)C語言程序是在C++的集成開發(fā)環(huán)境中完成的。C++相對(duì)眾多的面向?qū)ο蟮恼Z言,具有相當(dāng)高的性能。 </p><p>  C++引入了面向?qū)?/p>

68、象的概念,使得開發(fā)人機(jī)交互類型的應(yīng)用程序更為簡單、快捷。很多優(yōu)秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。</p><p>  4 界面窗口模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  一款軟件的界面設(shè)計(jì)的成敗直接關(guān)系到該產(chǎn)品的成敗。本MP3播放器系統(tǒng)的界面設(shè)計(jì),利用Qt提供的強(qiáng)大的控件設(shè)計(jì)而成。系統(tǒng)的界面窗口包括有2個(gè)主要的界面,分別是:播放器的控制界面窗口和媒體文件播放

69、列表窗口,背景都為藍(lán)綠色調(diào),下面分別作出詳細(xì)介紹。</p><p>  4.1 控制界面窗口</p><p>  播放器的控制界面是播放器系統(tǒng)與播放器的使用者直接交互的媒介。按照控制界面上的組件的功能來分,可以將這些組件分成兩部分:信息顯示和控制組件,如圖4-1所示</p><p>  圖4-1控制界面窗口</p><p>  信息顯示組件信

70、息顯示是系統(tǒng)與使用者進(jìn)行交流的通道,它可以及時(shí)地將各種有用的信息提供給用戶,以便用戶對(duì)系統(tǒng)進(jìn)行控制。本播放器系統(tǒng)的所有信息顯示在操作控件四周,很方便看到</p><p>  1.播放狀態(tài)顯示的作用,是及時(shí)準(zhǔn)確地顯示當(dāng)前播放器所處的狀態(tài)。其中,狀態(tài)有“播放”、“暫?!焙汀巴V埂比N,隨播放器狀態(tài)的改變而改變。</p><p>  2.音量顯示 這部分與音量控制滑動(dòng)桿控件和菜單項(xiàng)中的“聲音”相

71、關(guān)聯(lián),當(dāng)音量滑動(dòng)桿的滑塊位置改變以后,音量大小會(huì)隨著變化。</p><p><b>  4.2 控制組件</b></p><p>  信息顯示是播放器系統(tǒng)提供給使用者各種有用的信息,而控制組件則剛好相反,它可以看作是使用者提供給播放器系統(tǒng)的各種有用的信息,用來指示系統(tǒng)是否工作及如何工作。</p><p>  4.2.1 播放/暫停按鈕</

72、p><p>  設(shè)計(jì)這個(gè)按鈕對(duì)一個(gè)播放器來說是最為重要的。如果一個(gè)播放器不能夠播放/暫停的話,就不能稱之為播放器了。對(duì)本播放器系統(tǒng)來說,這個(gè)按鈕集成了兩個(gè)重要的功能:“開始播放”和“暫停播放”,這樣將兩個(gè)功能集成到一個(gè)位置上的好處就是減少了界面上的按鈕的個(gè)數(shù),這使得整個(gè)界面更加簡潔。這個(gè)按鈕的作用是:如果當(dāng)前播放器的狀態(tài)為正在播放,點(diǎn)擊它之后就會(huì)暫停播放;如果當(dāng)前播放器的狀態(tài)為暫停播放,點(diǎn)擊它之后就會(huì)繼續(xù)播放。如果播

73、放器的狀態(tài)沒有播放,也不是處于暫停狀態(tài),點(diǎn)擊之后,系統(tǒng)就會(huì)從媒體播放列表中加載一個(gè)媒體文件并開始播放。因此,基于上述功能,為實(shí)現(xiàn)播放和暫停功能,使之重疊放置,按照播放狀態(tài)的改變在同一時(shí)間只顯示一個(gè)按鈕,這樣就模擬實(shí)現(xiàn)了播放/暫停功能按鈕,如果在播放狀態(tài)時(shí)想點(diǎn)擊播放按鈕播放其他MP3可以通過菜單中實(shí)現(xiàn)。</p><p>  表 4-1 播放器控件的組成部分</p><p>  4.2.2停止

74、按鈕的設(shè)計(jì) </p><p>  停止功能按鈕的設(shè)計(jì),是讓本播放器系統(tǒng)的使用者可以以手動(dòng)的方式來停止當(dāng)前 媒體文件的播放。如果播放器當(dāng)前沒有文件正在進(jìn)行播放時(shí),該按鈕將置為無效狀態(tài),此時(shí)該按鈕不能點(diǎn)擊。 </p><p>  4.2.3.上一首按鈕的設(shè)計(jì)</p><p>  如果沒有播放列表的話就不存在有多個(gè)媒體文件,也就不存在有上一首可以選擇了。所以,一個(gè)播放器的

75、設(shè)計(jì)有這個(gè)功能按鈕的話,就表示它一定有一個(gè)用來保存媒體文件的播放列表。在本系統(tǒng)中,上一首按鈕設(shè)計(jì)在播放/暫停功能按鈕的前面。這樣設(shè)計(jì)的目的,是使得整個(gè)功能控制按鈕的順序與MP3文件在列表中的順序相似。 </p><p>  4.2.4.下一首按鈕的設(shè)計(jì)</p><p>  同樣,它的設(shè)計(jì)也是與播放列表的存在有關(guān),如果沒有播放列表的話就不存在有多個(gè)媒體文件,也就不存在有下一首可以選擇了。在本

76、系統(tǒng)中,下一首按鈕設(shè)計(jì)在播放/暫停功能按鈕的后面。這樣設(shè)計(jì)的目的,是使得整個(gè)功能控制按鈕的順序與文件在列表中的順序相似。 </p><p>  4.2.5.打開按鈕的設(shè)計(jì)</p><p>  打開功能按鈕的設(shè)計(jì),是方便用戶選擇一個(gè)媒體文件,并立即進(jìn)行播放。</p><p>  4.2.6.列表按鈕的設(shè)計(jì) </p><p>  它主要是對(duì)播放列

77、表窗口進(jìn)行顯示/隱藏控制,當(dāng)用戶點(diǎn)擊此按鈕后,如果當(dāng)前列表窗口的狀態(tài)為顯示狀態(tài)的話,用戶的操作將會(huì)隱藏列表窗口。相反,如果當(dāng)前列表窗口的狀態(tài)為隱藏狀態(tài),用戶的操作將會(huì)顯示列表窗口。</p><p>  4.2.7.歌詞按鈕的設(shè)計(jì)</p><p>  LRC是MP3歌詞文件的格式,此按鈕可以控制歌詞顯示窗口的顯示與隱藏。當(dāng)用戶點(diǎn)擊此按鈕時(shí),將檢查歌詞顯示窗口的狀態(tài)。如果當(dāng)前狀態(tài)為顯示,則將其

78、隱藏;反之,如果當(dāng)前狀態(tài)為隱藏,則將其顯示。</p><p>  4.2.8.靜音按鈕</p><p>  該按鈕可以控制播放器輸出聲音的開啟和關(guān)閉。當(dāng)用戶點(diǎn)擊此按鈕時(shí),系統(tǒng)將檢查播放器的聲音狀態(tài)。如果當(dāng)前聲音狀態(tài)為開啟,則將其管理,即靜音;如果當(dāng)前聲音狀態(tài)為關(guān)閉,則將其開啟。因?yàn)榕c音量控制有關(guān),所以在播放器中將其置于音量控制條的左方。</p><p>  4.2.

79、9.音量控制條 </p><p>  音量控制條的設(shè)計(jì)與音量大小和播放器的輸出音量關(guān)聯(lián),它的改變將直接影響播放器輸出音量的大小,其主要功能是用來控制系統(tǒng)播放媒體文件時(shí)發(fā)出的音量大小。</p><p>  4.2.10.進(jìn)度控制條 </p><p>  進(jìn)度控制條的設(shè)計(jì),是用來方便用戶進(jìn)行控制播放媒體文件進(jìn)度的,它的移動(dòng)將直接改變媒體文件的當(dāng)前播放進(jìn)度,同時(shí)歌詞顯示實(shí)

80、時(shí)窗口的歌詞也將按照進(jìn)度進(jìn)行調(diào)整。當(dāng)控制條滑到最左邊時(shí)表示MP3文件的初始位置,當(dāng)控制條滑到最右邊時(shí)表示當(dāng)前位置為MP3文件的最后位置。</p><p><b>  4.3播放列表界面</b></p><p>  本播放器系統(tǒng)的播放列表窗口界面的設(shè)計(jì)主要是用來方便使用者配置管理播放 器的播放列表,以提供給播放器更完整的功能。效果如圖4-2所示</p>&

81、lt;p>  圖4-2 播放列表界面</p><p>  4.4 MP3 文件播放控制模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  MP3文件的播放控制模塊是本播放器系統(tǒng)的很重要的組成部分。在本播放器系統(tǒng) 中,播放控制主要集中在對(duì)播放器的控制界面上的操作。首先說明的是,媒體播放器的播放控制的類型,如表4-2所示</p><p>  表 4-2 播放控制模塊</

82、p><p>  在本播放器中,總共有三種狀態(tài),即播放狀態(tài)、暫停狀態(tài)和停止?fàn)顟B(tài),通過表中所列的各種播放控制類型可以實(shí)現(xiàn)這三種狀態(tài)之間的轉(zhuǎn)換,其具體轉(zhuǎn)換如圖4-4所示。</p><p>  圖4-4 播放的三種狀態(tài)</p><p>  下面將根據(jù)上圖的各種轉(zhuǎn)換關(guān)系,詳細(xì)介紹各種播放控制類型的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  4.4.1

83、 播放</b></p><p>  播放功能是媒體播放器所有控制功能中最重要的一個(gè)功能,沒有了它,播放器不能播放,也就不能稱之為播放器了。在本播放器系統(tǒng)中,當(dāng)點(diǎn)擊播放會(huì)有三種狀態(tài)轉(zhuǎn)換:第一種是從播放狀態(tài)仍然轉(zhuǎn)換到播放狀態(tài);第二種是從停止?fàn)顟B(tài)轉(zhuǎn)換到播放狀態(tài);第三種是從暫停狀態(tài)轉(zhuǎn)換到播放狀態(tài)。下面具體介紹播放功能是怎樣設(shè)計(jì)的,其具體流程如圖4-5所示。 當(dāng)播放器接收到播放命令后,會(huì)依次執(zhí)行下面的過程:&l

84、t;/p><p>  (1)檢查播放器的當(dāng)前狀態(tài)是否是暫停狀態(tài)。如果是暫停狀態(tài),那么繼續(xù)播放,如果不是暫停狀態(tài),則執(zhí)行第2步;</p><p>  (2)檢查播放列表中是否有媒體文件,如果沒有則調(diào)用添加歌曲過程進(jìn)行添加,然后再次執(zhí)行本過程進(jìn)行播放;如果播放列表中有文件則執(zhí)行第3步;</p><p>  (3)檢查播放列表索引,判斷是否選中了播放列表的一首MP3來進(jìn)行播放

85、,如果沒有選擇,則選擇播放列表中的第一首后執(zhí)行第4步,如果已經(jīng)選擇了要播放的MP3 則直接執(zhí)行第4步</p><p>  (4) 判斷要播放的MP3在播放列表中的位置,如果是第一首則將上一首按鈕置為無效,否則置為有效;如果是最后一首,則將下一首按鈕置為無效,否則置為有效。</p><p>  圖4-5 播放功能流程圖</p><p><b>  4.4.2

86、 暫停</b></p><p>  當(dāng)用戶播放一個(gè)媒體文件到某一個(gè)特定的點(diǎn)時(shí),由于某些原因需要暫停當(dāng)前媒體文件的播放,這就要求設(shè)計(jì)的媒體播放器具有暫停播放的功能。既然是暫停播放,那么它前面的狀態(tài)就必然是播放狀態(tài),即暫停狀態(tài)只能由播放狀態(tài)轉(zhuǎn)換而來。而這個(gè)狀態(tài)轉(zhuǎn)換的條件,就是在系統(tǒng)播放時(shí)用戶點(diǎn)擊暫停按鈕,暫停功能的流程如圖4-6所示。</p><p>  圖4-6 暫停功能的流程&

87、lt;/p><p>  4.4.3 停止播放</p><p>  停止當(dāng)前MP3文件的播放有三種方式,第一種是當(dāng)播放器播放到當(dāng)前文件的最 后,系統(tǒng)會(huì)自動(dòng)停止播放;第二種是用戶可以點(diǎn)擊停止播放按鈕來停止當(dāng)前媒體文件的播放。進(jìn)入停止?fàn)顟B(tài)的初始狀態(tài)也有兩種:第一種是播放狀態(tài);第二種是暫停狀態(tài),當(dāng)播放器轉(zhuǎn)換為停止?fàn)顟B(tài)后,暫停功能和停止功能都變?yōu)闊o效功能,不能使用,直到轉(zhuǎn)換到播放狀態(tài)。停止功能的設(shè)計(jì)流程

88、如圖4-7所示。 當(dāng)播放器接收到停止命令后,會(huì)執(zhí)行以下過程: (1)設(shè)置各按鈕狀態(tài),播放為有效,暫停和停止置為無效;(2)檢查停止命令是用戶手動(dòng)停止,還是播放器播放完一首MP3后自動(dòng)轉(zhuǎn)換到停止?fàn)顟B(tài)。如果是手動(dòng)停止則使播放控件停止播放,計(jì)時(shí)器停止計(jì)時(shí),并將當(dāng)前播放進(jìn)度置0;如果是自然停止這執(zhí)行第3步;(3)檢查播放模式是否是單曲播放模式,如果是則結(jié)束停止過程,否則執(zhí)行第4步; (4) 如果播放模式是循環(huán)播放且播放結(jié)束的是播放列表中的最后一

89、首,這將播放列表的索引置0,否則直接播放下一首。</p><p>  圖4-7 停止功能流程</p><p><b>  4.4.4 上一首</b></p><p>  上一首是針對(duì)播放列表所定義的操作。它是指用戶對(duì)播放器系統(tǒng)發(fā)送的命令(播 放上一首),然后由播放器系統(tǒng)做出播放上一首的反應(yīng)。因?yàn)樵诒静シ牌飨到y(tǒng)中,如果當(dāng)前播放的MP3文件是播放列

90、表中的第一首時(shí),上一首功能設(shè)置為無效狀態(tài),所以在系統(tǒng)發(fā)送播放上一首命令時(shí),不需要檢查當(dāng)前播放的文件是否是播放列表中的第一文件,而可以執(zhí)行播放上一首的操作。 上一首的具體流程如圖4-8所示。</p><p>  圖4-8 上一首功能流程</p><p><b>  4.4.5 下一首</b></p><p>  同樣,播放下一首也是針對(duì)播放列表所

91、定義的操作。它是指用戶對(duì)播放器系統(tǒng)發(fā) 送播放下一首的命令,然后由播放器系統(tǒng)做出播放下一首的反應(yīng)。同樣,在本播放器系統(tǒng)中,如果當(dāng)前播放的文件是播放列表中最后一個(gè)文件,那么播放下一首功能會(huì)設(shè)置為無效狀態(tài),所以系統(tǒng)在響應(yīng)播放下一首命令時(shí),無需檢查當(dāng)前播放文件是否是播放列表的最后一個(gè)文件。它的具體操作過程是:當(dāng)用戶發(fā)送了播放下一首的命令后,系統(tǒng)就會(huì)停止當(dāng)前正在播放的文件,然后去播放當(dāng)前播放文件的后面一個(gè)文件。下一首功能的流程可參照圖4-8。&l

92、t;/p><p>  4.4.6 打開文件并播放</p><p>  打開文件并播放是用戶通過點(diǎn)擊打開按鈕向系統(tǒng)發(fā)送的命令。當(dāng)系統(tǒng)接收到該命令時(shí),先會(huì)彈出一個(gè)打開文件對(duì)話框,然后由用戶選擇所要打開的MP3文件,把這個(gè)文件添加到播放列表,然后使用播放功能播放該文件。具體的操作流程如圖4-9所示。</p><p>  圖4-9 打開功能操作流程</p><

93、;p>  4.4.7 向列表中添加單首 MP3 文件</p><p>  向播放列表中添加媒體文件,都是在系統(tǒng)的播放列表窗口界面上進(jìn)行操作的,以添加單首MP3文件。具體的添加過程是:當(dāng)系統(tǒng)獲取了一個(gè)添加媒體文件的命令時(shí),會(huì)彈出一個(gè)文件對(duì)話框,等待用戶選擇媒體文件,這時(shí),用戶可以選擇一個(gè)MP3文件。當(dāng)用戶點(diǎn)擊文件對(duì)話框上的打開按鈕以后,用戶所選擇的MP3文件就會(huì)被添加到播放列表中供用戶查看和控制。</p

94、><p>  4.4.8刪除列表中的一首 MP3 文件</p><p>  對(duì)播放列表有添加功能當(dāng)然也必然存在刪除操作。在對(duì)播放列表中的MP3文件進(jìn)行刪除操作時(shí),前提是播放列表中必須有一首MP3文件被選中,否則將不會(huì)有任何事件發(fā)生。其具體操作是:當(dāng)用戶想要?jiǎng)h除一個(gè)MP3文件時(shí),首先用鼠標(biāo)選擇該文件,然后右擊音樂曲目點(diǎn)擊刪除就可以了,剩下的工作由系統(tǒng)完成。其中,系統(tǒng)所做的工作是:記錄當(dāng)前用戶所刪

95、除的文件在列表中的索引,然后根據(jù)這個(gè)索引值刪除掉播放列表中的該索引項(xiàng),然后系統(tǒng)會(huì)自動(dòng)將該項(xiàng)后面的項(xiàng)向前移動(dòng)一位。</p><p>  4.4.9播放器控制窗口上的菜單功能</p><p>  播放器控制窗口上的菜單與播放器控制窗口上的各種控件的功能相對(duì)應(yīng),并增加了一些功能,特別是對(duì)播放器系統(tǒng)的配置這一塊的各種功能。1.打開 該菜單項(xiàng)與打開并播放按鈕的區(qū)別,只在于點(diǎn)擊此選項(xiàng)后選擇的MP3媒體

96、文件只添加到播放列表中,并不自動(dòng)進(jìn)行播放。 2.退出 此功能是在做完結(jié)束前的工作后,關(guān)閉播放器系統(tǒng)。3.歌詞 點(diǎn)擊此菜單項(xiàng)可以LRC歌詞文件與正在播放的MP3文件進(jìn)行關(guān)聯(lián)。4.增大音量 該功能可以多次使用,每次點(diǎn)擊都可以增大播放器系統(tǒng)的輸出音量,本播放器設(shè)置每次增大的音量為最大音量的10%。5.減小音量該功能與增大音量對(duì)應(yīng),同樣可以多次點(diǎn)擊,每次點(diǎn)擊都可以減小播放器系統(tǒng)的 輸出音量,本播放器設(shè)置的是每次減小的音量為最大音量的10%。&l

97、t;/p><p>  5.系統(tǒng)運(yùn)行環(huán)境及效果</p><p>  5.1 系統(tǒng)運(yùn)行環(huán)境</p><p>  本播放器運(yùn)行的軟、硬件環(huán)境如下: </p><p>  1) 軟件環(huán)境 本系統(tǒng)在 Linux Ubuntu 11.10 下調(diào)試通過</p><p>  2) 硬件環(huán)境 處理器:Intel Pentium 4 1.4G

98、Hz 內(nèi)存:512 MB DDR 266 硬盤:40GB</p><p><b>  5.2 運(yùn)行效果</b></p><p>  本播放器系統(tǒng)一共有3個(gè)界面窗口,分別是播放器的主控制窗口、播放列表窗口 和歌詞顯示窗口。在此,將詳細(xì)介紹這些窗口在不同狀態(tài)下的圖示,尤其是播放器的主要播放控制窗口。播放器運(yùn)行時(shí)的整體效果如圖5-1所示:</p><p&

99、gt;  圖5-1 播放器整體運(yùn)行時(shí)效果</p><p>  1.播放狀態(tài)時(shí)播放器主控制窗口界面 此時(shí)播放器的主控制窗口界面如圖5-2所示。</p><p><b>  圖5-2 播放狀態(tài)</b></p><p>  2.暫停狀態(tài)時(shí)播放器的主控制窗口界面 此時(shí)播放器的主控制窗口界面如圖5-3所示。</p><p><

100、;b>  圖5-3 暫停狀態(tài)</b></p><p>  3.停止?fàn)顟B(tài)時(shí)播放的主控制窗口界面 此時(shí)播放器的主控制窗口界面如圖5-4所示</p><p><b>  圖5-4 停止?fàn)顟B(tài)</b></p><p>  5.3 播放器的播放列表窗口界面</p><p>  播放器的列表窗口界面也是由兩部分組成的

101、,第一部分是播放列表項(xiàng)目;第二部分是MP3媒體文件顯示列表。其界面窗口如圖5-5所示。</p><p>  圖5-5 播放器的播放列表窗口界面效果</p><p><b>  結(jié)束語</b></p><p>  面對(duì)軟件市場上的各種各樣的媒體播放器,要設(shè)計(jì)一個(gè)非常優(yōu)秀的并非常有競爭力的MP3音樂播放器,并不是一件容易的事。但我還是設(shè)計(jì)實(shí)現(xiàn)了一個(gè)

102、自制的帶歌詞實(shí)時(shí)顯示的MP3播放器,這不僅僅讓我學(xué)到了很多有關(guān)多媒體方面的知識(shí),還讓我了解到了如何去設(shè)計(jì),并實(shí)現(xiàn)一個(gè)音樂播放器,以及如何實(shí)現(xiàn)播放器的各種功能,尤其是歌詞的實(shí)時(shí)顯示。通過設(shè)計(jì)此系統(tǒng),我學(xué)到了不少有用的知識(shí),這些將對(duì)我今后的學(xué)習(xí)與工作有很大的幫助。首先,通過此播放器系統(tǒng)的設(shè)計(jì),我對(duì)于設(shè)計(jì)開發(fā)一個(gè)軟件系統(tǒng)的工作流程有了進(jìn)一步的認(rèn)識(shí),明白了軟件開發(fā)過程中各個(gè)階段的基本任務(wù),以及各個(gè)階段之間的聯(lián)系,明確了軟件開發(fā)中形成的文檔資料的

103、重要性。 第二,通過此播放器系統(tǒng)的設(shè)計(jì),我基本上掌握了怎樣使用Qt和c++來編寫多媒體應(yīng)用程序。 當(dāng)然,由于這是我第一次進(jìn)行多媒體系統(tǒng)的開發(fā)工作,所開發(fā)出來的系統(tǒng)不可避免地存在著一些不足,我會(huì)在今后的學(xué)習(xí)工作中逐步加以改進(jìn)。在這個(gè)軟件的編制過程中,我參看了大量的書籍與資料,但由于能力水平有限,在程序中肯定有較多不完善的地方??傮w來說,通過本學(xué)期的畢業(yè)設(shè)計(jì),我在帶歌詞實(shí)時(shí)顯示的音樂播放器系統(tǒng)的開發(fā)、Qt及C++編程等方面有了</p&

104、gt;<p><b>  致 謝</b></p><p>  在開發(fā)過程中,我本著將所學(xué)的理論知識(shí)應(yīng)用于實(shí)踐的思想,開發(fā)出高質(zhì)量系統(tǒng)的目的,進(jìn)行了詳細(xì)的調(diào)研,細(xì)致耐心的開發(fā)與設(shè)計(jì),以刻苦鉆研,實(shí)事求是的態(tài)度開發(fā)出本系統(tǒng)。最重要的是通過開發(fā)與設(shè)計(jì),鍛煉了我們分析問題以及進(jìn)行合理規(guī)劃與分析設(shè)計(jì)的能力,同時(shí)對(duì)開發(fā)工具的使用能力也有大幅度提高。我們將所學(xué)的理論知識(shí)結(jié)合到了實(shí)際的應(yīng)用中去

105、,實(shí)際的動(dòng)手能力也有明顯的提升。</p><p>  軟件的開發(fā)是一個(gè)漫長而又細(xì)致的過程,在這個(gè)過程中學(xué)習(xí)到了很多知識(shí)和一些很有用處的溝通方式,感謝學(xué)校,感謝周圍的同學(xué)朋友。本系統(tǒng)能夠順利開發(fā)完成,除了自己的努力外,還與王老師的悉心指導(dǎo)是分不開的。在系統(tǒng)設(shè)計(jì)期間我遇到了很多問題,根據(jù)祝毅鳴的指點(diǎn),查閱相關(guān)資料,才能使我順利攻克一個(gè)個(gè)難關(guān),最終設(shè)計(jì)開發(fā)完成了支持歌詞的音樂播放器系統(tǒng)。其次,我衷心感謝周圍的同學(xué),是他

106、們及時(shí)給我提供很多重要的信息,對(duì)播放器進(jìn)行試用并提出很多修改意見,完善美化了播放器的設(shè)計(jì)。我能夠順利完成畢業(yè)設(shè)計(jì),是我們同學(xué)間團(tuán)結(jié)互助、共勉努力的結(jié)果。再次,深深感謝精心培養(yǎng)教育自己的母校,在母校嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)范下,才培養(yǎng)出了良好的求知精神和勇敢面對(duì)挫折的決心,沒有母校的栽培就沒有今天的一切成績。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]

107、 Marshall P. Cline and Greg A. Lomow, C++ FAQs, Addison-Wesley, 1995 </p><p>  [2] Bruce Eckel, Thinking in C++(C++ 編程思想,劉宗田 等譯),機(jī)械工業(yè)出版社,2000 </p><p>  [3] Steve Maguire, Writing Clean Code(編程精粹

108、,姜靜波 等譯),電子工業(yè)出版社,1993 </p><p>  [4] 蔡志明,盧傳福 精通Qt編程 ,電子工業(yè)出版社 2008</p><p>  [5] Robert B. Murry, C++ Strategies and Tactics, Addison-Wesley, 1993 </p><p>  [6] Steve Summit, C Program

109、ming FAQs, Addison-Wesley, 1996</p><p>  [7] Jasmin Blanchette C++ GUI Programming with QT Second Edition,電子工業(yè)出版社,2008</p><p>  [8](加)布蘭切特,(英)薩默菲爾德 [C.GUI.Qt.4編程(第二版)]電子工業(yè)出版社 2008</p>&l

110、t;p>  [9] 成潔, 盧紫毅 Linux窗口程序設(shè)計(jì)清華大學(xué)出版社2008</p><p>  [10] Kenneth A.Reek C和指針 人民郵電出版社 2003</p><p>  [11] 譚浩強(qiáng) C++程序設(shè)計(jì) 清華大學(xué)出版社2004</p><p>  [12] 楊學(xué)明,劉佳海 面向?qū)ο蟮某绦蛟O(shè)計(jì)C++實(shí)訓(xùn) 科學(xué)出版社 2003</

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論