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

正文內(nèi)容

畢業(yè)設(shè)計---mp3播放器的設(shè)計與實現(xiàn)-畢業(yè)設(shè)計(編輯修改稿)

2025-02-24 04:56 本頁面
 

【文章內(nèi)容簡介】 多媒體文件的播放主要過程包括:文件讀取、分流、解碼、輸出。如圖 31 所示 圖 31 多媒體文件的播放主要過程 這些在不同的系統(tǒng)中實現(xiàn)方式不同,如 windows 下的 DirectX、 Linux 下的 gstreamer 或 xine 及 Mac 下的 QuickTime。而 Qt 中的 phonon 作為夸平臺的多媒體解決方案,就因該為用戶屏蔽掉這些差異。而實際上它做得還不夠好,因為用戶還需要自己來安裝相應(yīng)的后端插件來完成播放任務(wù)。如圖 32 圖 32 Phonon 庫的調(diào)用使用過程 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 10 應(yīng)用 Phonon 框架實質(zhì) 上分 4 個部分,你的程序, Phonon 庫, Phonon 后端插件 (phonon_backend),真正的后端。 Phonon 其實什么都不干,他只是提供了一套 API 接口,這套接口可以給你的程序調(diào)用,同時也是給編寫后端插件提供一個規(guī)范。程序完全不知道最后誰來放我的 Mp3,誰來解碼我的視頻,播放的又是哪個設(shè)備。同樣, Phonon 庫也不知道,他只管搜索符合自己規(guī)范的插件。并告訴這些插件,現(xiàn)在程序發(fā)出的指令是什么,從插件返回給程序現(xiàn)在的媒體狀態(tài)和信息。而后端才是實際進(jìn)行讀入媒體、解碼并且播放的部分,他們和后端插件是一一對應(yīng) 的。后端可以是任何形式,只要你寫出了相應(yīng)的后端插件。所以,使用Phonon 必需要先做 2 件事: 編譯 Phonon 庫:通常情況下, Qt 默認(rèn)沒有編譯,需要 configure 后加好參數(shù),然后單獨進(jìn)入 phonon 的文件夾進(jìn)行編譯就可以了 編譯 Phonon 后端插件: Qt 為 3 大平臺分別提供了一個可用的后端插件,放在 src\plugins\phonon 目錄下。進(jìn)入目錄編譯即可, Qt 會自動選擇你當(dāng)前系統(tǒng)的后端插件的。 (出現(xiàn) phonon backend plugin could not be loaded 就是這步?jīng)]有做 ).如果是 MinGW 用戶, Windows 下 Qt 只提供了 DirectShow 這個后端插件,而這個后端插件因為調(diào)用了 DX 的 SDK,所以只能由 VC 編譯。當(dāng)然其實有更好的選擇,比如這個 phononvlcmplayer 插件,通過他,可以將 mplayer 作為后端,徹底拋棄臃腫的 VS 以及讀 ID3v2 都會出錯的 DirectShow,Phonon 是 KDE 4的多媒體 API 。 Phonon 提供一個穩(wěn)定的 API 允許 KDE 4 獨立于任何一個聲音系統(tǒng)服務(wù)器如 xine。 Phonon 讓各種后端提供界面給開發(fā)者所謂的 引擎 ;每個引 擎運作在一個具體的后端。每個后端都可讓 Phonon 控制基本功能,如播放、暫停和搜尋。 Phonon也支持更高層次的功能,如讓音軌轉(zhuǎn)化之間變微弱。使用 Solid, Phonon 將給予用戶更多配件的控制能力如耳機、揚聲器、麥克風(fēng)。一個例子是,因為你可能只有一個 VoIP 會話使用您的耳機,但所有其他的聲音通過揚聲器出來。支援 Unixlike 系統(tǒng)下的后端 xine、 VLC、 MPlayer。支援 Windows 下的后端 DirectShow、 VLC 和 Mac OS X 下的后端 QuickTime。 如上所述,如果想要運行使用 Qt 中的 phonon 寫的程序,需要滿足一下條件:Qt 基本庫、 Qt phonon 庫、 phonon_backend(后端插件 )和多媒體播放后臺。 C++ 介紹 C++即 “C plus plus”, “CPP”。它是一種使用非常廣泛的計算機編程語言。 C++是一種靜態(tài)數(shù)據(jù)類型檢查的、支持多重編程范式的通用程序設(shè)計語言。它支持過河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 11 程化程序設(shè)計、數(shù)據(jù)抽象、面向?qū)ο蟪绦蛟O(shè)計、制作圖標(biāo)等等泛型程序設(shè)計等多種程序設(shè)計風(fēng)格。 C++語言發(fā)展大概可以分為三個階段: 第一階段從 80 年代到 1995 年 。這一階段 C++語言基本上是傳統(tǒng)類型上的 面向?qū)ο笳Z言 ,并且憑借著接近 C 語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相當(dāng)大份額; 第二階段從 1995 年到 2021 年,這一階段由于 標(biāo)準(zhǔn)模板庫 (STL)和后來的Boost 等程序庫的出現(xiàn),泛型程序設(shè)計在 C++中占據(jù)了越來越多的比重性。當(dāng)然,同時由于 Java、 C等語言的出現(xiàn)和硬件價格的大規(guī)模下降, C++受到了一定的沖擊; 第三階段從 2021 年 至今,由于以 Loki、 MPL 等程序庫為代表的產(chǎn)生式編程和 模板元 編程的出現(xiàn), C++出 現(xiàn)了發(fā)展歷史上又一個新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使 C++已經(jīng)成為當(dāng)今主流 程序設(shè)計語言 中最復(fù)雜的一員。 根據(jù) Effective C++第三版第一條款的描述, C++由以下四個 “子語言 ”組成: C 子語言。 C++支持 C 語言的幾乎全部功能,主要是 c89 的部分,在語法上與 C 語言僅有極微妙的差別 (如 括號 表達(dá)式的左右值性 )。 面向?qū)ο?的 C++語言。 C++語言原本不具備面向?qū)ο蟮脑O(shè)計功能,然而隨著 面向?qū)ο缶幊?的概念的提出以及如 Java 等語言的發(fā)展成熟, C++語言也開發(fā)出了支持面向?qū)ο蠊δ艿陌姹尽? 泛型編程語言。 C++強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。 STL( C++標(biāo)準(zhǔn)模板庫, Standard Template Library)。隨著 STL 的不斷發(fā)展,它已經(jīng)逐漸成 為 C++程序設(shè)計 中不可或缺的部分,其效率可能比一般的native 代碼 低些,但是其安全性與規(guī)范性使它大受歡迎。 C++特點 : (1)C++設(shè)計成靜態(tài)類型、和 C 同樣高效且可移植的多用途 程序 設(shè)計語言。( 2) C++設(shè)計成直接的和廣泛的支援多種 程序設(shè)計風(fēng)格 (程序化程序設(shè)計、資料抽象化、 面向?qū)ο蟪绦蛟O(shè)計 、泛型程序設(shè)計)。 ( 3) C++設(shè)計成給程序設(shè)計者更多的選擇,即使可能導(dǎo)致 程序設(shè)計者選擇錯誤。 ( 4) C++設(shè)計成盡可能與 C 兼容,籍此提供一個從 C 到 C++的平滑過渡。( 5) C++避免平臺限定或沒有普遍用途的特性。 ( 6) C++不使用會帶來額外開銷的特性。 ( 7) C++設(shè)計成無需復(fù)雜的程序設(shè)計環(huán)境。 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 12 出于保證語言的簡潔和運行高效等方面的考慮, C++的很多特性都是以庫(如 STL)或其他的形式提供的,而沒有直接添加到語言本身里。 C++編譯技巧 使用 new 和 delete 進(jìn)行動態(tài)內(nèi)存分配和釋放 運算符 new 和 delete 提供了存儲的 動態(tài) 分配和釋放功能。它的作用相當(dāng)于 C 語言的函數(shù) malloc()和 free(),但是性能更為優(yōu)越。使用 new 較之使用 malloc()有以下的幾個優(yōu)點: ( 1) new 自動計算要分配類型的大小,不使用 sizeof 運算符,比較省事,可以避免錯誤。 ( 2)自動地返回正確的 指針 類型,不用進(jìn)行強制指針類型轉(zhuǎn)換。 ( 3)可以用 new 對分配的 對象 進(jìn)行初始化。 使用例子: ( 1) int* p; p=new int[10]; //分配一個含有 10 個整數(shù)的整型 數(shù)組 delete[] p; //釋放這個指向數(shù)組的指針?biāo)純?nèi)存 ( 2) int* p; p=new int (100); //動態(tài)分配一個整數(shù)并初始化 使用缺省參數(shù) 在 C++中函數(shù)可以使用 缺省參數(shù) ,例如: void PutHzxy(char *str,int x=1, int y=1) { if(x==1) x=wherex()。 if(y==1) x=wherex()。 moveto(x,y)。 PutHx(str)。 } 可以有三種方式調(diào)用函數(shù) PutHzxy(),例如: PutHzxy(C++語言 )。//使用缺省參數(shù),在當(dāng)前位置輸出 PutHzxy(C++語言 ,10,10)。//沒有使用缺省參數(shù) PutHzxy(C++語言 ,10)。//對 y 使用缺省參數(shù),指定 x 的位置 通常的情況下,一個函數(shù)應(yīng)該具有盡可能大的靈活性。使用缺省參數(shù)為程序員處理更大 的復(fù)雜性和靈活性問題提供了有效的方法,所以在 C++的代碼中都大量地使用了缺省參數(shù)。 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 13 需要說明的是,所有的缺省參數(shù)必須出現(xiàn)在不缺省參數(shù)的右邊。亦即,一旦開始定義缺省參數(shù),就不可再說明非缺省的參數(shù)。否則當(dāng)你省略其中一個參數(shù)的時候,編譯器無法知道你是自定義了這個參數(shù)還是利用了缺省參數(shù)而定義了非缺省的參數(shù)。 例如: void PutHzxy(char*str,int x=1,int y=1)//正確 void PutHzxy(int x=1,int y=1,char*str)//錯誤 C++優(yōu) 點 C++在一定程度上可以和 C 語言很好的結(jié)合,甚至目前大多數(shù) C 語言程序是在 C++的集成開發(fā)環(huán)境中完成的。 C++相對眾多的面向?qū)ο蟮恼Z言,具有相當(dāng)高的性能。 C++引入了面向?qū)ο蟮母拍?,使得開發(fā)人機交互類型的應(yīng)用程序更為簡單、快捷。很多優(yōu)秀的程序框架包括 MFC、 QT、 wxWidgets 就是使用的 C++。 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 界面窗口模塊詳細(xì)設(shè)計與實現(xiàn) 14 4 界面窗口模塊詳細(xì)設(shè)計與實現(xiàn) 一款軟件的界面設(shè)計的成敗直接關(guān)系到該產(chǎn)品的成敗。本 MP3 播放器系統(tǒng)的界面設(shè)計,利用 Qt 提供的強大的控件設(shè)計而成。系統(tǒng)的界面窗口包括有 2 個主要的界面,分別是:播放器的控 制界面窗口和媒體文件播放列表窗口,背景都為藍(lán)綠色調(diào),下面分別作出詳細(xì)介紹。 控制界面窗口 播放器的控制界面是播放器系統(tǒng)與播放器的使用者直接交互的媒介。按照控制界面上的組件的功能來分,可以將這些組件分成兩部分:信息顯示和控制組件,如圖 41 所示 圖 41 控制界面窗口 信息顯示組件信息顯示是系統(tǒng)與使用者進(jìn)行交流的通道,它可以及時地將各種有用的信息提供給用戶,以便用戶對系統(tǒng)進(jìn)行控制。本播放器系統(tǒng)的所有信息顯示在操作控件四周,很方便看到 ,是及時準(zhǔn)確地顯示當(dāng)前播放器所處的狀態(tài)。其中 ,狀態(tài)有 “ 播放 ” 、 “ 暫停 ” 和 “ 停止 ” 三種,隨播放器狀態(tài)的改變而改變。 這部分與音量控制滑動桿控件和菜單項中的 “ 聲音 ” 相關(guān)聯(lián),當(dāng)音量滑動桿的滑塊位置改變以后,音量大小會隨著變化。 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 界面窗口模塊詳細(xì)設(shè)計與實現(xiàn) 15 控制組件 信息顯示是播放器系統(tǒng)提供給使用者各種有用的信息,而控制組件則剛好相反,它可以看作是使用者提供給播放器系統(tǒng)的各種有用的信息,用來指示系統(tǒng)是否工作及如何工作。 播放 /暫停按鈕 設(shè)計這個按鈕對一個播放器來說是最為重要的。如果一個播放器不能夠播放/暫停的話,就不能稱之為播放器了。對本播放器系統(tǒng)來說 ,這個按鈕集成了兩個重要的功能: “ 開始播放 ” 和 “ 暫停播放 ” ,這樣將兩個功能集成到一個位置上的好處就是減少了界面上的按鈕的個數(shù),這使得整個界面更加簡潔。這個按鈕的作用是:如果當(dāng)前播放器的狀態(tài)為正在播放,點擊它之后就會暫停播放;如果當(dāng)前播放器的狀態(tài)為暫停播放,點擊它之后就會繼續(xù)播放。如果播放器的狀態(tài)沒有播放,也不是處于暫停狀態(tài),點擊之后,系統(tǒng)就會從媒體播放列表中加載一個媒體文件并開始播放。因此,基于上述功能,為實現(xiàn)播放和暫停功能,使之重疊放置,按照播放狀態(tài)的改變在同一時間只顯示一個按鈕,這樣就模擬實現(xiàn)了播放/暫 停功能按鈕,如果在播放狀態(tài)時想點擊播放按鈕播放其他 MP3 可以通過菜單中實現(xiàn)。 表 41 播放器控件的組成部分 組成控件 功能 播放 /暫停按鈕 播放當(dāng)前音樂文件或者暫停播放 停止按鈕 停止播放當(dāng)前音樂文件 上一首按鈕 播放列表中當(dāng)前 MP3 文件的上一首 MP3 文件 下一首按紐 播放列表中當(dāng)前 MP3 文件的下一首 MP3 文件 打開按鈕 選擇一首 MP3 文件 列表按鈕 顯示隱藏播放列表窗口 歌詞按鈕 顯示隱藏歌詞顯示窗口 靜音按鈕 打開 /關(guān)閉播放器的輸出聲音 河南城建學(xué)院本科畢業(yè)設(shè)計(論文) 界面窗口模塊詳細(xì)設(shè)計與實現(xiàn) 16 音量控制條 對播放器的音量大小進(jìn)行調(diào)節(jié) 進(jìn) 度控制條 對當(dāng)前播放的 MP3 文件的播放進(jìn)度進(jìn)行調(diào)節(jié) 停止按鈕的設(shè)計 停止功能按鈕的設(shè)計,是讓本播放器系統(tǒng)的使用者可以以手動的方式來停止當(dāng)前 媒體文件的播放。如果播
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1