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

下載本文檔

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

文檔簡介

1、<p>  2009屆本科學(xué)士學(xué)位畢業(yè)論文</p><p>  基于linux下多媒體播放器的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  作者姓名 </b></p><p><b>  指導(dǎo)教師 </b></p><p>  學(xué)科專業(yè) 計(jì)算機(jī)科學(xué)與技術(shù)</p>

2、<p>  二〇一三 年 五月</p><p><b>  目 錄</b></p><p><b>  中文摘要:2</b></p><p><b>  第一章 緒論3</b></p><p>  1.1 研究背景和意義3</p><p&

3、gt;  1.2 系統(tǒng)實(shí)現(xiàn)的主要功能3</p><p>  1.3 論文主要完成的工作4</p><p>  1.4 論文結(jié)構(gòu)4</p><p>  第二章 軟件開發(fā)平臺(tái)及開發(fā)工具的選擇4</p><p>  2.1開發(fā)平臺(tái)的選擇4</p><p>  2.1開發(fā)工具的選擇5</p><

4、p>  第三章 平臺(tái)的構(gòu)建及QT程序的安裝6</p><p>  3.1 Linux系統(tǒng)的安裝6</p><p>  3.3 Phonon庫安裝 :7</p><p>  第四章 電影播放器的系統(tǒng)實(shí)現(xiàn)8</p><p><b>  4.1輸入模塊8</b></p><p>  4

5、.2輸出模塊10</p><p>  4.3插件接口模塊12</p><p>  4.4解碼庫模塊12</p><p>  第五章 各個(gè)功能的具體實(shí)現(xiàn)13</p><p>  5.1界面開發(fā)13</p><p>  5.2 各個(gè)功能的具體實(shí)現(xiàn)15</p><p>  第六章 軟件測(cè)

6、試與思想改進(jìn)17</p><p>  6.1 軟件測(cè)試17</p><p><b>  6.2改進(jìn):17</b></p><p><b>  第七章 結(jié)論17</b></p><p><b>  參考文獻(xiàn):18</b></p><p>  基于

7、linux下電影播放器的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  學(xué)生名:賈曉東指導(dǎo)教師:邵永波</p><p><b>  中文摘要:</b></p><p>  隨著科技的發(fā)展,人們對(duì)生活質(zhì)量的要求越來越高。在試聽享受方面,人們更加關(guān)注便攜式的電影播放設(shè)備的播放器質(zhì)量。因此,國內(nèi)外出現(xiàn)了大量的MP3、MP4、智能手機(jī)、便攜式平板電腦等各種平臺(tái)下的

8、電影播放軟件。但是期中很大一部分電影播放軟件只能播放一種或者幾種簡單的媒體格式,或者不能適用于不同的平臺(tái)。因此,本文在PC平臺(tái)下,實(shí)現(xiàn)一種可以播放多種媒體格式,并且實(shí)現(xiàn)了跨平臺(tái)使用的電影播放軟件。</p><p>  本文主要介紹了在Linux系統(tǒng)用圖形界面工具QT來實(shí)現(xiàn)電影播放器的軟件設(shè)計(jì)方案,提供了對(duì)目前流行的媒體格式文件的支持。</p><p>  關(guān)鍵字:QT Linux 跨平臺(tái)&

9、lt;/p><p><b>  第一章 緒論</b></p><p>  1.1 研究背景和意義</p><p>  隨著計(jì)算機(jī)在各領(lǐng)域的廣泛應(yīng)用,Internet的迅速發(fā)展。各種音頻視頻的軟件在網(wǎng)上隨處可見,于是播放器成為人們?nèi)粘I願(yuàn)蕵凡豢苫蛉钡囊徊糠?。用戶的人?shù)更是達(dá)到了一個(gè)不可思議的數(shù)字。</p><p>  目前主

10、流的電影播放器,其功能越來越龐大,集各種功能于一體,造成了電影播放器的軟件加載很慢,可有可無的功能的整合在播放器軟件運(yùn)行過程中極大的占用了計(jì)算機(jī)的資源,造成了資源的浪費(fèi)和用戶使用上的不便。</p><p>  隨著各項(xiàng)技術(shù)的發(fā)展,越來越多的更先進(jìn)的壓縮算法被提出,導(dǎo)致多媒體格式的多樣化,在這種情況下,人們對(duì)電影播放器的研究越來越深入,出現(xiàn)來許多支持各種壓縮格式的電影播放器,呈現(xiàn)出欣欣向榮的景象。流媒體技術(shù)的廣泛引

11、用,其傳輸協(xié)議也在演化發(fā)展中。如何研制一種開放架構(gòu)的播放器技術(shù),使得該播放器能夠支持各種媒體文件格式和傳輸協(xié)議,是當(dāng)前播放器的一個(gè)重要研究方向。</p><p>  本人作為學(xué)習(xí)軟件工程專業(yè)的一員,對(duì)軟件工程、程序設(shè)計(jì)等理論知識(shí)有了較深的認(rèn)識(shí),同時(shí)也掌握了一定的軟件開發(fā)理論,借助這次畢業(yè)設(shè)計(jì),把這些理論知識(shí)付諸實(shí)踐。結(jié)合上述情況,本人選擇了開發(fā)一個(gè)基于Linux系統(tǒng)的電影播放器的設(shè)計(jì)與實(shí)現(xiàn),不僅能夠?qū)崿F(xiàn)播放常見的

12、音頻視頻格式,而且具有開放性架構(gòu)、可擴(kuò)展的、跨平臺(tái)的電影播放器,滿足一般用戶的需求。</p><p>  1.2 系統(tǒng)實(shí)現(xiàn)的主要功能</p><p>  本播放器的主要任務(wù)和目的是播放一些常見的音頻視頻的格式文件,在功能上達(dá)到簡潔方便,消耗資源少。主要實(shí)現(xiàn)的功能:</p><p>  文件控制,主要用于打開播放文件;</p><p>  播放

13、控制,控制視頻或者音頻的播放狀態(tài);</p><p>  進(jìn)度控制,顯示當(dāng)前視頻的總長度和已播放的長度,可以進(jìn)行鼠標(biāo)拖放進(jìn)度條,跳躍式快速播放;</p><p>  聲音控制,調(diào)整音量的大小,顯示是否靜音。</p><p>  顯示控制,若播放的是視頻文件應(yīng)當(dāng)顯示圖像,可以調(diào)整屏幕是否為全屏,可以進(jìn)行按比例播放,如16:9,4:3,按窗口大小播放等。</p>

14、;<p>  1.3 論文主要完成的工作</p><p>  課題所設(shè)計(jì)的電影播放器基于QT的應(yīng)用程序框架,</p><p>  課題主要完成以下幾個(gè)工作:</p><p>  系統(tǒng)的需求分析和總體設(shè)計(jì):主要包括需求分析和概要設(shè)計(jì);</p><p>  可擴(kuò)展性架構(gòu)的設(shè)計(jì):具有很好的擴(kuò)展性的媒體播放器的軟件架構(gòu);</p&g

15、t;<p>  開發(fā)平臺(tái)的搭建:包括編譯環(huán)境的建立、系統(tǒng)的選擇、QT 的安裝及相應(yīng)的環(huán)境變量配置、MPlayer的后臺(tái)搭建。</p><p>  電影播放器的代碼:主要基于QT對(duì)播放器的界面進(jìn)行開發(fā),并實(shí)現(xiàn)播放的功能。</p><p><b>  1.4 論文結(jié)構(gòu)</b></p><p>  第一章:介紹目前電影播放器的發(fā)展前景,

16、分析了當(dāng)前電影播放器的特點(diǎn)和優(yōu)劣,概述了該論文的主要工作及其結(jié)構(gòu)的安排。</p><p>  第二章:軟件開發(fā)平臺(tái)及開發(fā)工具的選擇</p><p>  對(duì)現(xiàn)有操作系統(tǒng)的特點(diǎn)進(jìn)行介紹并加以比較從而確定本軟件所使用的操作系統(tǒng)、QT開發(fā)工具進(jìn)行了概念性的描述和介紹。</p><p>  第三章:平臺(tái)構(gòu)建及應(yīng)用程序的安裝。</p><p>  第四章

17、:電影播放器的系統(tǒng)設(shè)計(jì)及相關(guān)模塊的功能。</p><p>  第五章:各個(gè)功能的實(shí)現(xiàn)</p><p>  電影播放器界面開發(fā)的詳細(xì)過程和播放器相關(guān)功能的實(shí)現(xiàn)。</p><p>  第六章:軟件測(cè)試和改進(jìn)思想。</p><p><b>  第七章:結(jié)論</b></p><p>  對(duì)電影播放器的整體

18、開發(fā)工作進(jìn)行了總結(jié)和展望。</p><p><b>  第八章:致謝。</b></p><p>  第二章 軟件開發(fā)平臺(tái)及開發(fā)工具的選擇</p><p>  2.1開發(fā)平臺(tái)的選擇</p><p>  在系統(tǒng)的設(shè)計(jì)與開發(fā)中,軟件開發(fā)平臺(tái)及開發(fā)工具是關(guān)鍵,下面介紹下開發(fā)平臺(tái)的選擇。</p><p> 

19、 Linux系統(tǒng)有兩種不同的含義。從技術(shù)角度,Linux指的是由Linus Torvalds維護(hù)的開放源代碼UNIX類操作系統(tǒng)的內(nèi)核。然而,目前大多數(shù)人用它表示以Linux內(nèi)核為基礎(chǔ)的整個(gè)操作系統(tǒng)。從這種意義講,Linux指的是包含內(nèi)核、系統(tǒng)工具、完整的開發(fā)環(huán)境和應(yīng)用的類UNIX操作系統(tǒng)。</p><p>  Linux是UNIX操作系統(tǒng)的克隆,可以免費(fèi)使用,遵循GPL聲明,可以自由修改和傳播。與Windows等

20、商業(yè)操作系統(tǒng)不同,Linux完全是一個(gè)自由的操作系統(tǒng)。Linux內(nèi)核最初是由芬蘭籍大學(xué)生Linus Torvalds和通過Internet組織起來的開發(fā)小組完成的,其目標(biāo)是與POSIX(Portable Operating System Interface,可移植操作系統(tǒng)界面)兼容。Linux包含了人們希望操作系統(tǒng)擁有的所有功能特性,包括真正的多任務(wù)、虛擬內(nèi)存、世界上最快的TCP/IP驅(qū)動(dòng)程序、共享庫和多用戶支持(這意味著成百上千的人能

21、在同一時(shí)刻通過網(wǎng)絡(luò)、Internet或連接在計(jì)算機(jī)串行口上的終端或筆記本電腦/微機(jī)使用同一臺(tái)計(jì)算機(jī))。</p><p>  Linux現(xiàn)在是個(gè)人計(jì)算機(jī)和工作站上的UNIX類操作系統(tǒng)。按照層次結(jié)構(gòu)的觀點(diǎn),在同一種硬件平臺(tái)上,Linux可以提供和UNIX相同的服務(wù),即相同的用戶級(jí)和程序員級(jí)接口。Linux絕不是簡單化的UNIX,相反,Linux是強(qiáng)有力和具有創(chuàng)新意義的UNIX操作系統(tǒng),它不僅繼承了UNIX的特征,而且

22、在許多方面超過了UNIX。作為UNIX類操作系統(tǒng),Linux具有下列基本特征:</p><p> ?。?)是真正的多用戶、多任務(wù)操作系統(tǒng)。</p><p> ?。?)是符合POSIX標(biāo)準(zhǔn)的系統(tǒng)。</p><p>  (3)提供具有內(nèi)置安全措施的分層的文件系統(tǒng)。</p><p> ?。?)提供shell命令解釋程序和編程語言。</p>

23、;<p>  (5)提供強(qiáng)大的管理功能,包括遠(yuǎn)程管理功能。</p><p> ?。?)具有內(nèi)核的編程接口。</p><p> ?。?)具有圖形用戶接口。</p><p>  (8)具有大量有用的實(shí)用程序和通信、聯(lián)網(wǎng)工具。</p><p> ?。?)具有面向屏幕的編程軟件。</p><p>  大量的高級(jí)程

24、序設(shè)計(jì)語言已移植到Linux系統(tǒng)上,因而它是理想的應(yīng)用軟件開發(fā)平臺(tái),而且,在Linux系統(tǒng)下開發(fā)的應(yīng)用程序具有很好的可移植性。同時(shí),Linux還有許多獨(dú)到之處:</p><p> ?。?)源代碼幾乎全部都是開放的。</p><p> ?。?)可以運(yùn)行在許多硬件平臺(tái)上。</p><p> ?。?)不僅可以運(yùn)行許多自由發(fā)布的應(yīng)用軟件,還可以運(yùn)行許多商品化的應(yīng)用軟件。&l

25、t;/p><p>  (4)強(qiáng)大的網(wǎng)絡(luò)功能。</p><p>  2.1開發(fā)工具的選擇</p><p>  Qt是一個(gè)完整的C++應(yīng)用程序開發(fā)框架。它包含一個(gè)類庫,和用于跨平臺(tái)開發(fā)及國際化的工具。GUI工具包(或GUI庫)是構(gòu)造圖形用戶界面(程序)所使用的一套按鈕、滾動(dòng)條、菜單和其他對(duì)象的集合。提供一個(gè)友好的用戶界面是GUI設(shè)計(jì)的一個(gè)宗旨,減少用戶的負(fù)擔(dān)、滿足用戶的需求

26、、界面和用戶的互動(dòng)交流也是在GUI設(shè)計(jì)中其中必不可少的。一個(gè)出色的界面不僅能夠清晰的勾畫出所依托系統(tǒng)的大體結(jié)構(gòu),并且能夠大大減少操作的工作量和復(fù)雜性。在UNIX系統(tǒng)里,有很多可供使用的GUI庫,其中之一就是Qt庫----一個(gè)基于C++編程語言的工具包。它具有以下幾個(gè)優(yōu)點(diǎn)。</p><p><b> ?。?)可移植性</b></p><p>  Qt的一個(gè)主要設(shè)計(jì)目標(biāo)是

27、使跨平臺(tái)程序開發(fā)更加直觀,便捷并富有趣味性。為了實(shí)現(xiàn)這一目標(biāo),Qt提取了窗口和操作系統(tǒng)的底層基礎(chǔ)構(gòu)造函數(shù),為程序員提供了有意義的一致邏輯界面。Qt API在所有支持的平臺(tái)上都是相同的,Qt工具在這些平臺(tái)上的使用方式也一致, 因而Qt應(yīng)用的開發(fā)和部署與平臺(tái)無關(guān)。 </p><p>  Qt應(yīng)用程序編譯自同一套源代碼,可以在所有支持的平臺(tái)上進(jìn)行本地化運(yùn)行: </p><p> ?、貿(mào)t/Win

28、dows (Microsoft Windows XP,2000,NT 4,Me/98/95)</p><p> ?、赒t/X11 (Linux,Solaris,HP-UX,IRIX,AIX,及其它Unix variants)</p><p>  ③Qt/Mac (Mac OS X)</p><p> ?、躋t/Embedded (嵌入式Linux)</p>

29、;<p> ?。?)易用性和健全性</p><p>  Qt開發(fā)者只需學(xué)習(xí)一個(gè)API,就能編寫在所有平臺(tái)下運(yùn)行的程序。統(tǒng)一的跨平臺(tái)API使得程序員只需側(cè)重于程序本身的增值創(chuàng)新,不用擔(dān)心基礎(chǔ)代碼構(gòu)建和多平臺(tái)應(yīng)用的維護(hù)和管理。Qt對(duì)不同平臺(tái)(Unix, Windows, and Mac)的專門API進(jìn)行了封裝,如文件處理、網(wǎng)絡(luò)(操作,協(xié)議),進(jìn)程處理、線程、數(shù)據(jù)庫訪問等。Qt軟件可以實(shí)現(xiàn)多編譯器的平穩(wěn)編

30、譯,因此用Qt構(gòu)建的程序通常是非常健全的。Qt通過對(duì)所有子窗口內(nèi)存單元分配的處理,簡化了內(nèi)存管理。程序員只需要側(cè)重于頂層對(duì)象的處理。Qt是一個(gè)C++工具包,它由幾百個(gè)C++類構(gòu)成,你在程序中可以使用這些類。因?yàn)镃++是面向?qū)ο蟮木幊蹋∣bject-Oriented Programming,OOP)語言,而Qt是基于C++構(gòu)造,所以,Qt也具有OOP的所有優(yōu)點(diǎn)。</p><p><b> ?。?)運(yùn)行速度

31、</b></p><p>  Qt非常容易使用,且具有很快的速度。這兩方面通常不可能同時(shí)達(dá)到。但當(dāng)談?wù)換t時(shí),其易用性和快速則是密不可分的。這一優(yōu)點(diǎn)要?dú)w功于Qt開發(fā)者的辛苦工作,他們花費(fèi)了大量的時(shí)間來優(yōu)化他們的產(chǎn)品。另一個(gè)原因是它實(shí)現(xiàn)方式。Qt是一個(gè)GUI仿真工具包,這意味著它不使用任何本地工具包作調(diào)用。Qt使用各自平臺(tái)上的低級(jí)繪圖函數(shù)仿真MS Windows和Motif(商用UNIX的標(biāo)準(zhǔn)GUI庫)

32、,當(dāng)然,這能夠提高程序速度。</p><p>  由于Qt是基于C++,速度快,易于使用,并具有很好的可移植性。所以,當(dāng)需要開發(fā)UNIX和(或)MS Windows環(huán)境下的GUI程序時(shí),Qt是最佳選擇。</p><p>  第三章 平臺(tái)的構(gòu)建及QT程序的安裝</p><p>  3.1 Linux系統(tǒng)的安裝</p><p>  U 盤中安裝

33、Ubuntu,在安裝的時(shí)候像正常在硬盤上安裝 Ubntu 一樣,從USB Live 盤引導(dǎo)安裝程序,當(dāng)然 U 盤也要插在機(jī)器上。關(guān)鍵在于分區(qū)的時(shí)候要使用手動(dòng)分區(qū),然后在 Boot Loader 上選擇安裝到 U 盤,其它的就與硬盤安裝一樣一步步下去就可以了,安裝完后可以在 BIOS 中設(shè)置通過 USB 設(shè)備來啟動(dòng)。</p><p>  QT程序在linux下的安裝;</p><p>  3

34、.2.1 下載Qt源碼包到本機(jī),然后解壓縮:</p><p>  (1).下載qt-sdk-linux-x86-opensource-2010.05.1.bin</p><p>  (2).在終端切換至qt-x11-free-3.2.1.tar.gz所在目錄下,執(zhí)行:</p><p>  tar zxvf qt-sdk-linux-x86-opensource-20

35、10.05.1 -C /usr/ qt-sdk-linux-x86-opensource-2010.05.1 </p><p>  3.2.2 進(jìn)入用戶主目錄編輯該目錄下的.bash_profile文件,并設(shè)置Qt環(huán)境變量,在這里我進(jìn)入root用戶設(shè)置環(huán)境變量。</p><p>  #vi /root/.bash_profile //打開root用戶.bash_profile文件</

36、p><p>  在root用戶.bash_profile文件中設(shè)置環(huán)境變量,在此文件里面添加如下內(nèi)容:</p><p>  QTDIR=/usr/local/ qt-sdk-linux-x86-opensource-2010.05.1PATH=$QTDIR/bin:$PATH</p><p>  MANPATH=$QTDIR/doc/man:$MANPATH</

37、p><p>  LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH</p><p>  export QTDIR PATH MANPATHLD_LIBRARY_PATH</p><p>  添加完上面信息后按ESC鍵,“Shife+:”組合鍵回到vi編輯器命令行狀態(tài),輸入wq!(強(qiáng)制保存退出)</p><p>

38、  3.2.3 添加完環(huán)境變量后,使環(huán)境變量立即生效:#source /root/.bash_profile</p><p>  3.2.4進(jìn)入Qt解壓縮的目錄:</p><p>  #cd $QTDIR或#cd /usr/local/ qt-sdk-linux-x86-opensource-2010.05.1.bin都可以,因?yàn)樵?root/.bash_profile文件已經(jīng)定義了環(huán)境變

39、量QTDIR=/usr/local/ qt-sdk-linux-x86-opensource-2010.05.1.bin和export QTDIR 。</p><p>  3.2.5 使用configure工具來構(gòu)建Qt庫和它提供的工具:./configure(./configure --help 配置選擇的列表。例:-thread選項(xiàng)來創(chuàng)建這個(gè)庫的一個(gè)多純種版本。)</p><p>  

40、3.2.6 最后一步就要進(jìn)Qt安裝編譯時(shí)間了</p><p>  3.3 Phonon庫安裝 : </p><p>  進(jìn)入源代碼的phonon目錄,在終端輸入“make;make install”;</p><p><b>  后端插件的安裝 :</b></p><p>  (1) 下載phonon-mpl

41、ayer;</p><p>  (2) 返回phonon-mplaye 目錄,編譯(qmake;make)生成phonon_backend/libphonon_mplayer.so動(dòng)態(tài)鏈接庫。</p><p>  (3) libphonon_mplayer.so拷貝到</p><p>  $QTDIR/plugins/phonon_backend/;</p&

42、gt;<p>  第四章 電影播放器的系統(tǒng)實(shí)現(xiàn)</p><p>  播放器的整體流程是,用戶通過圖形界面控制,輸入要播放的文件按,然后調(diào)用音頻解碼器,最后,將解碼后的數(shù)據(jù)通過幀緩沖輸出到輸出設(shè)備上去。這整個(gè)過程總的來說主要由輸入、解碼、輸出這三個(gè)部分組成,他們之間可以說既相互聯(lián)系又相互獨(dú)立。從功能上來說,他們各自所執(zhí)行的功能是完全不同的,是互相獨(dú)立的;從另一方面來看,音頻視頻所需要額數(shù)據(jù)來源源于輸入

43、的文件,而輸出到輸出設(shè)備上數(shù)據(jù)源又來源于音頻視頻解碼后獲得的數(shù)據(jù),他們又是相互緊密聯(lián)系的。為此,可以將他們之間相互的聯(lián)系交給一個(gè)專門的模塊負(fù)責(zé),即插件接口模塊。這樣,一個(gè)播放器除了界面部分之外,可以分成四個(gè)獨(dú)立模塊:輸入模塊、輸出模塊、插件接口模塊和解碼器模塊.在這里可擴(kuò)展性主要體現(xiàn)在插件接口模塊和解碼器模塊??梢詫⒁纛l視頻的解碼程序以插件的形式封裝在解碼器模塊中,對(duì)不同格式的媒體文件可以使用解碼器模塊中封裝的對(duì)應(yīng)的解碼器插件。同時(shí),為

44、了調(diào)用的方便,可以在插件接口模塊和解碼器模塊之間采用一套統(tǒng)一的解碼器封裝接口。</p><p>  播放器主程序只需要調(diào)用接口函數(shù)就可以控制媒體數(shù)據(jù)的播放了,根本不許要了解媒體數(shù)據(jù)的格式以及解碼算法,這使得播放器的主程序與解碼器模塊具有相對(duì)獨(dú)立性。當(dāng)需要增加一種新的媒體播放類型時(shí),只需要按照封裝接口,編寫要添加的解碼器插件即可,而不需要對(duì)播放器的主程序做任何改動(dòng),這就使得播放器的可擴(kuò)展性增強(qiáng)來。至于在解碼器選擇方

45、面,可以將解碼器種的所有解碼插件通過注冊(cè)函數(shù)注冊(cè)到插件接口模塊上,這樣,就可以根據(jù)輸入文件的擴(kuò)展名和文件的頭信息選擇合適的解碼器,之后實(shí)現(xiàn)媒體數(shù)據(jù)的播放。</p><p><b>  4.1輸入模塊</b></p><p>  輸入模塊主要是響應(yīng)用戶通過圖形界面發(fā)出的文件打開命令,它將獲得待播放文件的文件路徑和文件名。在此之后,它將首先判斷文件的路進(jìn)是否合法,文件是否

46、為空,如果文件路進(jìn)不合發(fā)或文件為空,輸入模塊將退出執(zhí)行,其他模塊和界面將沒有變化。如果文件路徑合法同時(shí)文件不為空,它將開始對(duì)播放進(jìn)行初始化,初始化結(jié)束后,它將向插件接口模塊發(fā)出信號(hào),通過其查找該文件的可用解碼器,為文件解碼做好準(zhǔn)備。輸入模塊的數(shù)據(jù)處理流程圖如下</p><p>  播放初始化主要是檢查播放器當(dāng)前是否有文件在播放,如果有則調(diào)用其相應(yīng)的停止播放函數(shù),使其停止當(dāng)前文件的播放并關(guān)閉已打開的解碼器,同時(shí)清空

47、音頻緩沖區(qū),關(guān)閉對(duì)音頻設(shè)備的引用。在此處,對(duì)于音頻緩沖區(qū)和音頻視頻設(shè)備可以通過對(duì)互斥信號(hào)量加減鎖來進(jìn)行管理。即,在調(diào)用停止函數(shù)時(shí),把控制音頻緩沖區(qū)和音頻設(shè)備的信號(hào)量加鎖,當(dāng)清空音頻緩沖區(qū)和關(guān)閉音頻設(shè)備之后,再對(duì)控制信號(hào)量進(jìn)行解鎖。在此之后,可判斷是否存在可用的解碼器,如果不存在,則結(jié)束播放初始化;如果存在,則再判斷是否有可用的音頻通道和視頻通道;如果有則進(jìn)行讀取文件長度,獲取比特率等一些基本的處理,如果沒有則結(jié)束初始化。</p&g

48、t;<p><b>  4.2輸出模塊</b></p><p>  輸出模塊主要是將通過解碼器解碼之后的音頻和視頻數(shù)據(jù)傳輸?shù)斤@示器和揚(yáng)聲器(耳機(jī))等輸出設(shè)備輸出。原始數(shù)據(jù)通過分離器分成音頻數(shù)據(jù)和視頻數(shù)據(jù),之后它們分別調(diào)用音頻解碼器和視頻解碼器進(jìn)行解碼,對(duì)于音頻數(shù)據(jù)就會(huì)驚醒重采樣,對(duì)于視頻數(shù)據(jù)就會(huì)讀取相應(yīng)的幀,進(jìn)行逐幀解碼,最后經(jīng)過采樣的音頻數(shù)據(jù)和經(jīng)過渲染覆蓋的視頻數(shù)據(jù)會(huì)進(jìn)行音視

49、頻同步,再分別通過音頻輸出設(shè)備和視頻輸出設(shè)備輸出。為此,根據(jù)輸出內(nèi)容的不同可以將輸出模塊劃分為音頻輸出和視頻輸出兩個(gè)部分,這兩個(gè)部分基本上是相互獨(dú)立輸出的,因此,可以播放單獨(dú)的聲音文件。</p><p>  音頻輸出的主要步驟:</p><p>  1.判斷音頻輸出設(shè)備是否已經(jīng)就緒;</p><p>  2.檢查音頻緩沖區(qū)中是否有已經(jīng)解碼過的音頻數(shù)據(jù);</p&

50、gt;<p>  3.調(diào)用音頻輸出設(shè)備打開函數(shù),打開音頻輸出設(shè)備;</p><p>  4.調(diào)用寫入函數(shù)把音頻緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)送到音頻輸出設(shè)備</p><p>  5.所有數(shù)據(jù)輸出完畢后關(guān)閉音頻輸出設(shè)備和清空音頻緩沖區(qū);</p><p>  音頻數(shù)據(jù)的輸出流程圖如下:</p><p>  視頻輸出的主要步驟:</p>

51、<p>  1.根據(jù)屏幕尺寸創(chuàng)建兩個(gè)對(duì)象,一個(gè)用于存放當(dāng)前幀,一個(gè)用于旋轉(zhuǎn)幀;</p><p>  2.檢查解碼以后的視頻數(shù)據(jù)是否已經(jīng)準(zhǔn)備就緒;</p><p>  3.判斷當(dāng)前幀是否可見,若不可見直接等待可輸出的下一幀;</p><p>  4.獲取視頻畫面的長和寬,以便來設(shè)置輸出畫面的長寬比,如果文件畫面尺寸比軟件的畫面大,程序會(huì)自動(dòng)適應(yīng)文件的畫面

52、尺寸,當(dāng)用戶選擇全屏播放時(shí),會(huì)按照比例把畫面擴(kuò)大至全屏,當(dāng)然用戶也可以用拖拽來自定義播放畫面的大小。</p><p>  5.把等待輸出的區(qū)域上空清空,并且為創(chuàng)建的對(duì)象分配區(qū)域。</p><p>  6.將準(zhǔn)備好的幀發(fā)送到步驟5分配好的區(qū)域,以便輸出到顯示設(shè)備上。</p><p>  整個(gè)視頻輸出的流程如下圖:</p><p><b&

53、gt;  4.3插件接口模塊</b></p><p>  插件接口理模塊是整個(gè)播放器的核心,它將輸入模塊、輸出模塊和解碼模塊這三個(gè)模塊緊密地聯(lián)系在一起。它主要是完成對(duì)具體解碼器的操作,從而在輸入和輸出模塊之間搭起了一座橋梁。在該模塊要完成的工作有:通過輸入文件的擴(kuò)展名和文件的頭部信息來判斷該輸入文件是否被播放器所支持;對(duì)解碼模塊種的所有解碼器進(jìn)行注冊(cè);能夠獲取播放文件的信息;能夠停止播放文件,并作出相

54、應(yīng)的處理;能夠調(diào)用解碼器對(duì)音頻采樣數(shù)據(jù)進(jìn)行讀?。荒軌蛘{(diào)用解碼器對(duì)視頻幀進(jìn)行讀取等。</p><p><b>  4.4解碼庫模塊</b></p><p>  解碼庫模塊的主要作用視為插件接口模塊提供解碼器,對(duì)音頻和視頻的已壓縮數(shù)據(jù)進(jìn)行解碼。該模塊采用統(tǒng)一的接口將所有解碼器的程序進(jìn)行來封裝,也采用了動(dòng)態(tài)加載的方式實(shí)現(xiàn)來各種數(shù)據(jù)的解碼。本程序采用Phonon 庫,Phon

55、on框架實(shí)質(zhì)上分4個(gè)部分程序,Phonon庫,Phonon后端插件Phonon_backend,和真正的后端。Phonon提供了一套API接口,這套接口可以給程序調(diào)用,同時(shí)也是給編寫后端插件提供一個(gè)規(guī)范。程序完全不用知道最后誰來播放程序的音頻文件,誰來解碼我的視頻文件,或者播放的是哪個(gè)設(shè)備。</p><p>  第五章 各個(gè)功能的具體實(shí)現(xiàn)</p><p><b>  5.1界面開

56、發(fā)</b></p><p>  在界面開發(fā)上,QT有QT設(shè)計(jì)師。它提供了QT基本的可繪制窗口部件,比如:layouts布局,Buttons按鈕,Item Views ,Item Widget等窗口部件。在QT設(shè)計(jì)師種,只需要通過鼠標(biāo)點(diǎn)擊拖放這些窗口部件,就能夠高效快速的實(shí)現(xiàn)GUI界面的設(shè)計(jì)。雖然這樣給我們提供來一些方便,但由于它是通過人的觀察和感覺來擺放窗口部件的位置,導(dǎo)致在實(shí)際布局上肯定有一定差距。

57、因此,在本程序中,在界面的開發(fā)上采用了代碼和QT設(shè)計(jì)師來共同開發(fā),主界面上采用來純代碼的編寫,子界面(設(shè)置界面)通過QT設(shè)計(jì)師來實(shí)現(xiàn)。</p><p>  本程序的主界面包括的窗口部件包口:菜單欄、Button按鈕、進(jìn)度條等。在界面的布局上采用來了布局管理器方式,這種方式為窗口部件提供了有感知的默認(rèn)值,可以隨著窗口部件的大小變化,對(duì)子窗口部件的大小和位置作出適當(dāng)?shù)恼{(diào)整。所以布局管理器方式是對(duì)設(shè)計(jì)圖形化用戶界面、組

58、織管理界面窗口部件的最好的方法。布局管理器方式主要有四種管理器:水平布局管理器(QHBoxLayout),按水平的方向組織管理窗口部件;垂直布局管理器(QVBoxLayout),按垂直方向管理窗口部件;網(wǎng)格布局管理器(QGridLayout),按二位網(wǎng)格方式組織管理窗口部件;棧布局管理器(QStackedLayout),按照一種類似于棧的方式組織管理窗口部件,在某一時(shí)刻只有一種窗口部件是可見的。在本程序種界面的設(shè)計(jì)采用了基本的水平布局管

59、理器(QHBoxLayout)和垂直布局管理器(QVBoxLayout)。</p><p>  界面的詳細(xì)開發(fā)過程:</p><p>  1.使主窗口MediaPlayer繼承父窗口QWidget</p><p>  class MediaPlayer : public Qwidget{...}</p><p>  2,設(shè)置窗口標(biāo)題為Medi

60、aPlayer。</p><p>  setWindowTitle(tr("media player"));</p><p>  3.添加菜單欄,openbutton,在openbutton下添加子菜單</p><p>  openButton->setIcon(style()->standardIcon(QStyle::SP_Dia

61、logOpenButton));</p><p>  4.添加背景圖片:</p><p>  setStyleSheet("border-image:url(:/images/screen.png) ; border-width:3px");</p><p><b>  5.添加進(jìn)度條。</b></p>&l

62、t;p>  Phonon::Seekslider(this)</p><p>  6.添加控制按鈕。包括rewindbutton、Play(pause)、forwarbutton、volume。</p><p>  rewindButton = new QPushButton(this);</p><p>  playButton = new QPushBut

63、ton(this);</p><p>  forwardButton = new QPushButton(this);</p><p>  7.界面的整體布局是先采用水平布局管理器QHBoxLayout對(duì)打開按鈕、控制按鈕、聲音進(jìn)度條進(jìn),之后采用垂直布局管理器QVBoxLayout對(duì)進(jìn)度條和以布局好的進(jìn)行布局</p><p>  QHBoxLayout *layou

64、t = new QHBoxLayout();</p><p>  QVBoxLayout *vLayout = new QVBoxLayout(this);</p><p>  8.setting界面采用QT設(shè)計(jì)師來實(shí)現(xiàn),具體布局如圖顯示:</p><p>  5.2 各個(gè)功能的具體實(shí)現(xiàn)</p><p><b>  1.文件打開功能

65、。</b></p><p>  為了方便開發(fā)人員對(duì)一些特定功能的對(duì)話框進(jìn)行編程,QT提供來一套標(biāo)準(zhǔn)的通用對(duì)話框,它可以限制用戶只能打開已經(jīng)存在的文件,也可以允許用戶輸入一個(gè)新的文件名;此外,過濾器的使用,給出來只能顯示符合特殊標(biāo)準(zhǔn)的文件的限制。在這里使用來兩種打開文件的方法</p><p>  1選擇一個(gè)或者多個(gè)文件以及目錄,如下圖所示:</p><p>

66、;  MediaPlayer::setFile(const QString &fileName){…}</p><p>  2 也可以輸入文件名或者路徑,如下圖所示:</p><p>  MediaPlayer::setLocation(const QString& location)</p><p>  3播放,暫停,前進(jìn)后退功能</p>

67、;<p>  在本程序是經(jīng)過動(dòng)態(tài)鏈接庫的形式調(diào)用軟件解碼器的。為此必須先加載動(dòng)態(tài)鏈接庫,然后當(dāng)加載成功后,才調(diào)用相應(yīng)的函數(shù)。</p><p>  4改變播放畫面尺寸功能的實(shí)現(xiàn)</p><p>  在播放畫面上雙擊鼠標(biāo),或者在open子菜單中的full screen按鈕,都可以實(shí)現(xiàn)全屏播放的功能。</p><p>  MediaVideoWidget::

68、setFullScreen(bool enabled);</p><p>  MediaVideoWidget::mouseDoubleClickEvent(QMouseEvent *e);</p><p>  5音量控制功能的實(shí)現(xiàn)</p><p>  在音量控制上,使用的是Phonon下的Volumesilder控件,通過單擊右側(cè)的聲音可以實(shí)現(xiàn)靜音的控制,再右邊的

69、slider控件可以完成聲音大小的控制。</p><p>  volume = new Phonon::VolumeSlider(&m_AudioOutput);</p><p>  第六章 軟件測(cè)試與思想改進(jìn)</p><p><b>  6.1 軟件測(cè)試</b></p><p>  軟件測(cè)試主要分為以下幾

70、個(gè)方面:</p><p><b>  文件是否打開正常;</b></p><p>  播放的文件能否正常播放;</p><p>  聲音控制能否正常控制;</p><p>  畫面和聲音能否同步播放;</p><p>  全屏播放、按比例改變畫面尺寸能否正常運(yùn)行;</p><p

71、>  改變播放速度時(shí),聲音和畫面的同步率;</p><p><b>  6.2改進(jìn):</b></p><p>  電影播放器的大部分功能已經(jīng)實(shí)現(xiàn),并且按照預(yù)期目標(biāo)完成了一個(gè)實(shí)用的電影播放器軟件。但由于在設(shè)計(jì)之初的疏漏和時(shí)間上的倉促,電影播放器存在以下幾個(gè)不足之處需要完善:</p><p>  軟件中沒有實(shí)現(xiàn)播放列表功能;</p>

72、;<p>  軟件沒有觀看記錄的功能</p><p><b>  第七章 結(jié)論</b></p><p>  本文介紹了一種在Linux平臺(tái)下的電影播放器的設(shè)計(jì)與實(shí)現(xiàn),全文在整體結(jié)構(gòu),軟件平臺(tái)做了詳細(xì)的說明與解釋,實(shí)現(xiàn)部分主要是通過Linux下的QT4對(duì)電影播放器進(jìn)行界面和功能來進(jìn)行實(shí)現(xiàn)的。</p><p>  本文主要完成了以下課

73、題的研究:</p><p>  首先,確定了軟件開發(fā)的系統(tǒng),及選擇的開發(fā)工具;</p><p>  其次,對(duì)操作系統(tǒng)和QT及QT/Phonon的安裝進(jìn)行了說明;</p><p>  再次,進(jìn)行了系統(tǒng)的整體設(shè)計(jì),及各個(gè)功能的實(shí)現(xiàn)。</p><p>  另外,在緒論中提到,當(dāng)前大部分的電影播放器對(duì)不同平臺(tái)的支持較差,加之Linux、Windows

74、,及MAC的平臺(tái)的迅速發(fā)展,為了適應(yīng)這種情況,在本文中設(shè)計(jì)并實(shí)現(xiàn)了一款可以跨平臺(tái)的電影播放器。</p><p>  通過本文上述的工作,完成了課題操作系統(tǒng),編程語言的選擇、環(huán)境的搭建、及總體設(shè)計(jì),軟件設(shè)計(jì),播放器界面功能的設(shè)計(jì)與開發(fā),基本實(shí)現(xiàn)了跨平臺(tái)性和可擴(kuò)展性架構(gòu)的設(shè)計(jì)。當(dāng)然,本文中的電影播放器也存在這許多不足和有待改進(jìn)之處,比如電影播放器播放列表,使用記錄的功能,快捷鍵有時(shí)會(huì)出現(xiàn)錯(cuò)誤等。</p>

75、<p>  綜上所述,本文中軟件基本達(dá)到了預(yù)期的目標(biāo),對(duì)產(chǎn)品的跨平臺(tái)性進(jìn)行了相應(yīng)的提高,同時(shí)對(duì)這次設(shè)計(jì)中的一些缺陷在今后的工作中還有待進(jìn)一步的提高。</p><p><b>  第八章 致謝</b></p><p>  大學(xué)本科的學(xué)習(xí)生活即將結(jié)束。在此,我要感謝所有曾經(jīng)教導(dǎo)過我的老師和關(guān)心過我的同學(xué),他們?cè)谖页砷L過程中給予了我很大的幫助。本文能夠順利完成,

76、要特別感謝我的導(dǎo)師xx老師,感謝各位xx的老師的關(guān)心和幫助。</p><p>  最后向所有關(guān)心和幫助過我的人表示真心的感謝。</p><p><b>  參考文獻(xiàn):</b></p><p>  [1].鄭莉,董江舟. C++語言程序設(shè)計(jì)(第4版) , 清華大學(xué)出版社</p><p>  [2].李博軒. Vis

77、ual C + + 多媒體開發(fā)指南[M] , 清華大學(xué)出版社, 2000.</p><p>  【3】.倪繼利. Qt及Linux操作系統(tǒng)窗口設(shè)計(jì) , 電子工業(yè)出版社</p><p>  【4】.蔡志明. 精通Qt4編程(第2版) , 電子工業(yè)出版社</p><p>  【5】.布蘭切特(英)薩默菲爾德 C++ GUI Qt 4編程(第二版

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論