版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 2009屆本科學士學位畢業(yè)論文</p><p> 基于linux下多媒體播放器的設計與實現(xiàn)</p><p> 作者姓名 賈曉東</p><p> 指導教師 邵永波</p><p> 學科專業(yè) 計算機科學與技術</p><p> 二〇一三 年 五月</p>
2、<p><b> 目 錄</b></p><p><b> 中文摘要:2</b></p><p><b> 第一章 緒論3</b></p><p> 1.1 研究背景和意義3</p><p> 1.2 系統(tǒng)實現(xiàn)的主要功能3</p>&
3、lt;p> 1.3 論文主要完成的工作4</p><p> 1.4 論文結構4</p><p> 第二章 軟件開發(fā)平臺及開發(fā)工具的選擇4</p><p> 2.1開發(fā)平臺的選擇4</p><p> 2.1開發(fā)工具的選擇5</p><p> 第三章 平臺的構建及QT程序的安裝6</p&
4、gt;<p> 3.1 Linux系統(tǒng)的安裝6</p><p> 3.3 Phonon庫安裝 :7</p><p> 第四章 電影播放器的系統(tǒng)實現(xiàn)8</p><p><b> 4.1輸入模塊8</b></p><p> 4.2輸出模塊10</p><p> 4
5、.3插件接口模塊12</p><p> 4.4解碼庫模塊12</p><p> 第五章 各個功能的具體實現(xiàn)13</p><p> 5.1界面開發(fā)13</p><p> 5.2 各個功能的具體實現(xiàn)15</p><p> 第六章 軟件測試與思想改進17</p><p> 6
6、.1 軟件測試17</p><p><b> 6.2改進:17</b></p><p><b> 第七章 結論17</b></p><p><b> 參考文獻:18</b></p><p> 基于linux下電影播放器的設計與實現(xiàn)</p><
7、p> 學生名:賈曉東指導教師:邵永波</p><p><b> 中文摘要:</b></p><p> 隨著科技的發(fā)展,人們對生活質量的要求越來越高。在試聽享受方面,人們更加關注便攜式的電影播放設備的播放器質量。因此,國內外出現(xiàn)了大量的MP3、MP4、智能手機、便攜式平板電腦等各種平臺下的電影播放軟件。但是期中很大一部分電影播放軟件只能播放一種或者幾種簡
8、單的媒體格式,或者不能適用于不同的平臺。因此,本文在PC平臺下,實現(xiàn)一種可以播放多種媒體格式,并且實現(xiàn)了跨平臺使用的電影播放軟件。</p><p> 本文主要介紹了在Linux系統(tǒng)用圖形界面工具QT來實現(xiàn)電影播放器的軟件設計方案,提供了對目前流行的媒體格式文件的支持。</p><p> 關鍵字:QT Linux 跨平臺</p><p><b> 第一
9、章 緒論</b></p><p> 1.1 研究背景和意義</p><p> 隨著計算機在各領域的廣泛應用,Internet的迅速發(fā)展。各種音頻視頻的軟件在網(wǎng)上隨處可見,于是播放器成為人們日常生活娛樂不可或缺的一部分。用戶的人數(shù)更是達到了一個不可思議的數(shù)字。</p><p> 目前主流的電影播放器,其功能越來越龐大,集各種功能于一體,造成了電影播放
10、器的軟件加載很慢,可有可無的功能的整合在播放器軟件運行過程中極大的占用了計算機的資源,造成了資源的浪費和用戶使用上的不便。</p><p> 隨著各項技術的發(fā)展,越來越多的更先進的壓縮算法被提出,導致多媒體格式的多樣化,在這種情況下,人們對電影播放器的研究越來越深入,出現(xiàn)來許多支持各種壓縮格式的電影播放器,呈現(xiàn)出欣欣向榮的景象。流媒體技術的廣泛引用,其傳輸協(xié)議也在演化發(fā)展中。如何研制一種開放架構的播放器技術,使
11、得該播放器能夠支持各種媒體文件格式和傳輸協(xié)議,是當前播放器的一個重要研究方向。</p><p> 本人作為學習軟件工程專業(yè)的一員,對軟件工程、程序設計等理論知識有了較深的認識,同時也掌握了一定的軟件開發(fā)理論,借助這次畢業(yè)設計,把這些理論知識付諸實踐。結合上述情況,本人選擇了開發(fā)一個基于Linux系統(tǒng)的電影播放器的設計與實現(xiàn),不僅能夠實現(xiàn)播放常見的音頻視頻格式,而且具有開放性架構、可擴展的、跨平臺的電影播放器,滿
12、足一般用戶的需求。</p><p> 1.2 系統(tǒng)實現(xiàn)的主要功能</p><p> 本播放器的主要任務和目的是播放一些常見的音頻視頻的格式文件,在功能上達到簡潔方便,消耗資源少。主要實現(xiàn)的功能:</p><p> 文件控制,主要用于打開播放文件;</p><p> 播放控制,控制視頻或者音頻的播放狀態(tài);</p><
13、p> 進度控制,顯示當前視頻的總長度和已播放的長度,可以進行鼠標拖放進度條,跳躍式快速播放;</p><p> 聲音控制,調整音量的大小,顯示是否靜音。</p><p> 顯示控制,若播放的是視頻文件應當顯示圖像,可以調整屏幕是否為全屏,可以進行按比例播放,如16:9,4:3,按窗口大小播放等。</p><p> 1.3 論文主要完成的工作</p
14、><p> 課題所設計的電影播放器基于QT的應用程序框架,</p><p> 課題主要完成以下幾個工作:</p><p> 系統(tǒng)的需求分析和總體設計:主要包括需求分析和概要設計;</p><p> 可擴展性架構的設計:具有很好的擴展性的媒體播放器的軟件架構;</p><p> 開發(fā)平臺的搭建:包括編譯環(huán)境的建立、
15、系統(tǒng)的選擇、QT 的安裝及相應的環(huán)境變量配置、MPlayer的后臺搭建。</p><p> 電影播放器的代碼:主要基于QT對播放器的界面進行開發(fā),并實現(xiàn)播放的功能。</p><p><b> 1.4 論文結構</b></p><p> 第一章:介紹目前電影播放器的發(fā)展前景,分析了當前電影播放器的特點和優(yōu)劣,概述了該論文的主要工作及其結構的
16、安排。</p><p> 第二章:軟件開發(fā)平臺及開發(fā)工具的選擇</p><p> 對現(xiàn)有操作系統(tǒng)的特點進行介紹并加以比較從而確定本軟件所使用的操作系統(tǒng)、QT開發(fā)工具進行了概念性的描述和介紹。</p><p> 第三章:平臺構建及應用程序的安裝。</p><p> 第四章:電影播放器的系統(tǒng)設計及相關模塊的功能。</p>&
17、lt;p> 第五章:各個功能的實現(xiàn)</p><p> 電影播放器界面開發(fā)的詳細過程和播放器相關功能的實現(xiàn)。</p><p> 第六章:軟件測試和改進思想。</p><p><b> 第七章:結論</b></p><p> 對電影播放器的整體開發(fā)工作進行了總結和展望。</p><p>
18、;<b> 第八章:致謝。</b></p><p> 第二章 軟件開發(fā)平臺及開發(fā)工具的選擇</p><p> 2.1開發(fā)平臺的選擇</p><p> 在系統(tǒng)的設計與開發(fā)中,軟件開發(fā)平臺及開發(fā)工具是關鍵,下面介紹下開發(fā)平臺的選擇。</p><p> Linux系統(tǒng)有兩種不同的含義。從技術角度,Linux指的是由L
19、inus Torvalds維護的開放源代碼UNIX類操作系統(tǒng)的內核。然而,目前大多數(shù)人用它表示以Linux內核為基礎的整個操作系統(tǒng)。從這種意義講,Linux指的是包含內核、系統(tǒng)工具、完整的開發(fā)環(huán)境和應用的類UNIX操作系統(tǒng)。</p><p> Linux是UNIX操作系統(tǒng)的克隆,可以免費使用,遵循GPL聲明,可以自由修改和傳播。與Windows等商業(yè)操作系統(tǒng)不同,Linux完全是一個自由的操作系統(tǒng)。Linux內
20、核最初是由芬蘭籍大學生Linus Torvalds和通過Internet組織起來的開發(fā)小組完成的,其目標是與POSIX(Portable Operating System Interface,可移植操作系統(tǒng)界面)兼容。Linux包含了人們希望操作系統(tǒng)擁有的所有功能特性,包括真正的多任務、虛擬內存、世界上最快的TCP/IP驅動程序、共享庫和多用戶支持(這意味著成百上千的人能在同一時刻通過網(wǎng)絡、Internet或連接在計算機串行口上的終端或
21、筆記本電腦/微機使用同一臺計算機)。</p><p> Linux現(xiàn)在是個人計算機和工作站上的UNIX類操作系統(tǒng)。按照層次結構的觀點,在同一種硬件平臺上,Linux可以提供和UNIX相同的服務,即相同的用戶級和程序員級接口。Linux絕不是簡單化的UNIX,相反,Linux是強有力和具有創(chuàng)新意義的UNIX操作系統(tǒng),它不僅繼承了UNIX的特征,而且在許多方面超過了UNIX。作為UNIX類操作系統(tǒng),Linux具有下
22、列基本特征:</p><p> ?。?)是真正的多用戶、多任務操作系統(tǒng)。</p><p> ?。?)是符合POSIX標準的系統(tǒng)。</p><p> (3)提供具有內置安全措施的分層的文件系統(tǒng)。</p><p> ?。?)提供shell命令解釋程序和編程語言。</p><p> ?。?)提供強大的管理功能,包括遠程管理
23、功能。</p><p> (6)具有內核的編程接口。</p><p> ?。?)具有圖形用戶接口。</p><p> ?。?)具有大量有用的實用程序和通信、聯(lián)網(wǎng)工具。</p><p> ?。?)具有面向屏幕的編程軟件。</p><p> 大量的高級程序設計語言已移植到Linux系統(tǒng)上,因而它是理想的應用軟件開發(fā)平臺
24、,而且,在Linux系統(tǒng)下開發(fā)的應用程序具有很好的可移植性。同時,Linux還有許多獨到之處:</p><p> ?。?)源代碼幾乎全部都是開放的。</p><p> (2)可以運行在許多硬件平臺上。</p><p> ?。?)不僅可以運行許多自由發(fā)布的應用軟件,還可以運行許多商品化的應用軟件。</p><p> ?。?)強大的網(wǎng)絡功能。&
25、lt;/p><p> 2.1開發(fā)工具的選擇</p><p> Qt是一個完整的C++應用程序開發(fā)框架。它包含一個類庫,和用于跨平臺開發(fā)及國際化的工具。GUI工具包(或GUI庫)是構造圖形用戶界面(程序)所使用的一套按鈕、滾動條、菜單和其他對象的集合。提供一個友好的用戶界面是GUI設計的一個宗旨,減少用戶的負擔、滿足用戶的需求、界面和用戶的互動交流也是在GUI設計中其中必不可少的。一個出色的
26、界面不僅能夠清晰的勾畫出所依托系統(tǒng)的大體結構,并且能夠大大減少操作的工作量和復雜性。在UNIX系統(tǒng)里,有很多可供使用的GUI庫,其中之一就是Qt庫----一個基于C++編程語言的工具包。它具有以下幾個優(yōu)點。</p><p><b> (1)可移植性</b></p><p> Qt的一個主要設計目標是使跨平臺程序開發(fā)更加直觀,便捷并富有趣味性。為了實現(xiàn)這一目標,Qt
27、提取了窗口和操作系統(tǒng)的底層基礎構造函數(shù),為程序員提供了有意義的一致邏輯界面。Qt API在所有支持的平臺上都是相同的,Qt工具在這些平臺上的使用方式也一致, 因而Qt應用的開發(fā)和部署與平臺無關。 </p><p> Qt應用程序編譯自同一套源代碼,可以在所有支持的平臺上進行本地化運行: </p><p> ①Qt/Windows (Microsoft Windows XP,2000,N
28、T 4,Me/98/95)</p><p> ?、赒t/X11 (Linux,Solaris,HP-UX,IRIX,AIX,及其它Unix variants)</p><p> ?、跶t/Mac (Mac OS X)</p><p> ?、躋t/Embedded (嵌入式Linux)</p><p> ?。?)易用性和健全性</p>
29、;<p> Qt開發(fā)者只需學習一個API,就能編寫在所有平臺下運行的程序。統(tǒng)一的跨平臺API使得程序員只需側重于程序本身的增值創(chuàng)新,不用擔心基礎代碼構建和多平臺應用的維護和管理。Qt對不同平臺(Unix, Windows, and Mac)的專門API進行了封裝,如文件處理、網(wǎng)絡(操作,協(xié)議),進程處理、線程、數(shù)據(jù)庫訪問等。Qt軟件可以實現(xiàn)多編譯器的平穩(wěn)編譯,因此用Qt構建的程序通常是非常健全的。Qt通過對所有子窗口內存
30、單元分配的處理,簡化了內存管理。程序員只需要側重于頂層對象的處理。Qt是一個C++工具包,它由幾百個C++類構成,你在程序中可以使用這些類。因為C++是面向對象的編程(Object-Oriented Programming,OOP)語言,而Qt是基于C++構造,所以,Qt也具有OOP的所有優(yōu)點。</p><p><b> ?。?)運行速度</b></p><p>
31、Qt非常容易使用,且具有很快的速度。這兩方面通常不可能同時達到。但當談論Qt時,其易用性和快速則是密不可分的。這一優(yōu)點要歸功于Qt開發(fā)者的辛苦工作,他們花費了大量的時間來優(yōu)化他們的產(chǎn)品。另一個原因是它實現(xiàn)方式。Qt是一個GUI仿真工具包,這意味著它不使用任何本地工具包作調用。Qt使用各自平臺上的低級繪圖函數(shù)仿真MS Windows和Motif(商用UNIX的標準GUI庫),當然,這能夠提高程序速度。</p><p&g
32、t; 由于Qt是基于C++,速度快,易于使用,并具有很好的可移植性。所以,當需要開發(fā)UNIX和(或)MS Windows環(huán)境下的GUI程序時,Qt是最佳選擇。</p><p> 第三章 平臺的構建及QT程序的安裝</p><p> 3.1 Linux系統(tǒng)的安裝</p><p> U 盤中安裝 Ubuntu,在安裝的時候像正常在硬盤上安裝 Ubntu 一樣,從
33、USB Live 盤引導安裝程序,當然 U 盤也要插在機器上。關鍵在于分區(qū)的時候要使用手動分區(qū),然后在 Boot Loader 上選擇安裝到 U 盤,其它的就與硬盤安裝一樣一步步下去就可以了,安裝完后可以在 BIOS 中設置通過 USB 設備來啟動。</p><p> QT程序在linux下的安裝;</p><p> 3.2.1 下載Qt源碼包到本機,然后解壓縮:</p>
34、<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-2010.05.1 -C /usr/ qt-sdk-linux-x86
35、-opensource-2010.05.1 </p><p> 3.2.2 進入用戶主目錄編輯該目錄下的.bash_profile文件,并設置Qt環(huán)境變量,在這里我進入root用戶設置環(huán)境變量。</p><p> #vi /root/.bash_profile //打開root用戶.bash_profile文件</p><p> 在root用戶.bash_pr
36、ofile文件中設置環(huán)境變量,在此文件里面添加如下內容:</p><p> QTDIR=/usr/local/ qt-sdk-linux-x86-opensource-2010.05.1PATH=$QTDIR/bin:$PATH</p><p> MANPATH=$QTDIR/doc/man:$MANPATH</p><p> LD_LIBRARY_PATH
37、=$QTDIR/lib:$LD_LIBRARY_PATH</p><p> export QTDIR PATH MANPATHLD_LIBRARY_PATH</p><p> 添加完上面信息后按ESC鍵,“Shife+:”組合鍵回到vi編輯器命令行狀態(tài),輸入wq!(強制保存退出)</p><p> 3.2.3 添加完環(huán)境變量后,使環(huán)境變量立即生效:#sourc
38、e /root/.bash_profile</p><p> 3.2.4進入Qt解壓縮的目錄:</p><p> #cd $QTDIR或#cd /usr/local/ qt-sdk-linux-x86-opensource-2010.05.1.bin都可以,因為在/root/.bash_profile文件已經(jīng)定義了環(huán)境變量QTDIR=/usr/local/ qt-sdk-linux-x
39、86-opensource-2010.05.1.bin和export QTDIR 。</p><p> 3.2.5 使用configure工具來構建Qt庫和它提供的工具:./configure(./configure --help 配置選擇的列表。例:-thread選項來創(chuàng)建這個庫的一個多純種版本。)</p><p> 3.2.6 最后一步就要進Qt安裝編譯時間了</p>
40、<p> 3.3 Phonon庫安裝 : </p><p> 進入源代碼的phonon目錄,在終端輸入“make;make install”;</p><p><b> 后端插件的安裝 :</b></p><p> (1) 下載phonon-mplayer;</p><p> (2) 返
41、回phonon-mplaye 目錄,編譯(qmake;make)生成phonon_backend/libphonon_mplayer.so動態(tài)鏈接庫。</p><p> (3) libphonon_mplayer.so拷貝到</p><p> $QTDIR/plugins/phonon_backend/;</p><p> 第四章 電影播放器的系統(tǒng)實現(xiàn)<
42、;/p><p> 播放器的整體流程是,用戶通過圖形界面控制,輸入要播放的文件按,然后調用音頻解碼器,最后,將解碼后的數(shù)據(jù)通過幀緩沖輸出到輸出設備上去。這整個過程總的來說主要由輸入、解碼、輸出這三個部分組成,他們之間可以說既相互聯(lián)系又相互獨立。從功能上來說,他們各自所執(zhí)行的功能是完全不同的,是互相獨立的;從另一方面來看,音頻視頻所需要額數(shù)據(jù)來源源于輸入的文件,而輸出到輸出設備上數(shù)據(jù)源又來源于音頻視頻解碼后獲得的數(shù)據(jù),
43、他們又是相互緊密聯(lián)系的。為此,可以將他們之間相互的聯(lián)系交給一個專門的模塊負責,即插件接口模塊。這樣,一個播放器除了界面部分之外,可以分成四個獨立模塊:輸入模塊、輸出模塊、插件接口模塊和解碼器模塊.在這里可擴展性主要體現(xiàn)在插件接口模塊和解碼器模塊??梢詫⒁纛l視頻的解碼程序以插件的形式封裝在解碼器模塊中,對不同格式的媒體文件可以使用解碼器模塊中封裝的對應的解碼器插件。同時,為了調用的方便,可以在插件接口模塊和解碼器模塊之間采用一套統(tǒng)一的解碼
44、器封裝接口。</p><p> 播放器主程序只需要調用接口函數(shù)就可以控制媒體數(shù)據(jù)的播放了,根本不許要了解媒體數(shù)據(jù)的格式以及解碼算法,這使得播放器的主程序與解碼器模塊具有相對獨立性。當需要增加一種新的媒體播放類型時,只需要按照封裝接口,編寫要添加的解碼器插件即可,而不需要對播放器的主程序做任何改動,這就使得播放器的可擴展性增強來。至于在解碼器選擇方面,可以將解碼器種的所有解碼插件通過注冊函數(shù)注冊到插件接口模塊上,
45、這樣,就可以根據(jù)輸入文件的擴展名和文件的頭信息選擇合適的解碼器,之后實現(xiàn)媒體數(shù)據(jù)的播放。</p><p><b> 4.1輸入模塊</b></p><p> 輸入模塊主要是響應用戶通過圖形界面發(fā)出的文件打開命令,它將獲得待播放文件的文件路徑和文件名。在此之后,它將首先判斷文件的路進是否合法,文件是否為空,如果文件路進不合發(fā)或文件為空,輸入模塊將退出執(zhí)行,其他模塊和
46、界面將沒有變化。如果文件路徑合法同時文件不為空,它將開始對播放進行初始化,初始化結束后,它將向插件接口模塊發(fā)出信號,通過其查找該文件的可用解碼器,為文件解碼做好準備。輸入模塊的數(shù)據(jù)處理流程圖如下</p><p> 播放初始化主要是檢查播放器當前是否有文件在播放,如果有則調用其相應的停止播放函數(shù),使其停止當前文件的播放并關閉已打開的解碼器,同時清空音頻緩沖區(qū),關閉對音頻設備的引用。在此處,對于音頻緩沖區(qū)和音頻視頻
47、設備可以通過對互斥信號量加減鎖來進行管理。即,在調用停止函數(shù)時,把控制音頻緩沖區(qū)和音頻設備的信號量加鎖,當清空音頻緩沖區(qū)和關閉音頻設備之后,再對控制信號量進行解鎖。在此之后,可判斷是否存在可用的解碼器,如果不存在,則結束播放初始化;如果存在,則再判斷是否有可用的音頻通道和視頻通道;如果有則進行讀取文件長度,獲取比特率等一些基本的處理,如果沒有則結束初始化。</p><p><b> 4.2輸出模塊&l
48、t;/b></p><p> 輸出模塊主要是將通過解碼器解碼之后的音頻和視頻數(shù)據(jù)傳輸?shù)斤@示器和揚聲器(耳機)等輸出設備輸出。原始數(shù)據(jù)通過分離器分成音頻數(shù)據(jù)和視頻數(shù)據(jù),之后它們分別調用音頻解碼器和視頻解碼器進行解碼,對于音頻數(shù)據(jù)就會驚醒重采樣,對于視頻數(shù)據(jù)就會讀取相應的幀,進行逐幀解碼,最后經(jīng)過采樣的音頻數(shù)據(jù)和經(jīng)過渲染覆蓋的視頻數(shù)據(jù)會進行音視頻同步,再分別通過音頻輸出設備和視頻輸出設備輸出。為此,根據(jù)輸出內
49、容的不同可以將輸出模塊劃分為音頻輸出和視頻輸出兩個部分,這兩個部分基本上是相互獨立輸出的,因此,可以播放單獨的聲音文件。</p><p> 音頻輸出的主要步驟:</p><p> 1.判斷音頻輸出設備是否已經(jīng)就緒;</p><p> 2.檢查音頻緩沖區(qū)中是否有已經(jīng)解碼過的音頻數(shù)據(jù);</p><p> 3.調用音頻輸出設備打開函數(shù),打開
50、音頻輸出設備;</p><p> 4.調用寫入函數(shù)把音頻緩沖區(qū)內的數(shù)據(jù)發(fā)送到音頻輸出設備</p><p> 5.所有數(shù)據(jù)輸出完畢后關閉音頻輸出設備和清空音頻緩沖區(qū);</p><p> 音頻數(shù)據(jù)的輸出流程圖如下:</p><p> 視頻輸出的主要步驟:</p><p> 1.根據(jù)屏幕尺寸創(chuàng)建兩個對象,一個用于存
51、放當前幀,一個用于旋轉幀;</p><p> 2.檢查解碼以后的視頻數(shù)據(jù)是否已經(jīng)準備就緒;</p><p> 3.判斷當前幀是否可見,若不可見直接等待可輸出的下一幀;</p><p> 4.獲取視頻畫面的長和寬,以便來設置輸出畫面的長寬比,如果文件畫面尺寸比軟件的畫面大,程序會自動適應文件的畫面尺寸,當用戶選擇全屏播放時,會按照比例把畫面擴大至全屏,當然用戶也
52、可以用拖拽來自定義播放畫面的大小。</p><p> 5.把等待輸出的區(qū)域上空清空,并且為創(chuàng)建的對象分配區(qū)域。</p><p> 6.將準備好的幀發(fā)送到步驟5分配好的區(qū)域,以便輸出到顯示設備上。</p><p> 整個視頻輸出的流程如下圖:</p><p><b> 4.3插件接口模塊</b></p>
53、;<p> 插件接口理模塊是整個播放器的核心,它將輸入模塊、輸出模塊和解碼模塊這三個模塊緊密地聯(lián)系在一起。它主要是完成對具體解碼器的操作,從而在輸入和輸出模塊之間搭起了一座橋梁。在該模塊要完成的工作有:通過輸入文件的擴展名和文件的頭部信息來判斷該輸入文件是否被播放器所支持;對解碼模塊種的所有解碼器進行注冊;能夠獲取播放文件的信息;能夠停止播放文件,并作出相應的處理;能夠調用解碼器對音頻采樣數(shù)據(jù)進行讀??;能夠調用解碼器對視
54、頻幀進行讀取等。</p><p><b> 4.4解碼庫模塊</b></p><p> 解碼庫模塊的主要作用視為插件接口模塊提供解碼器,對音頻和視頻的已壓縮數(shù)據(jù)進行解碼。該模塊采用統(tǒng)一的接口將所有解碼器的程序進行來封裝,也采用了動態(tài)加載的方式實現(xiàn)來各種數(shù)據(jù)的解碼。本程序采用Phonon 庫,Phonon框架實質上分4個部分程序,Phonon庫,Phonon后端插件
55、Phonon_backend,和真正的后端。Phonon提供了一套API接口,這套接口可以給程序調用,同時也是給編寫后端插件提供一個規(guī)范。程序完全不用知道最后誰來播放程序的音頻文件,誰來解碼我的視頻文件,或者播放的是哪個設備。</p><p> 第五章 各個功能的具體實現(xiàn)</p><p><b> 5.1界面開發(fā)</b></p><p>
56、 在界面開發(fā)上,QT有QT設計師。它提供了QT基本的可繪制窗口部件,比如:layouts布局,Buttons按鈕,Item Views ,Item Widget等窗口部件。在QT設計師種,只需要通過鼠標點擊拖放這些窗口部件,就能夠高效快速的實現(xiàn)GUI界面的設計。雖然這樣給我們提供來一些方便,但由于它是通過人的觀察和感覺來擺放窗口部件的位置,導致在實際布局上肯定有一定差距。因此,在本程序中,在界面的開發(fā)上采用了代碼和QT設計師來共同開發(fā),
57、主界面上采用來純代碼的編寫,子界面(設置界面)通過QT設計師來實現(xiàn)。</p><p> 本程序的主界面包括的窗口部件包口:菜單欄、Button按鈕、進度條等。在界面的布局上采用來了布局管理器方式,這種方式為窗口部件提供了有感知的默認值,可以隨著窗口部件的大小變化,對子窗口部件的大小和位置作出適當?shù)恼{整。所以布局管理器方式是對設計圖形化用戶界面、組織管理界面窗口部件的最好的方法。布局管理器方式主要有四種管理器:水
58、平布局管理器(QHBoxLayout),按水平的方向組織管理窗口部件;垂直布局管理器(QVBoxLayout),按垂直方向管理窗口部件;網(wǎng)格布局管理器(QGridLayout),按二位網(wǎng)格方式組織管理窗口部件;棧布局管理器(QStackedLayout),按照一種類似于棧的方式組織管理窗口部件,在某一時刻只有一種窗口部件是可見的。在本程序種界面的設計采用了基本的水平布局管理器(QHBoxLayout)和垂直布局管理器(QVBoxLayo
59、ut)。</p><p> 界面的詳細開發(fā)過程:</p><p> 1.使主窗口MediaPlayer繼承父窗口QWidget</p><p> class MediaPlayer : public Qwidget{...}</p><p> 2,設置窗口標題為MediaPlayer。</p><p> se
60、tWindowTitle(tr("media player"));</p><p> 3.添加菜單欄,openbutton,在openbutton下添加子菜單</p><p> openButton->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));</p><p
61、> 4.添加背景圖片:</p><p> setStyleSheet("border-image:url(:/images/screen.png) ; border-width:3px");</p><p><b> 5.添加進度條。</b></p><p> Phonon::Seekslider(this)
62、</p><p> 6.添加控制按鈕。包括rewindbutton、Play(pause)、forwarbutton、volume。</p><p> rewindButton = new QPushButton(this);</p><p> playButton = new QPushButton(this);</p><p>
63、forwardButton = new QPushButton(this);</p><p> 7.界面的整體布局是先采用水平布局管理器QHBoxLayout對打開按鈕、控制按鈕、聲音進度條進,之后采用垂直布局管理器QVBoxLayout對進度條和以布局好的進行布局</p><p> QHBoxLayout *layout = new QHBoxLayout();</p>
64、<p> QVBoxLayout *vLayout = new QVBoxLayout(this);</p><p> 8.setting界面采用QT設計師來實現(xiàn),具體布局如圖顯示:</p><p> 5.2 各個功能的具體實現(xiàn)</p><p><b> 1.文件打開功能。</b></p><p>
65、 為了方便開發(fā)人員對一些特定功能的對話框進行編程,QT提供來一套標準的通用對話框,它可以限制用戶只能打開已經(jīng)存在的文件,也可以允許用戶輸入一個新的文件名;此外,過濾器的使用,給出來只能顯示符合特殊標準的文件的限制。在這里使用來兩種打開文件的方法</p><p> 1選擇一個或者多個文件以及目錄,如下圖所示:</p><p> MediaPlayer::setFile(const QSt
66、ring &fileName){…}</p><p> 2 也可以輸入文件名或者路徑,如下圖所示:</p><p> MediaPlayer::setLocation(const QString& location)</p><p> 3播放,暫停,前進后退功能</p><p> 在本程序是經(jīng)過動態(tài)鏈接庫的形式調用軟件
67、解碼器的。為此必須先加載動態(tài)鏈接庫,然后當加載成功后,才調用相應的函數(shù)。</p><p> 4改變播放畫面尺寸功能的實現(xiàn)</p><p> 在播放畫面上雙擊鼠標,或者在open子菜單中的full screen按鈕,都可以實現(xiàn)全屏播放的功能。</p><p> MediaVideoWidget::setFullScreen(bool enabled);</
68、p><p> MediaVideoWidget::mouseDoubleClickEvent(QMouseEvent *e);</p><p> 5音量控制功能的實現(xiàn)</p><p> 在音量控制上,使用的是Phonon下的Volumesilder控件,通過單擊右側的聲音可以實現(xiàn)靜音的控制,再右邊的slider控件可以完成聲音大小的控制。</p>&
69、lt;p> volume = new Phonon::VolumeSlider(&m_AudioOutput);</p><p> 第六章 軟件測試與思想改進</p><p><b> 6.1 軟件測試</b></p><p> 軟件測試主要分為以下幾個方面:</p><p><b>
70、; 文件是否打開正常;</b></p><p> 播放的文件能否正常播放;</p><p> 聲音控制能否正常控制;</p><p> 畫面和聲音能否同步播放;</p><p> 全屏播放、按比例改變畫面尺寸能否正常運行;</p><p> 改變播放速度時,聲音和畫面的同步率;</p>
71、;<p><b> 6.2改進:</b></p><p> 電影播放器的大部分功能已經(jīng)實現(xiàn),并且按照預期目標完成了一個實用的電影播放器軟件。但由于在設計之初的疏漏和時間上的倉促,電影播放器存在以下幾個不足之處需要完善:</p><p> 軟件中沒有實現(xiàn)播放列表功能;</p><p> 軟件沒有觀看記錄的功能</p&g
72、t;<p><b> 第七章 結論</b></p><p> 本文介紹了一種在Linux平臺下的電影播放器的設計與實現(xiàn),全文在整體結構,軟件平臺做了詳細的說明與解釋,實現(xiàn)部分主要是通過Linux下的QT4對電影播放器進行界面和功能來進行實現(xiàn)的。</p><p> 本文主要完成了以下課題的研究:</p><p> 首先,確定
73、了軟件開發(fā)的系統(tǒng),及選擇的開發(fā)工具;</p><p> 其次,對操作系統(tǒng)和QT及QT/Phonon的安裝進行了說明;</p><p> 再次,進行了系統(tǒng)的整體設計,及各個功能的實現(xiàn)。</p><p> 另外,在緒論中提到,當前大部分的電影播放器對不同平臺的支持較差,加之Linux、Windows,及MAC的平臺的迅速發(fā)展,為了適應這種情況,在本文中設計并實現(xiàn)了
74、一款可以跨平臺的電影播放器。</p><p> 通過本文上述的工作,完成了課題操作系統(tǒng),編程語言的選擇、環(huán)境的搭建、及總體設計,軟件設計,播放器界面功能的設計與開發(fā),基本實現(xiàn)了跨平臺性和可擴展性架構的設計。當然,本文中的電影播放器也存在這許多不足和有待改進之處,比如電影播放器播放列表,使用記錄的功能,快捷鍵有時會出現(xiàn)錯誤等。</p><p> 綜上所述,本文中軟件基本達到了預期的目標,
75、對產(chǎn)品的跨平臺性進行了相應的提高,同時對這次設計中的一些缺陷在今后的工作中還有待進一步的提高。</p><p><b> 第八章 致謝</b></p><p> 大學本科的學習生活即將結束。在此,我要感謝所有曾經(jīng)教導過我的老師和關心過我的同學,他們在我成長過程中給予了我很大的幫助。本文能夠順利完成,要特別感謝我的導師邵永波老師,感謝各位杰普的老師的關心和幫助。&l
76、t;/p><p> 最后向所有關心和幫助過我的人表示真心的感謝。</p><p><b> 參考文獻:</b></p><p> [1].鄭莉,董江舟. C++語言程序設計(第4版) , 清華大學出版社</p><p> [2].李博軒. Visual C + + 多媒體開發(fā)指南[M] , 清華大學出版社
77、, 2000.</p><p> 【3】.倪繼利. Qt及Linux操作系統(tǒng)窗口設計 , 電子工業(yè)出版社</p><p> 【4】.蔡志明. 精通Qt4編程(第2版) , 電子工業(yè)出版社</p><p> 【5】.布蘭切特(英)薩默菲爾德 C++ GUI Qt 4編程(第二版) , 電子工業(yè)出版社</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--基于linux下多媒體播放器的設計與實現(xiàn)
- 畢業(yè)論文--基于linux下多媒體播放器的設計與實現(xiàn)
- 多媒體播放器的設計與實現(xiàn)畢業(yè)論文
- 多媒體播放器論文
- 畢業(yè)設計(論文)多媒體播放器的設計與實現(xiàn)
- 基于多媒體播放器的音樂播放模塊的設計與實現(xiàn)
- 基于多媒體播放器的視頻播放模塊的設計與實現(xiàn)
- 基于vc++的多媒體播放器設計與實現(xiàn)
- 畢業(yè)論文(設計)--基于android系統(tǒng)的多媒體播放器的開發(fā)-功能實現(xiàn)
- 多媒體播放器系統(tǒng)的設計與實現(xiàn)
- 基于嵌入式Linux的多媒體播放器設計.pdf
- 多媒體播放器(PMP)實現(xiàn).pdf
- 利用vb實現(xiàn)多媒體播放器
- 基于USB主機的多媒體播放器的設計與實現(xiàn).pdf
- 多媒體播放器的設計與開發(fā).pdf
- 媒體播放器的設計與實現(xiàn)畢業(yè)設計
- 基于ARM-Linux的觸屏多媒體播放器設計.pdf
- 基于vc平臺的mci媒體播放器畢業(yè)論文
- 基于Windows Mobile的多媒體播放器的設計與實現(xiàn).pdf
- 多媒體播放器課程設計
評論
0/150
提交評論