畢業(yè)論文-基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)_第1頁
畢業(yè)論文-基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)_第2頁
畢業(yè)論文-基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)_第3頁
畢業(yè)論文-基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)_第4頁
畢業(yè)論文-基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 太原理工大學畢業(yè)設計(論文)用紙PAGE xvPAGE ii摘要隨著互聯(lián)網(wǎng)的的發(fā)展,PC機已經(jīng)不能滿足終端用戶對音頻的需要。雖然目前有各種各樣的計算機操作系統(tǒng),如WINDOWS,LINUX,UNIX,MAC OS等以及各種移動開發(fā)平臺,如Android,BlackBerry OS,IOS,Windows Mobile,Windows Phone,Palm等,不同的操作系統(tǒng)需要不同的系統(tǒng)軟件來開發(fā)對應的應用程序。同樣的功能,卻要開發(fā)多次,這給程序員帶來了冗余的工作量。本文以Qt為基礎,對音頻管理系統(tǒng)的實際設計情況進行了需求分析,利用軟件工程的開發(fā)流程及面向?qū)ο蟮乃枷?,構建了音頻管理系統(tǒng)的總體框

2、架,為最終音頻管理系統(tǒng)的實現(xiàn)提供了理論依據(jù)。測試結果表明,基于Qt的音頻管理系統(tǒng)可以在Win7的Qt5.2中運行,也可以在ubuntu的Qt5.2中運行,代碼只需做微小的調(diào)整,減輕程序員的代碼量,節(jié)省開發(fā)成本,為未來的開發(fā)提供一個重要的參考。關鍵詞 Qt;音頻管理系統(tǒng);設計;實現(xiàn)Design and implementation of audio management system based on QtAbstractWith the development of the Internet,the PC has been unable to meet the needs of the aud

3、io terminal user.Despite various of computer operating system,such as WINDOWS,LINUX,UNIX,MACOS etc,and various of mobile development platform,such as Android,BlackBerry,OS,IOS,WindowsMobile,Windows Phone,Palm etc,different operating systems require different software systems to develop the correspon

4、ding application .The same function needs to develop several times,which brings redundant work for the programmer. This paper,based on the Qt,carrying on the demand analysis of the actual design of the audio management system,using the development process of software engineering and object-oriented

5、idea,constructing the general framework of audio management system,and provides a theoretical basis for the implementation of the final audio management system finally.The test results show that Qt audio management system can run in Win7 based on the Qt5.2 and it can also run on ubuntu Qt5.2,the cod

6、e only minor adjustments,reducing the amount of code programmers,saving development costs,providing an important reference for future development. Key words Qt;audio management system;design; implementation目 錄 TOC o 1-3 h z u HYPERLINK l _Toc17403 摘要 PAGEREF _Toc17403 i HYPERLINK l _Toc23861 Abstrac

7、t PAGEREF _Toc23861 ii HYPERLINK l _Toc3764 1 緒論 PAGEREF _Toc3764 1 HYPERLINK l _Toc25054 1.1 開發(fā)背景 PAGEREF _Toc25054 1 HYPERLINK l _Toc21470 1.2 系統(tǒng)目標 PAGEREF _Toc21470 1 HYPERLINK l _Toc5138 1.3 基于Qt程序的音頻管理系統(tǒng)的設計的必要性 PAGEREF _Toc5138 1 HYPERLINK l _Toc18120 2 關鍵技術介紹 PAGEREF _Toc18120 3 HYPERLINK l _T

8、oc29411 2.1 音頻編碼的簡單概念 PAGEREF _Toc29411 3 HYPERLINK l _Toc1874 2.1.1 采樣率和采樣大小 PAGEREF _Toc1874 3 HYPERLINK l _Toc3956 2.1.2 有損和無損 PAGEREF _Toc3956 3 HYPERLINK l _Toc14256 2.1.3 音頻壓縮技術 PAGEREF _Toc14256 3 HYPERLINK l _Toc2631 2.1.4 頻率和采樣率 PAGEREF _Toc2631 3 HYPERLINK l _Toc18705 2.1.5 流特征 PAGEREF _To

9、c18705 4 HYPERLINK l _Toc24504 2.2 音頻編碼 PAGEREF _Toc24504 4 HYPERLINK l _Toc32415 2.2.1 PCM編碼 PAGEREF _Toc32415 4 HYPERLINK l _Toc9604 2.2.2 WAV PAGEREF _Toc9604 4 HYPERLINK l _Toc24957 2.2.3 MP3 PAGEREF _Toc24957 4 HYPERLINK l _Toc10570 2.2.4 OGG編碼 PAGEREF _Toc10570 5 HYPERLINK l _Toc30119 2.2.5 MP

10、3PRO編碼 PAGEREF _Toc30119 5 HYPERLINK l _Toc8304 2.2.6 ACC格式 PAGEREF _Toc8304 5 HYPERLINK l _Toc16100 2.3 音頻解析 PAGEREF _Toc16100 5 HYPERLINK l _Toc23505 2.3.1 MP3文件解析 PAGEREF _Toc23505 5 HYPERLINK l _Toc24099 2.3.2 WMA文件解析 PAGEREF _Toc24099 7 HYPERLINK l _Toc17938 2.3.3 OGG文件的解析 PAGEREF _Toc17938 8 H

11、YPERLINK l _Toc4866 2.4 Qt的事件模型 PAGEREF _Toc4866 8 HYPERLINK l _Toc27046 2.4.1 事件的概念 PAGEREF _Toc27046 9 HYPERLINK l _Toc2642 2.4.2 事件的創(chuàng)建 PAGEREF _Toc2642 9 HYPERLINK l _Toc25525 2.4.3 事件的交付 PAGEREF _Toc25525 9 HYPERLINK l _Toc27079 2.4.4 事件循環(huán)模型 PAGEREF _Toc27079 9 HYPERLINK l _Toc5003 2.4.5 自定義事件 P

12、AGEREF _Toc5003 10 HYPERLINK l _Toc19012 2.5 Qt核心機制信號與槽 PAGEREF _Toc19012 10 HYPERLINK l _Toc4668 2.5.1 信號 PAGEREF _Toc4668 10 HYPERLINK l _Toc7515 2.5.2 槽 PAGEREF _Toc7515 11 HYPERLINK l _Toc7322 2.5.3 信號與槽的關聯(lián) PAGEREF _Toc7322 11 HYPERLINK l _Toc8186 3 需求分析 PAGEREF _Toc8186 12 HYPERLINK l _Toc10677

13、 3.1 需求概述 PAGEREF _Toc10677 12 HYPERLINK l _Toc19296 3.2 系統(tǒng)用例圖 PAGEREF _Toc19296 12 HYPERLINK l _Toc31355 3.3 系統(tǒng)關鍵領域類 PAGEREF _Toc31355 13 HYPERLINK l _Toc32457 4 系統(tǒng)設計 PAGEREF _Toc32457 14 HYPERLINK l _Toc4913 4.1 系統(tǒng)介紹 PAGEREF _Toc4913 14 HYPERLINK l _Toc12151 4.2 主要功能 PAGEREF _Toc12151 14 HYPERLINK

14、 l _Toc21978 4.3 系統(tǒng)總體模塊 PAGEREF _Toc21978 14 HYPERLINK l _Toc6655 4.3.1 系統(tǒng)總體模塊介紹 PAGEREF _Toc6655 14 HYPERLINK l _Toc27858 4.3.2 系統(tǒng)層次圖 PAGEREF _Toc27858 15 HYPERLINK l _Toc28440 4.4 系統(tǒng)界面模塊介紹 PAGEREF _Toc28440 15 HYPERLINK l _Toc1737 4.4.1 主頁面 PAGEREF _Toc1737 15 HYPERLINK l _Toc13349 4.4.2 以演唱者分類,顯示

15、演唱者所對應的歌曲名 PAGEREF _Toc13349 16 HYPERLINK l _Toc25143 4.4.3 以專輯名稱分類,顯示該專輯所對應的歌曲名 PAGEREF _Toc25143 16 HYPERLINK l _Toc15169 4.4.4 播放列表 PAGEREF _Toc15169 17 HYPERLINK l _Toc13652 4.4.5 播放控制相關按鈕 PAGEREF _Toc13652 17 HYPERLINK l _Toc27314 4.4.6 播放進度條 PAGEREF _Toc27314 17 HYPERLINK l _Toc19775 4.4.7 打開按

16、鈕 PAGEREF _Toc19775 17 HYPERLINK l _Toc26834 4.5 系統(tǒng)功能模塊劃分 PAGEREF _Toc26834 17 HYPERLINK l _Toc24397 4.5.1 音頻文件管理 PAGEREF _Toc24397 18 HYPERLINK l _Toc30977 4.5.2 播放控制 PAGEREF _Toc30977 18 HYPERLINK l _Toc21185 4.5.3 播放列表 PAGEREF _Toc21185 19 HYPERLINK l _Toc27995 4.6 系統(tǒng)開發(fā)環(huán)境 PAGEREF _Toc27995 19 HYP

17、ERLINK l _Toc4270 5 系統(tǒng)實現(xiàn) PAGEREF _Toc4270 20 HYPERLINK l _Toc19783 5.1 樹形結構顯示 PAGEREF _Toc19783 20 HYPERLINK l _Toc25588 5.1.1 主要相關代碼及說明 PAGEREF _Toc25588 20 HYPERLINK l _Toc14832 5.1.2 關鍵技術應用中問題的解決 PAGEREF _Toc14832 22 HYPERLINK l _Toc11166 5.2 播放列表 PAGEREF _Toc11166 22 HYPERLINK l _Toc30367 5.2.1

18、主要相關代碼及說明 PAGEREF _Toc30367 22 HYPERLINK l _Toc1197 5.2.2 功能實現(xiàn) PAGEREF _Toc1197 26 HYPERLINK l _Toc24511 5.3 讀取MP3音頻文件 PAGEREF _Toc24511 26 HYPERLINK l _Toc1929 5.3.1 主要相關代碼 PAGEREF _Toc1929 26 HYPERLINK l _Toc19226 5.3.2 寫代碼時的思路依據(jù) PAGEREF _Toc19226 29 HYPERLINK l _Toc24012 5.4 播放控制 PAGEREF _Toc2401

19、2 29 HYPERLINK l _Toc8947 5.4.1 主要相關功能的部分代碼 PAGEREF _Toc8947 29 HYPERLINK l _Toc23419 5.4.2 媒體對象狀態(tài)的簡單介紹 PAGEREF _Toc23419 34 HYPERLINK l _Toc23264 5.5 播放進度條 PAGEREF _Toc23264 34 HYPERLINK l _Toc24296 5.5.1 主要相關功能的部分代碼 PAGEREF _Toc24296 34 HYPERLINK l _Toc5273 6 系統(tǒng)測試 PAGEREF _Toc5273 37 HYPERLINK l _

20、Toc5336 6.1 測試的意義 PAGEREF _Toc5336 37 HYPERLINK l _Toc15382 6.2 測試方法 PAGEREF _Toc15382 37 HYPERLINK l _Toc27294 6.3 測試過程 PAGEREF _Toc27294 37 HYPERLINK l _Toc23978 6.4 單元測試 PAGEREF _Toc23978 38 HYPERLINK l _Toc1613 6.5 測試總結 PAGEREF _Toc1613 38 HYPERLINK l _Toc19973 參考文獻 PAGEREF _Toc19973 40 HYPERLIN

21、K l _Toc7465 致謝 PAGEREF _Toc7465 41 HYPERLINK l _Toc15173 外文原文 PAGEREF _Toc15173 42 HYPERLINK l _Toc774 外文翻譯 PAGEREF _Toc774 55PAGE 651 緒論1.1 開發(fā)背景Qt是1991年奇趣科技(Trolltech)開發(fā)的一個跨平臺的C+圖形用戶界面應用程序框架3,9。它提供給應用程序開發(fā)者建立藝術級的圖形用戶界面所需的所用功能。Qt很容易擴展,并且允許真正地組件編程。2012年,Qt被Digia收購,之后發(fā)布Qt5.1、5.2版本,提供 HYPERLINK /view/9

22、399069.htm Qt for Android(Alpha) 、Qt for IOS 。Qt的優(yōu)勢在于,良好的可移植性,可支持大多數(shù)操作系統(tǒng),如 Microsoft Windows 7, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等 ; 面向?qū)ο?,Qt良好的封裝機制使得Qt模塊化程度非常高,代碼可重用性較好,很方便用戶開發(fā)豐富的API,Qt包含250個以上的C+類,并且有相應的幫助文檔;支持2D 3D圖形渲染,支持XML。Qt針

23、對嵌入式環(huán)境推出了Qt Embeeded產(chǎn)品,Qt Embedded具有跨平臺的特點,省掉了不少移植軟件的功夫,用模塊化設計,有彈性,Qt Embedded 最小可以縮到800KB左右,最多可以長到3MB(for Intel x86),使得Qt Embedded 更適合在嵌入式環(huán)境下生存1,5-8,10-11?;赒t跨平臺的圖形用戶界面應用程序框架,用的是C+開發(fā)語言。C+語言簡潔靈活,運算符的數(shù)據(jù)結構豐富、具有結構化控制語句、程序執(zhí)行效率高,而且同時具有高級語言與匯編語言的優(yōu)點,與其它語言相比,C語言具有可以直接訪問物理地址的優(yōu)點,與匯編語言相比又具有良好的可讀性的可移植性。總得來說,C+

24、語言的主要特點表現(xiàn)在兩個方面,一是盡量兼容C,二是支持面向?qū)ο蟮姆椒?。它操持了C的簡潔、高效的接近匯編語言等特點,對C的類型系統(tǒng)進行了改革的擴充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯誤。另外,由于C語言的廣泛使用,因而極大的促進了C+的普及和推廣。C+語言最有意義的方面是支持面向?qū)ο蟮奶卣?。雖然與C的兼容使得C+具有雙重特點,但他在概念上完全與C不同,更具面向?qū)ο蟮奶卣鳌V悄芗揖拥葘⑹且粋€發(fā)展的趨勢,嵌入式產(chǎn)品也必將走入千家萬戶。而目前PC機的音頻管理軟件占用的磁盤空間以及內(nèi)存較大所以基于Qt的音頻管理系統(tǒng)的設計與實現(xiàn)有很重要的意義?;谶@種形式的把握,也基于對這種技術的學習

25、與理解,我選擇了這個課題。對音頻解碼技術進行研究,有助于理解其內(nèi)在的原理,能夠幫助我們更好的實現(xiàn)代碼功能。1.2 系統(tǒng)目標系統(tǒng)開發(fā)的總任務是設計并實現(xiàn)一個音頻管理系統(tǒng)。通過本系統(tǒng)可以添加音頻文件,以演唱者管理音頻文件,以專輯管理音頻文件2,4。你可以有一個播放列表,方便用戶知道系統(tǒng)中有哪些音樂文件。當然了有播放列表,就要有播放功能。選中歌曲,用戶可以點擊播放按鈕,播放音樂文件。當然有相應的控制功能,上一曲,下一曲?;镜囊袅靠刂?,音量的高低調(diào)節(jié),靜音功能。1.3 基于Qt程序的音頻管理系統(tǒng)的設計的必要性隨著計算機技術、電子技術和通信技術的迅猛發(fā)展,嵌入式系統(tǒng)已經(jīng)成為最熱門、最有前途的IT應用領

26、域之一,成為通訊和消費產(chǎn)品的共同發(fā)展方向。它廣泛應用于人們在工作生活的各個方面,幾乎包括了所有的電器設備。在嵌入式技術快速發(fā)展的同時,嵌入式音頻設備已然成為當今人類生活中的熱點。對于這些音樂文件的管理也將成為程序員考慮的重點。各種設備中的操作系統(tǒng)的種類不同,程序員在開發(fā)的時候總是要做重復的工作,不能把工作的重點放在設計上。基于Qt的平臺正好給大家提供了一個這樣的平臺。代碼不需要太多的改動,就可以運行在各種操作系統(tǒng)上。而且Qt是基于模塊的設計思想,只需要加載你所需要的模塊,符合嵌入式定制性強,模塊簡單的特點。所以基于Qt的音頻管理系統(tǒng)非常的設計與實現(xiàn)非常必要。本系統(tǒng)主要基于Qt跨平臺的圖形用戶界

27、面應用程序框架,用的是C+開發(fā)語言,當前的計算機硬件配置也完全能滿足開發(fā)的需求,因此在技術上是絕對可行的。軟件方面:由于目前單機模式相對發(fā)展成熟,故軟件的開發(fā)平臺成熟可行,它們速度快、容量大、可靠性能高、價格低,完全能滿足系統(tǒng)的需求。2 關鍵技術介紹2.1 音頻編碼的簡單概念2.1.1 采樣率和采樣大小聲音其實是一種能量波,因此也有頻率和振幅的特征,頻率對應于時間軸線,振幅對應于電平軸線。波是無限光滑的,弦線可以看成由無數(shù)點組成,由于存儲空間是相對有限的,數(shù)字編碼過程中,必須對弦線的點進行采樣。采樣的過程就是抽取某點的頻率值,很顯然,在一秒中內(nèi)抽取的點越多,獲取得頻率信息更豐富,為了復原波形,

28、一次振動中,必須有2個點的采樣,人耳能夠感覺到的最高頻率為20kHz,因此要滿足人耳的聽覺要求,則需要至少每秒進行40k次采樣,用40kHz表達,這個40kHz就是采樣率。采樣率和采樣大小的值越大,記錄的波形更接近原始信號。2.1.2 有損和無損根據(jù)采樣率和采樣大小可以得知,相對自然界的信號,音頻編碼最多只能做到無限接近,至少目前的技術只能這樣了,相對自然界的信號,任何數(shù)字音頻編碼方案都是有損的,因為無法完全還原。在計算機應用中,能夠達到最高保真水平的就是PCM編碼,被廣泛用于素材保存及音樂欣賞,CD、DVD以及我們常見的WAV文件中均有應用。因此,PCM約定俗成了無損編碼,因為PCM代表了數(shù)

29、字音頻中最佳的保真水準,并不意味著PCM就能夠確保信號絕對保真,PCM也只能做到最大程度的無限接近。我們而習慣性的把MP3列入有損音頻編碼范疇,是相對PCM編碼的。2.1.3 音頻壓縮技術PCM音頻流的碼率,采樣率值采樣大小值聲道數(shù) bps。一個采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的WAV文件,它的數(shù)據(jù)速率則為 44.1K162 =1411.2 Kbps。我們常說128K的MP3,對應的WAV的參數(shù),就是這個1411.2 Kbps,這個參數(shù)也被稱為數(shù)據(jù)帶寬,它和ADSL中的帶寬是一個概念。將碼率除以8,就可以得到這個WAV的數(shù)據(jù)速率,即176.4KB/s。這表示存儲

30、一秒鐘采樣率為44.1KHz,采樣大小為16bit,雙聲道的PCM編碼的音頻信號,需要176.4KB的空間,1分鐘則約為10.34M,這對大部分用戶是不可接受的,尤其是喜歡在電腦上聽音樂的朋友,要降低磁盤占用,只有2種方法,降低采樣指標或者壓縮。降低指標是不可取的,各種音頻壓縮編碼所達到的音質(zhì)和壓縮比都不一樣。2.1.4 頻率和采樣率采樣率表示了每秒對原始信號采樣的次數(shù),我們常見到的音頻文件采樣率多為44.1KHz,假設我們有2段正弦波信號,分別為20Hz和20KHz,長度均為一秒鐘,以對應我們能聽到的最低頻和最高頻,分別對這兩段信號進行40KHz的采樣,結果是:20Hz的信號每次振動被采樣了

31、40K/20=2000次,而20K的信號每次振動只有2次采樣。顯然,在相同的采樣率下,記錄低頻的信息遠比高頻的詳細。這也是CD數(shù)碼聲不夠真實的原因,CD的44.1KHz采樣也無法保證高頻信號被較好記錄。要較好的記錄高頻信號,看來需要更高的采樣率,在捕捉CD音軌的時候使用48KHz的采樣率,這是不可取的!這其實對音質(zhì)沒有任何好處,對抓軌軟件來說,保持和CD提供的44.1KHz一樣的采樣率才是最佳音質(zhì)的保證之一,而不是去提高它。較高的采樣率只有相對模擬信號的時候才有用,如果被采樣的信號是數(shù)字的,不要去嘗試提高采樣率。2.1.5 流特征隨著網(wǎng)絡的發(fā)展,人們對在線收聽音樂提出了要求,因此也要求音頻文件

32、能夠一邊讀一邊播放,而不需要把這個文件全部讀出后然后回放,這樣就可以做到不用下載就可以實現(xiàn)收聽了。也可以做到一邊編碼一邊播放,正是這種特征,可以實現(xiàn)在線的直播,架設自己的數(shù)字廣播電臺成為了現(xiàn)實。2.2 音頻編碼2.2.1 PCM編碼PCM 脈沖編碼調(diào)制是Pulse Code Modulation的縮寫。我們不需要關心PCM最終編碼采用的是什么計算方式,我們只需要知道PCM編碼的音頻流的優(yōu)點和缺點就可以了。PCM編碼的最大的優(yōu)點就是音質(zhì)好,最大的缺點就是體積大。我們常見的Audio CD就采用了PCM編碼,一張光盤的容量只能容納72分鐘的音樂信息。2.2.2 WAV這是一種古老的音頻文件格式,由

33、微軟開發(fā)。WAV是一種文件格式,符合RIFF (Resource Interchange File Format) 規(guī)范。所有的WAV都有一個文件頭,這個文件頭包含了音頻流的編碼參數(shù)。WAV對音頻流的編碼沒有硬性規(guī)定,除了PCM之外,還有幾乎所有支持ACM規(guī)范的編碼都可以為WAV的音頻流進行編碼。WAV可以使用多種音頻編碼來壓縮其音頻流,不過我們常見的都是音頻流被PCM編碼處理的WAV,但這不表示W(wǎng)AV只能使用PCM編碼,MP3編碼同樣也可以運用在WAV中,只要安裝好了相應的Decode,就可以欣賞這些WAV了。在Windows平臺下,基于PCM編碼的WAV是被支持得最好的音頻格式,所有音頻軟

34、件都能完美支持,由于本身可以達到較高的音質(zhì)的要求,因此,WAV也是音樂編輯創(chuàng)作的首選格式,適合保存音樂素材。因此,基于PCM編碼的WAV被作為了一種中介的格式,常常使用在其他編碼的相互轉(zhuǎn)換之中,例如MP3轉(zhuǎn)換成WMA。2.2.3 MP3MP3作為目前最為普及的音頻壓縮格式,為大家所大量接受,各種與MP3相關的軟件產(chǎn)品層出不窮,而且更多的硬件產(chǎn)品也開始支持MP3,我們能夠買到的VCD/DVD播放機都很多都能夠支持MP3,還有更多的便攜的MP3播放器等等,雖然幾大音樂商極其反感這種開放的格式,但也無法阻止這種音頻壓縮的格式的生存與流傳。MP3發(fā)展已經(jīng)有10個年頭了,他是MPEG(MPEG:Movi

35、ng Picture Experts Group) Audio Layer-3的簡稱,是MPEG1的衍生編碼方案,1993年由德國Fraunhofer IIS研究院和湯姆生公司合作發(fā)展成功。MP3可以做到12:1的驚人壓縮比并保持基本可聽的音質(zhì),在當年硬盤天價的日子里,MP3迅速被用戶接受,隨著網(wǎng)絡的普及,MP3被數(shù)以億計的用戶接受。MP3編碼技術的發(fā)布之初其實是非常不完善的,由于缺乏對聲音和人耳聽覺的研究,早期的mp3編碼器幾乎全是以粗暴方式來編碼,音質(zhì)破壞嚴重。隨著新技術的不斷導入,mp3編碼技術一次一次的被改良,其中有2次重大技術上的改進。2.2.4 OGG編碼Ogg Vorbis的音頻

36、編碼,OGG是一個龐大的多媒體開發(fā)計劃的項目名稱,將涉及視頻音頻等方面的編碼開發(fā)。整個OGG項目計劃的目的就是向任何人提供完全免費多媒體編碼方案。OGG的信念就是:OPEN,F(xiàn)REE,Vorbis。這幾個個詞匯成為了OGG項目中音頻編碼的正式命名。目前Vorbis已經(jīng)開發(fā)成功,并且開發(fā)出了編碼器。Ogg Vorbis是高質(zhì)量的音頻編碼方案,官方數(shù)據(jù)顯示:Ogg Vorbis可以在相對較低的數(shù)據(jù)速率下實現(xiàn)比MP3更好的音質(zhì)。Ogg Vorbis這種編碼也遠比90年代開發(fā)成功的MP3先進,她可以支持多個聲道,這意味著Ogg Vorbis在SACD、DTSCD、DVD AUDIO抓軌軟件的支持下,可

37、以對所有的聲道進行編碼,而不是MP3只能編碼2個聲道。多聲道音樂的興起,給音樂欣賞帶來了革命性的變化,尤其在欣賞交響時,會帶來更多臨場感。這場革命性的變化是MP3無法適應的。和MP3一樣,Ogg Vorbis是一種靈活開放的音頻編碼,能夠在編碼方案已經(jīng)固定下來后還能對音質(zhì)進行明顯的調(diào)節(jié)和新算法的改良。因此,它的聲音質(zhì)量將會越來越好,和MP3相似,Ogg Vorbis更像一個音頻編碼框架,可以不斷導入新技術逐步完善。和MP3一樣,OGG也支持VBR。2.2.5 MP3PRO編碼MP3PRO并不是一種全新的格式,完全是基于傳統(tǒng)MP3編碼技術的一種改良,本身最大的技術亮點就在于SBR(Spectra

38、l Band Replication 頻段復制),這是一種新的音頻編碼增強算法。它提供了改善低位率情況下音頻和語音編碼的性能的可能。這種方法可在指定的位率下增加音頻的帶寬或改善編碼效率。SBR最大的優(yōu)勢就是在低數(shù)據(jù)速率下實現(xiàn)非常高效的編碼,與傳統(tǒng)的編碼技術不同的是,SBR更像是一種后處理技術,因此解碼器的算法的優(yōu)劣直接影響到音質(zhì)的好壞。高頻實際上是由解碼器(播放器)產(chǎn)生的,SBR編碼的數(shù)據(jù)更像是一種產(chǎn)生高頻的命令集,或者稱為指導性的信號源。MP3PRO其實是一種MP3信號流和SBR信號流的混合數(shù)據(jù)流編碼。SBR技術可以改善低數(shù)據(jù)流量下的高頻音質(zhì),改善程度約為30%,這種改善可以讓64kbps的

39、MP3達到128kbps的MP3的音質(zhì)水平。2.2.6 ACC格式AAC(高級音頻編碼技術,Adavanced Audio Coding)是杜比實驗室為音樂社區(qū)提供的技術。AAC號稱最大能容納48通道的音軌,采樣率達96KHZ,并且在320Kbps的數(shù)據(jù)速率下能為5.1聲道音樂提供相當于ITU-R廣播的品質(zhì)。和MP3比起來,它的音質(zhì)比較好,它能夠節(jié)省大余額30%的存儲空間與帶寬。它是遵循MPEG-2的規(guī)格所開發(fā)的技術。2.3 音頻解析2.3.1 MP3文件解析MP3的文件格式稱為ID3,一般是位于一個MP3文件的開頭或末尾的若干字節(jié)內(nèi),附加了關于該MP3的歌手,標題,專輯名稱,年代,風格等信息

40、,該信息就被稱為ID3信息,ID3信息分為兩個版本,v1和v2版。其中:v1版的ID3在MP3文件的末尾128字節(jié),以TAG三個字符開頭,后面跟上歌曲信息。其中流派一共定義了79種。v2版一般位于mp3的開頭,可以存儲歌詞,該專輯的圖片等大容量的信息。ID3V2一共有4個版本,但流行的播放軟件一般只支持第3版,即ID3v2.3。由于ID3V1記錄在MP3文件的末尾,ID3V2就只好記錄在MP3文件的首部了。也正是由于這個原因,對ID3V2的操作比ID3V1要慢。而且ID3V2結構比ID3V1的結構要復雜得多,但比前者全面且可以伸縮和擴展。ID3V1比較簡單,它是存放在MP3文件的末尾,用16進

41、制的編輯器打開一個MP3文件,查看其末尾的128個順序存放字節(jié),數(shù)據(jù)結構定義如下:char Header3; /*標簽頭必須是TAG否則認為沒有標簽*/char Title30; /*標題*/char Artist30; /*作者*/char Album30; /*專集*/char Year4; /*出品年代*/char Comment30; /*備注*/char Genre; /*類型*/ID3V1的各項信息都是順序存放,沒有任何標識將其分開,比如標題信息不足30個字節(jié),則使用0補足,否則將造成信息錯誤。Genre使用原碼表示,對照表如下:/* Standard genres */0=Blu

42、es;1=ClassicRock;2=Country;3=Dance;4=Disco;5=Funk;6=Grunge;7=Hip-Hop;8=Jazz;9=Metal;10=NewAge;11=Oldies;12=Other;13=Pop;14=R&B;15=Rap;16=Reggae;17=Rock;18=Techno;19=Industrial;20=Alternative;21=Ska;22=DeathMetal;23=Pranks;24=Soundtrack;25=Euro-Techno;26=Ambient;27=Trip-Hop;28=Vocal;29=Jazz+Funk;30=F

43、usion;31=Trance;32=Classical;33=Instrumental;34=Acid;35=House;36=Game;37=SoundClip;38=Gospel;39=Noise;40=AlternRock;41=Bass;42=Soul;43=Punk;44=Space;45=Meditative;46=InstrumentalPop;47=InstrumentalRock;48=Ethnic;49=Gothic;50=Darkwave;51=Techno-Industrial;52=Electronic;53=Pop-Folk;54=Eurodance;55=Dre

44、am;56=SouthernRock;57=Comedy;58=Cult;59=Gangsta;60=Top40;61=ChristianRap;62=Pop/Funk;63=Jungle;64=NativeAmerican;65=Cabaret;66=NewWave;67=Psychadelic;68=Rave;69=Showtunes;70=Trailer;71=Lo-Fi;72=Tribal;73=AcidPunk;74=AcidJazz;75=Polka;76=Retro;77=Musical;78=Rock&Roll;79=HardRock;/* Extended genres */

45、80=Folk;81=Folk-Rock;82=NationalFolk;83=Swing;84=FastFusion;85=Bebob;86=Latin;87=Revival;88=Celtic;89=Bluegrass;90=Avantgarde;91=GothicRock;92=ProgessiveRock;93=PsychedelicRock;94=SymphonicRock;95=SlowRock;96=BigBand;97=Chorus;98=EasyListening;99=Acoustic;100=Humour;101=Speech;102=Chanson;103=Opera;

46、104=ChamberMusic;105=Sonata;106=Symphony;107=BootyBass;108=Primus;109=PornGroove;110=Satire;111=SlowJam;112=Club;113=Tango;114=Samba;115=Folklore;116=Ballad;117=PowerBallad;118=RhythmicSoul;119=Freestyle;120=Duet;121=PunkRock;122=DrumSolo;123=Acapella;124=Euro-House;125=DanceHall;126=Goa;127=Drum&Ba

47、ss;128=Club-House;129=Hardcore;130=Terror;131=Indie;132=BritPop;133=Negerpunk;134=PolskPunk;135=Beat;136=ChristianGangstaRap;137=HeavyMetal;138=BlackMetal;139=Crossover;140=ContemporaryChristian;141=ChristianRock;142=Merengue;143=Salsa;144=TrashMetal;145=Anime;146=JPop;147=Synthpop;每個ID3V2.3的標簽都由一個標

48、簽頭和若干個標簽幀或一個擴展標簽頭組成。關于曲目的信息如標題、作者等都存放在不同的標簽幀中,擴展標簽頭和標簽幀并不是必要的,但每個標簽至少要有一個標簽幀。標簽頭和標簽幀一起順序存放在MP3文件的首部。標簽頭在文件的首部順序記錄10個字節(jié)的ID3V2.3的頭部。在文件的首部順序記錄10個字節(jié)的ID3V2.3的頭部。數(shù)據(jù)結構如下:char Header3; /*必須為ID3否則認為標簽不存在*/char Ver; /*版本號;ID3V2.3就記錄03,ID3V2.4就記錄04*/char Revision; /*副版本號;此版本記錄為00*/char Flag; /*存放標志的字節(jié),這個版本只定義

49、了三位,稍后詳細解說*/char Size4; /*標簽大小,包括標簽幀和擴展標簽頭。(不包括標簽頭的10個字節(jié))*/2.3.2 WMA文件解析每一個WMA文件,它的頭16個字節(jié)是固定的,為十六進制的“30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C”,用來標識這個是否為WMA文件。接下來的8個字節(jié)為一個整數(shù),表示整個WMA文件頭部的大小,這個頭部里面包含了Tag信息等所有非音頻信息,頭部后面的是音頻信息。也就是說從文件開始偏移量為31開始,里面存放了很多幀,有我們需要的標準Tag信息,擴展Tag信息,WMA文件控制信息等等。每個幀不是等長的,但是

50、幀頭是固定的24個字節(jié),其中前16字節(jié)是用來標識這個幀的名字,后8個字節(jié)是用來表示這個幀(包括幀頭)的大小。這一點和MP3文件的ID3V2信息比 較像。Tag信息分別保存在兩個幀里,分別為標準Tag幀和擴展Tag幀。標準Tag幀只包含歌曲標題,藝術家,版權,備注四個內(nèi)容。它的幀名是十六進制的“3326 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C”,在24個字節(jié)的幀頭后緊跟著5個分別為2個字節(jié)的整數(shù),分別表示歌曲標題,藝術家,版權,備注,未知信息的大小,未知信息大部分情況下是不使用的,即它的大小為0的。在這10個字節(jié)后,這五個信息的內(nèi)容就按順序存放了。記住

51、,在WMA文件里,所有的文字都是按Unicode寬字符的編碼方式儲存的,而且每個字符串后面都有一個0 x00 0 x00結束字符的。擴展Tag幀里面包含的信息的個數(shù)是不確定的,每個信息也是按照像幀一樣的方式組織起來的。擴展Tag幀的幀名是十六進制的“40 A4 D0 D2 07 E3 D2 11 97 F000 A0 C9 5E A8 50”,在24字節(jié)的幀頭(HeadFlag:16,HeadSize:8)后先有一個兩個字節(jié)的整數(shù)表示這個幀里一共有的擴展信息個數(shù)(ExNo)。緊接著是擴展信息。每一個擴展信息包含擴展信息名字大?。?字節(jié))和對應的內(nèi)容。先有一個兩個字節(jié)的整數(shù)來表示擴展名字信息的大

52、小,接著是擴展信息名稱,然后有一個兩個字節(jié)的整數(shù)標志(Flag)。然后又是一個兩個字節(jié)的整數(shù),表示值的大小。接著就是這個值。當擴展信息名字為WMFSDKVersion時,這個值表示的是這個WMA文件的版本;當擴展信息名字為WM/AlbumTitle時,這個值代表的就是專輯名;當擴展信息名字為WM/Genre時,這個值代表的就是流派。很容易從擴展信息的名字看出這個值的用途。這些擴展信息的名字和值幾乎都是用Unicode的字符串來存儲的,到現(xiàn)在為止只發(fā)現(xiàn)對下面兩個情況例外。標志Flag,只對WM/TrackNumber和WM/Track這兩個擴展信息名字有用,當Flag為3的時候后面的值是以4個字

53、節(jié)的整數(shù)的形式表示,當Flag為0的時候,曲目信息是以普通的字符串形式表示的。WMA格式有一個幀全部都是0,相當于緩沖區(qū)。如果寫入的歌名比原來長的話,就減少緩沖區(qū)大小,歌名短就增加緩沖區(qū)。這樣就可以保持文件頭的大小不變,每次更新的話只需要重寫文件頭,不需要重寫音頻數(shù)據(jù)。這6個 字節(jié)其中前面4個字節(jié)為總標簽幀數(shù)。2.3.3 OGG文件的解析“Ogg”意指一種文件格式,可以納入各式各樣自由和開放源代碼的編解碼器,包含音效、視頻、文字(像字幕)與元數(shù)據(jù)的處理。在Ogg的多媒體框架下,Theora提供有損的圖像層面,而通常用音樂導向的Vorbis編解碼器作為音效層面。針對語音設計的壓縮編解碼器Spee

54、x和無損的音效壓縮編解碼器FLAC與OggPCM也可能作為音效層面使用。OGG文件的組織形式,OGG是以頁(page)為單位將邏輯流組織鏈接起來,每個頁都有pageheader和pagedata。OGG page頁結構,每個頁之間相互獨立,都包含了各自應有的信息,頁的大小是可變的,通常為4K8KB,最大值不能超過65307bytes(27255255*255=65307)。OGG頁頭部結構,頁標識:ASCII字符,0 x4f O 0 x67 g 0 x67 g 0 x53 S,4個字節(jié)大小,它標識著一個頁的開始。其作用是分離Ogg封裝格式還原媒體編碼時識別新頁的作用; 版本id:一般當前版本默

55、認為0,1個字節(jié);Header_type:標識當前的頁的類型,1個字節(jié);Granule_position:媒體編碼相關的參數(shù)信息,8個字節(jié),對于音頻流來說,它存儲著到本頁為止邏輯流在PCM輸出中采樣碼的數(shù)目,可以由它來算得時間戳。對于視頻流來說,它存儲著到本頁為止視頻幀編碼的數(shù)目。若此值為-1,那表示截止到本頁,邏輯流的packet未結束;Serial_number:當前頁中的流的id,4個字節(jié),它是區(qū)分本頁所屬邏輯流與其他邏輯流的序號,我們可以通過這個值來劃分流。(小端)。Page_seguence:本頁在邏輯流的序號,4個字節(jié)。OGG解碼器能據(jù)此識別有無頁丟失;CRC_cbecksum:循

56、環(huán)冗余校驗碼校驗和,4個字節(jié),包含頁的32bit CRC校驗和(包括頭部零CRC校驗和頁數(shù)據(jù)校驗),它的產(chǎn)生多項式為:0 x04c11db7;Num _segments:給定本頁在segment_table域中出現(xiàn)的segement個數(shù),1個字節(jié)。其最大值為255.頁最大物理尺寸為65307bytes,小于64KB;Segment_table:從字面看它就是一個表,表示著每個segment的長度,取值范圍是0255。由segment可以得到packet的值,每個packet的大小是以最后一個不等于255的segment結束的,從頁頭中的segment_table可以得到每個packet長度。2

57、.4 Qt的事件模型Qt中的事件模型十分重要。2.4.1 事件的概念應用程序?qū)ο髮⑾到y(tǒng)消息接收為Qt事件。應用程序可以按照不同的粒度對事件加以監(jiān)控、過濾并做出響應。在Qt中,事件是指從QEvent繼承的對象。Qt將事件發(fā)送給每個QObject對象,這樣對象便可對事件做出響應。也就是說,Qt的事件處理機制主要是基于QEvent類來實現(xiàn)的,QEvent類是其他事件類的基類。當一個事件產(chǎn)生時,Qt 就會構造一個QEvent子類的實例來表述該事件,然后將該事件發(fā)送到相應的對象上進行處理。編程人員可以對應用程序級別和對象級別中的事件進行監(jiān)控和過濾。2.4.2 事件的創(chuàng)建大多數(shù)事件是由窗口系統(tǒng)生成的,它們

58、負責向應用程序通知相關的用戶操作,例如:按鍵、鼠標單擊或者重新調(diào)整窗口大小。也可以從編程角度來模擬這類事件。在Qt中大約有50多種事件類型,最常見的事件類型是報告鼠標活動、按鍵、重繪請求以及窗口處理操作。編程人員也可以添加自己的活動行為,類似于內(nèi)建事件的事件類型。通常,接收方如果只知道按鍵了或者松開鼠標按鈕了,這是不夠的。例如,它還必須知道按的是哪個鍵,松開的是哪個鼠標按鈕以及鼠標所在位置。每一 QEvent 子類均提供事件類型的相關附加信息,因此每個事件處理器均可利用此信息采取相應處理。2.4.3 事件的交付Qt通過調(diào)用虛函數(shù) QObject:event()來交付事件。出于方便起見,QObj

59、ect:event()會將大多數(shù)常見的事件類型轉(zhuǎn)發(fā)給專門的處理函數(shù),例如:QWidget:mouseReleaseEvent()和QWidget:keyPressEvent()。開發(fā)人員在編寫自己的控件時,或者對現(xiàn)有控件進行定制時,可以輕松地重新實現(xiàn)這些處理函數(shù)。有些事件會立即發(fā)送,而另一些事件則需要排隊等候,當控制權返回至Qt事件循環(huán)時才會開始分發(fā)。Qt使用排隊來優(yōu)化特定類型的事件。例如,Qt會將多個paint事件壓縮成一個事件,以便達到最大速度。通常,一個對象需要查看另一對象的事件,以便可以對事件做出響應或阻塞事件。這可以通過調(diào)用被監(jiān)控對象的 QObject:installEventFil

60、ter() 函數(shù)來實現(xiàn)。實施監(jiān)控對象的QObject:eventFilter() 虛函數(shù)會在受監(jiān)控的對象在接收事件之前被調(diào)用。另外,如果在應用程序的 QApplication 唯一實例中安裝一個過濾器,則也可以過濾應用程序的全部事件。系統(tǒng)先調(diào)用這類過濾器,然后再調(diào)用任何窗體特定的過濾器。開發(fā)人員甚至還可以重新實現(xiàn)事件調(diào)度程序 QApplication:notify(),對整個事件交付過程進行全面控制。2.4.4 事件循環(huán)模型Qt通過調(diào)用虛函數(shù)QObject:event()來交付事件。處于方便起見,Qobject:event()會將大多數(shù)的事件類型轉(zhuǎn)發(fā)給專門的處理函數(shù):例如:QWidget:mo

溫馨提示

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

評論

0/150

提交評論