Linux電影播放器設(shè)計與實現(xiàn)_第1頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

緒論研究背景現(xiàn)如今隨著計算機(jī)在各個領(lǐng)域的廣泛應(yīng)用,視頻播放器在如今社會已融入到人們生活的各個方面,不僅僅是娛樂,在工作和學(xué)習(xí)中也擁有不可忽視的地位,多數(shù)都支持常見的媒體格式、.mp4、.avi、rm、.rmvb等。隨著C語言的發(fā)展和嵌入式系統(tǒng)技術(shù)的推廣,音頻解碼技術(shù)、存儲器技術(shù)愈發(fā)成熟。在嵌入式系統(tǒng)低端應(yīng)用中,存在著大量的小型嵌入式應(yīng)用系統(tǒng),基于Linux下的視頻播放器就是其中一員,由于能滿足人們視聽享受已成為熱門,隨著Qt的發(fā)展,基于Qt開發(fā)的程序成本大大降低,Qt也越來越穩(wěn)定。同時Qt強(qiáng)大的開發(fā)功能和可移植性實現(xiàn)了多平臺的兼容性,可以很快移植到其他平臺,從而節(jié)約了開發(fā)周期和成本,促進(jìn)嵌入式設(shè)備的開發(fā)水平。因此基于Qt的嵌入式系統(tǒng)中實現(xiàn)視頻播放器具有深刻的意義和價值。本文將設(shè)計并實現(xiàn)一款界面清楚明了,操作簡單,支持多種格式媒體。該播放器的主要功能是播放一些常見的視頻的格式文件,在功能上達(dá)到簡單易行,消耗資源少。主要實現(xiàn)的功能:文件控制(主要用于添加播放文件);播放控制(控制視頻的播放狀態(tài))。聲音控制(調(diào)整音量的大?。?;顯示控制(若播放的是視頻文件應(yīng)當(dāng)顯示圖像,可以進(jìn)行按比例播放或者全屏)。在文獻(xiàn)中都詳細(xì)介紹了嵌入式多媒體播放器的設(shè)計與實現(xiàn)的各種解決方法。如由Christopher

Hallinan.編寫的《嵌入式Linux基礎(chǔ)教程(第2版)(英文版)》中介紹了引導(dǎo)加載程序、系統(tǒng)初始化、文件系統(tǒng)、閃存和內(nèi)核、應(yīng)用程序調(diào)試技巧等,還講述了構(gòu)建Linux系統(tǒng)的工作原理,用于驅(qū)動不同架構(gòu)的配置,Linux內(nèi)核源碼樹的特性,如何根據(jù)需求配制內(nèi)核運行時的行為,如何擴(kuò)展系統(tǒng)功能,用于構(gòu)建完整嵌入式Linux發(fā)行版的常用構(gòu)建系統(tǒng),USB子系統(tǒng)和系統(tǒng)配置工具udev等內(nèi)容,同時還講述了構(gòu)建系統(tǒng)的工作原理,以及怎樣將滿足項目需求的定制的內(nèi)核變化加載到內(nèi)核中。你會了解用于驅(qū)動不同體系結(jié)構(gòu)配置的機(jī)制和Linux內(nèi)核源碼樹的特性;更重要的是,掌握如何修改系統(tǒng)使之滿足自己的需求。除此之外,還深入探討了內(nèi)核命令行參數(shù)機(jī)制,介紹了它是如何工作的,如何根據(jù)需求配置內(nèi)核運行時行為,如何擴(kuò)展系統(tǒng)功能,如何導(dǎo)航內(nèi)核源代碼,如何為相關(guān)嵌入式系統(tǒng)的不同任務(wù)配置內(nèi)核等內(nèi)容。國內(nèi)外研究現(xiàn)狀基于Linux平臺已經(jīng)存在多款多種媒體播放軟件,如:Xmovie,Xine,Realplayer,QuickTime,Mplayer等。其中既有以RealNetworks公司的RealPlayer和Apple公司的QuickTime為代表的商業(yè)軟件,也有以Xine、Mpalyer為代表的自由軟件。其中大部分都是具有較強(qiáng)的專用型,但缺乏較好的移植性,并且主流媒體播放器的設(shè)計都是基于桌面平臺,雖然功能強(qiáng)大但是用戶必須利用桌面平臺,人們更希望有專用播放器來代替PC的多媒體功能。隨著近幾年嵌入式市場的飛速發(fā)展,許多公司都著手進(jìn)行2嵌入式軟件的開發(fā)和設(shè)計,并且已經(jīng)研發(fā)出多種嵌入式產(chǎn)品,在這當(dāng)中就包括嵌入式媒體播放器。但是縱觀全局,并沒有任何一個嵌入式媒體播放器能夠像Microsoft公司的IE瀏覽器在桌面瀏覽器市場中一樣占據(jù)嵌入式媒體播放器市場的壟斷地位。主要是因為現(xiàn)有的嵌入式系統(tǒng)的發(fā)展非常迅速,而它們當(dāng)中的播放器大部分都是從桌面電腦系統(tǒng)上移植而來,并沒有充分考慮到嵌入式系統(tǒng)的特殊性,如MicrosoftWindowsCE中附帶的播放器就是WindowsMediaPlayer的簡化版,所以當(dāng)前市場上已經(jīng)出現(xiàn)的多種嵌入式媒體播放器在功能、速度、顯示和易用性等各方面的表現(xiàn)還不盡如人意,總的來說,它們存在的局限性大致可以分為下面幾類:1)可擴(kuò)展的能力不強(qiáng),大多不具備擴(kuò)展新媒體類型的功能,或者僅支持新媒體類型的擴(kuò)充,不支持傳輸協(xié)議的擴(kuò)充;2)部分播放器雖然可以運行在多種平臺上,可移植性和擴(kuò)展性都比較好,但是其界面死板,易用性比較差;3)部分播放器雖然界面美觀、使用方便,具有專用的插件接口,但是不開放源碼,并且只能運行在特定的平臺上,所以其移植性不強(qiáng),擴(kuò)展性一般。從以上的幾點分析可以看出,一款好的媒體播放器需要功能強(qiáng)大、易于擴(kuò)展、界面美觀、使用方便,可以通過它達(dá)到娛樂或者學(xué)習(xí)的效果,滿足自己的視聽享受。目前嵌入式媒體播放器仍然在不斷向前發(fā)展,除了繼續(xù)根據(jù)各種音視頻編解碼標(biāo)準(zhǔn)進(jìn)行升級和支持更多的應(yīng)用外,還在拓展其他的應(yīng)用模式和領(lǐng)域。例如在手機(jī)客戶端和瀏覽器技術(shù)、數(shù)字電視機(jī)頂盒技術(shù)集成,實現(xiàn)完整的數(shù)字電視軟件平臺和Java技術(shù)、DSP技術(shù)結(jié)合,解決實時性強(qiáng)的動態(tài)視頻處理;將多媒體技術(shù)應(yīng)用到更多傳統(tǒng)的電器領(lǐng)域,以提供交互式的應(yīng)用等等。這些都說明嵌入式媒體播放器有著非常廣闊的發(fā)展前景。論文主要完成的工作本課題所設(shè)計的視頻播放器是基于Qt的應(yīng)用程序框架。我所要做的首先系統(tǒng)的設(shè)計階段:主要包括需求分析和概要設(shè)計、界面設(shè)計等;可擴(kuò)展性架構(gòu)的設(shè)計:包括環(huán)境的建立、系統(tǒng)的選擇、Qt的安裝及相應(yīng)的環(huán)境變量配置、Mplayer的后臺搭建。視頻播放器的代碼:主要基于Qt對播放器的界面進(jìn)行開發(fā),并實現(xiàn)播放的功能。本文在研究了當(dāng)前音視頻編解碼技術(shù)、主流媒體文件格式、流媒體技術(shù)以及常見的GUI系統(tǒng)的基礎(chǔ)上,針對嵌入式Linux環(huán)境下對資源使用的特殊性,采用GTK+實現(xiàn)嵌入式媒體播放器的圖形用戶界面模塊,采用FFMpeg開源解碼庫作為播放器的解碼器,它能夠支持多種音頻和視頻編解碼標(biāo)準(zhǔn),通過采用SDL來實現(xiàn)對音視頻的回放,最后采用NC機(jī)作為硬件環(huán)境對該播放器進(jìn)行功能測試,通過測試表明該媒體播放器符合設(shè)計要求,能夠滿足嵌入式設(shè)備的媒體播放要求。開發(fā)平臺與開發(fā)工具開發(fā)平臺與工具在系統(tǒng)的設(shè)計與開發(fā)中,軟件開發(fā)平臺及開發(fā)工作是關(guān)鍵。LinuxLinux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。Linux操作系統(tǒng)誕生于1991年的10月5日,Linux存在著許多不同的Linux版本,但它們都使用了Linux內(nèi)核。Linux可安裝在各種計算機(jī)硬件設(shè)備中,比如手機(jī)、平板電腦、路由器、視頻游戲控制臺、臺式計算機(jī)、大型機(jī)和超級計算機(jī)。現(xiàn)列舉幾個常用命令如下:echo

命令舉例:echo$PATH。功能:將命令行中的參數(shù)顯示到標(biāo)準(zhǔn)輸出中。date命令舉例:date。功能:顯示或設(shè)置系統(tǒng)時間,沒參數(shù)直接顯示系統(tǒng)當(dāng)前的日期和時間。passwd命令舉例:passwd。功能:修改密碼。file命令舉例:file文件名【參數(shù)】。功能:確定指定文件類型。ls命令舉例ls-a顯示當(dāng)前目錄下的全部文件(包括隱藏文件)。功能:列出目錄文件。touch命令舉例:touch【選項】文件名。功能:修改指定文件的時間標(biāo)簽或者創(chuàng)建一個空文件。選項:-a僅改變指定文件的存取時間。UbuntuUbuntu(烏班圖)是一個以桌面應(yīng)用為主的Linux操作系統(tǒng),其名稱來自非洲南部祖魯語或豪薩語的“ubuntu”一詞,意思是“人性”、“我的存在是因為大家的存在”,是非洲傳統(tǒng)的一種價值觀,類似華人社會的“仁愛”思想。Ubuntu基于Debian發(fā)行版和GNOME桌面環(huán)境,與Debian的不同在于它每6個月會發(fā)布一個新版本。Ubuntu的目標(biāo)在于為一般用戶提供一個最新的、同時又相當(dāng)穩(wěn)定的主要由自由軟件構(gòu)建而成的操作系統(tǒng)。Ubuntu具有龐大的社區(qū)力量,用戶可以方便地從社區(qū)獲得幫助。2013年1月3日,Ubuntu正式發(fā)布面向智能手機(jī)的移動操作系統(tǒng)。Ubuntu由MarkShuttleworth(馬克·舍特爾沃斯,亦譯為沙特爾沃斯)創(chuàng)立,Ubuntu以Debian

GNU/Linux不穩(wěn)定分支為開發(fā)基礎(chǔ),其首個版本于2004年10月20日發(fā)布。Debian依賴龐大的社區(qū),而不依賴任何商業(yè)性組織和個人。Ubuntu使用Debian大量資源,同時其開發(fā)人員作為貢獻(xiàn)者也參與Debian社區(qū)開發(fā)。Ubuntu是基于DebianGNU/Linux,支持x86、amd64(即x64)和ppc架構(gòu),由全球化的專業(yè)開發(fā)團(tuán)隊(CanonicalLtd)打造的開源GNU/Linux操作系統(tǒng)。為桌面虛擬化提供支持平臺。Ubuntu對GNU/Linux的普及特別是桌面普及作出了巨大貢獻(xiàn),由此使更多人共享開源的成果與精彩。QtCreatorQt是一個完整的C++應(yīng)用程序開發(fā)框架。它包含一個類庫,和用于跨平臺開發(fā)及國際化的工具。它是諾基亞開發(fā)的一個跨平臺的c++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。QT是完全面向?qū)ο蟮?,很容易擴(kuò)展,并且允許真正地組件變成。QtCreator是一個用于Qt開發(fā)的輕量級跨平臺集成開發(fā)環(huán)境。QtCreator可帶來兩大關(guān)鍵益處:提供首個專為支持跨平臺開發(fā)而設(shè)計的集成開發(fā)環(huán)境(IDE),并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。即使不開發(fā)Qt應(yīng)用程序,QtCreator也是一個簡單易用且功能強(qiáng)大的IDE。從1996年,QT已經(jīng)成為全世界范圍內(nèi)數(shù)千種成功的應(yīng)用程序的基礎(chǔ)。QT也是流行的Linux桌面環(huán)境KDE的基礎(chǔ)?;旧?,QT同XWindow上的Motif,Openwin,GTK等圖形界面庫和Windows平臺上的MFC,OWL,VCL,ATL是同類型的東西,但是QT與其他開發(fā)工具相比,具有優(yōu)良的跨平臺特性、面向?qū)ο?、豐富的API、大量的開發(fā)文檔等優(yōu)點。信號和槽機(jī)制是QT的核心機(jī)制,信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是QT的核心特性,也是QT區(qū)別在于其他工具包的重要地方。信號和槽是QT自行定義的一種通信機(jī)制,它獨立于標(biāo)準(zhǔn)的c/c++語言,因此要掙錢的處理信號和槽,必須借助一個成為MOC的QT工具,該工具是一個c++預(yù)處理程序,它可以為高層次的事件處理自動生成所需要的附加代碼。GUI工具包是構(gòu)造圖形用戶界面所使用的一套按鈕、滾動條、菜單和其他對象的集合。提供一個友好的用戶界面是GUI設(shè)計的一個宗旨,減少用戶的負(fù)擔(dān)、滿足用戶的需求、界面和用戶的互動交流也是在GUI設(shè)計中其中必不可少的。一個出色的界面不僅能夠清晰的勾畫出所依托系統(tǒng)的大體結(jié)構(gòu),并且能夠大大減少操作的工作量和復(fù)雜性。在UNIX系統(tǒng)里,有很多可供使用的GUI庫,其中之一就是Qt庫一個基于C++變成語言的工具包。它具有以下幾個優(yōu)點:(1)可移植性Qt的一個主要設(shè)計目標(biāo)是使跨平臺程序開發(fā)更加直觀,便捷并富有趣味性。為了實現(xiàn)這一目標(biāo),Qt提取了窗口和操作系統(tǒng)的底層基礎(chǔ)構(gòu)造函數(shù),為程序員提供了有意義的一致邏輯界面。QtAPI在所有支持的平臺上都是相同的,Qt的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的。Qt提供了一種稱為signals/slots的安全類型來替代callback,這使得各個元件之間的協(xié)同工作變得十分簡單。Qt支持下列操作系統(tǒng):MicrosoftWindows95/98,MicrosoftWindowsNT,Linux,Solaris,SunOS,HP-UX,DigitalUNIX(OSF/1,Tru64),Irix,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX等等。(2)易用性和健全性Qt開發(fā)這只需學(xué)習(xí)一個API,就能編寫在所有平臺下運行的程序。統(tǒng)一的跨平臺API使得程序員只需側(cè)重于程序本身的增值創(chuàng)新,不用擔(dān)心基礎(chǔ)代碼構(gòu)建和多平臺應(yīng)用的維護(hù)和管理。Qt對不同平臺的專門API進(jìn)行了封裝,如文件處理、網(wǎng)絡(luò),進(jìn)程處理、線程、數(shù)據(jù)庫訪問等。Qt軟件可以實現(xiàn)多編譯器的平穩(wěn)編譯,因此用Qt構(gòu)建的程序通常是非常健全的。Qt通過對所有子窗口內(nèi)存單元分配的處理,簡化了內(nèi)存管理。程序員只需要側(cè)重于頂層對象的處理。Qt是一個C++工具包,它由幾百個C++類構(gòu)成,你在程序中可以使用這些類。因為C++是面向?qū)ο蟮木幊陶Z言,而Qt是基于C++構(gòu)造,所以Qt也具有OOP的所有優(yōu)點。(3)運行速度Qt非常容易使用,且具有很快的速度。這兩方面通常不可能同時達(dá)到。但當(dāng)談?wù)換t時,其易用性和快速則是密不可分的。這一優(yōu)點要歸功于Qt開發(fā)者的辛苦工作,他們話費了大量的時間來優(yōu)化產(chǎn)品。另一個原因是它的表現(xiàn)方式。Qt是一個GUI仿真工具包,這意味著它不使用任何本地工具包作調(diào)用。Qt使用各自平臺上的低級繪圖函數(shù)仿真MSWindows和Motif,當(dāng)然,這能偶提高程序速度。由于Qt是基于C++,速度快,易于使用,并具有很好的可移植性。所以,當(dāng)需要開發(fā)UNIX和MSWindows環(huán)境下的GUI程序時,Qt是最佳選擇。Mplayer視頻播放器是指能播放以數(shù)字信號形式存儲的視頻的軟件,也指具有播放視頻功能的電子器件產(chǎn)品。除了少數(shù)波形文件外,大多數(shù)視頻播放器攜帶解碼器以還原經(jīng)過壓縮的媒體文件,視頻播放器還要內(nèi)置一整套轉(zhuǎn)換頻率以及緩沖的算法。MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發(fā)布。此款軟件可在各主流作業(yè)系統(tǒng)使用,例如Linux和其他類Unix系統(tǒng)、Windows及MacOSX系統(tǒng)。MPlayer建基于命令行界面,在各作業(yè)系統(tǒng)也可選擇安裝不同的圖形界面。它的另一個大的特色是廣泛的輸出設(shè)備支持。大部分視頻和音頻格式都能通過FFmpeg項目的libavcodec函數(shù)庫本地支持。對于那些沒有開源解碼器的格式,MPlayer使用二進(jìn)制的函數(shù)庫。它能直接使用Windows的DLL。專有的CSS解析軟件和相關(guān)格式使MPlayer成為被眾多開放源代碼播放器所使用的后端。MPlayer的開發(fā)始于2000年。最初的作者是ArpadGereoffy。MPlayer最初的名字叫"MPlayer-TheMoviePlayerforLinux",不過后來開發(fā)者們簡稱其為"MPlayer-TheMoviePlayer",原因是MPlayer已經(jīng)不僅可以用于Linux而可以在所有平臺上運行。第一個版本被稱為mpg12playv0.1,并且將libmpeg3在一個半小時之內(nèi)集成到其中。之后的版本mpg12playv0.95pre5里被加入了基于avifile的Win32DLLloader的AVI播放功能,從2000年11月MPlayerv0.3之后的版本都一直保留著該功能。最初絕大多數(shù)的開發(fā)者都來自于匈牙利,開發(fā)者遍布全球。自從2003年AlexBeregszászi開始接替準(zhǔn)備開發(fā)第二代MPlayer的ÁrpádGereöffy來維護(hù)該項目。MPlayerG2由于多種原因暫停開發(fā)。Mplayer的特色主要有以下幾個:(1)內(nèi)置多種解碼器MPlayer本身編譯自帶了多種類型的解碼器,不需要再安裝xvid、ffdshow、ac3filter、ogg、vobsub等等所謂看DVDrip必備解碼器,也不會跟你的電腦原來所安裝的解碼器有任何沖突。(2)拖動極速播放器MPlayer相對其它播放器來說,資源占用非常少,不需要任何系統(tǒng)解碼器就可以播放各種媒體格式,對于MPEG/XviD/DivX格式的文件支持尤其好,不僅拖動播放速度快得不可思議,而且播放破損文件時的效果也好得出奇,在低配置的機(jī)器上使用更是能凸顯優(yōu)勢。(3)強(qiáng)大的音頻支持MPlayer廣泛地支持音視頻輸出驅(qū)動。它不僅可以使用X11、Xv、DGA、OpenGL、SVGAlib、fbdev、AAlib、libcaca、DirectFB、Quartz、MacOSXCoreVideo,也能使用GGI,SDL(及它們的所有驅(qū)動),所有VESA兼容顯卡上的VESA(甚至不需要X11),某些低級的顯卡相關(guān)的驅(qū)動(如Matrox、3dfx及ATI)和一些硬件MPEG解碼器卡,比如SiemensDVB、HauppaugePVR(IVTV)、DXR2和DXR3/Hollywood+。它們中絕大多數(shù)支持軟件或硬件縮放,所以你可以享受全屏電影。(4)OSD功能MPlayer具有OSD(屏上顯示)功能顯示狀態(tài)信息,有抗鋸齒帶陰影的漂亮大字幕和鍵盤控制的可視反饋。支持的字體包括歐洲語種/ISO8859-1,2(匈牙利語、英語、捷克語等等),西里爾語和韓語,可以播放12種格式的字幕文件(MicroDVD、SubRip、OGM、SubViewer、Sami、VPlayer、RT、SSA、AQTitle、JACOsub、PJS及我們自己的:MPsub)和DVD字幕(SPU流、VOBsub及隱藏式CC字幕)。(5)MEncoderMEncoder(MPlayer'sMovieEncoder)是一個簡單的電影編碼器,設(shè)計用來把MPlayer可以播放的電影(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)編碼成別的MPlayer可以播放的格式。它可以使用各種編解碼器進(jìn)行編碼,例如DivX4(1或2passes)、libavcodec、PCM/MP3/VBRMP3音頻。同時也有強(qiáng)大的插件系統(tǒng)用于控制視頻。相關(guān)技術(shù)音視頻編解碼技術(shù)音視頻壓縮編解碼技術(shù)是媒體播放器的核心技術(shù)之一,通常使用在計算機(jī)、數(shù)據(jù)庫、通信、數(shù)字電視和交互式系統(tǒng)中的關(guān)鍵多媒體技術(shù)。從目前的主要的壓縮編解碼技術(shù)來看,雖然被人們經(jīng)常應(yīng)用的技術(shù)有很多種,但是得到廣泛的市場認(rèn)可的主要標(biāo)準(zhǔn)有國際標(biāo)準(zhǔn)化組織(ISO)的MPEG(MovingPict=uresExpertsGroup)系列標(biāo)準(zhǔn)、國際電信聯(lián)盟(ITU)和國際標(biāo)準(zhǔn)化組織聯(lián)合提出的H.264標(biāo)準(zhǔn)、以及Microsoft的WMV標(biāo)準(zhǔn),以下是對這三種標(biāo)準(zhǔn)技術(shù)的介紹。MPEG標(biāo)準(zhǔn)MPEG(動態(tài)圖像專家組)成立于1988年,它是視頻編碼標(biāo)準(zhǔn)中一個大的集合,也是我們平時日常生活當(dāng)中所見到的最普遍的視頻標(biāo)準(zhǔn)。MPEG標(biāo)準(zhǔn)主要有以下五個,MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等。MPEG標(biāo)準(zhǔn)的視頻壓縮編碼技術(shù)主要利用了具有運動補(bǔ)償?shù)膸g壓縮編碼技術(shù)以減小時間冗余度,利用DCT技術(shù)以減小圖像的空間冗余度,利用熵編碼則在信息表示方面減小了統(tǒng)計冗余度。這幾種技術(shù)的綜合運用,大大增強(qiáng)了壓縮性能。該專家組建于1988年,專門負(fù)責(zé)為CD建立視頻和音頻標(biāo)準(zhǔn),而成員是為視頻、音頻及系統(tǒng)領(lǐng)域的技術(shù)專家。他們成功將聲音和影像的記錄脫離了傳統(tǒng)的模擬方式,制定出MPEG-格式,從此視聽傳播方面進(jìn)入了數(shù)碼化時代。MPEG-1音視頻壓縮是為了儲存和發(fā)布數(shù)字音視頻而建立起來的壓縮格式。它制定于1992年,是為工業(yè)級標(biāo)準(zhǔn)而設(shè)計,可適用于不同帶寬的設(shè)備,如CD-ROM、Video-CD、CD-i。它可針對SIF標(biāo)準(zhǔn)分辨率(對于NTSC制為352×240;對于PAL制為352×288)的圖象進(jìn)行壓縮,傳輸速率為1.5Mbits/sec,每秒播放30幀,具有CD(指激光唱盤)音質(zhì),質(zhì)量級別基本與VHS相當(dāng)。MPEG-1也被用于數(shù)字電話網(wǎng)絡(luò)上的視頻傳輸,如非對稱數(shù)字用戶線路(ADSL),視頻點播(VOD),以及教育網(wǎng)絡(luò)等。MPEG-2音視頻編碼是在MPEG-1基礎(chǔ)上的擴(kuò)展,MPEG-2能適應(yīng)高碼流的要求,特別適合高清電視(HDTV),其可支持的碼流為1.5-60Mbps。MPEG-2的音頻編碼可提供左右中及兩個環(huán)繞聲道,以及一個加重低音聲道,和多達(dá)7個伴音聲道(DVD可有8種語言配音的原因),MPEG-2還可用于為廣播,有線電視網(wǎng),電纜網(wǎng)絡(luò)以及衛(wèi)星直播(DirectBroadcastSatellite)提供廣播級的數(shù)字視頻。MPEG-2的其中一個特點是可提供一個較廣的范圍改變壓縮比,以適應(yīng)不同畫面質(zhì)量、存儲容量、以及帶寬的要求。為適應(yīng)在互聯(lián)網(wǎng)上多媒體數(shù)據(jù)的靈活傳輸,ISO/IEC于1998年又發(fā)布了MPEG-4標(biāo)準(zhǔn),MPEG-4是基于音/視頻對象的可分級編碼技術(shù),其碼率可從5Kbps-2Mbps的范圍內(nèi)變化,它綜合了數(shù)字電視、交互圖形學(xué)和Internet等領(lǐng)域的技術(shù)。它在要求高效壓縮編碼的同時,強(qiáng)調(diào)多媒體網(wǎng)絡(luò)通信的靈活性和交互性。這個標(biāo)準(zhǔn)主要應(yīng)用于視像電話、視像電子郵件和電子新聞等,對傳輸速率要求較低。MPEG-4利用很窄的帶寬,通過幀重建技術(shù)進(jìn)行數(shù)據(jù)壓縮,以求用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量。與MPEG-1和MPEG-2相比,MPEG-4的優(yōu)點是特別針對低帶寬等條件設(shè)計算法,所以MPEG-4的壓縮比更高,使低碼率的視頻傳輸成為可能。在公用電話線上可以連續(xù)傳輸視頻,并能保持圖像的質(zhì)量,這是其它技術(shù)做不到的。其次它節(jié)省存儲空間,在同等條件如場景、圖像格式和壓縮分辨率條件下,經(jīng)過編碼處理的圖像文件越小,所占用的存儲空間越小。由于MPEG-4算法較MPEG-1、MPEG-2更為優(yōu)化,因而在壓縮效率上更高。(2)H.264標(biāo)準(zhǔn)H.264是在早期視頻編碼標(biāo)準(zhǔn)的運動補(bǔ)償轉(zhuǎn)換編碼范例基礎(chǔ)上創(chuàng)建的。它是ITU-T的VCEG(視頻編碼專家組)和ISO/IEC的MPEG(活動圖像編碼專家組)組成的聯(lián)合視頻組(JointVideoTeam,JVT)開發(fā)的一個新的數(shù)字視6頻編碼標(biāo)準(zhǔn),它既是ITU-T的H.264,又是ISO/IEC的MPEG-4的第10部分。H.264較早期的MPEG-2標(biāo)準(zhǔn)相比,該標(biāo)準(zhǔn)大大降低了比特速率。該技術(shù)不受早期標(biāo)準(zhǔn)所用構(gòu)建模塊的制約,整個技術(shù)的設(shè)計無需后向兼容性。H.264提供的一些可提高壓縮效率的重要編碼工具有:改進(jìn)型空間交互預(yù)報、增強(qiáng)型時間預(yù)報(通過四分之一采樣運動補(bǔ)償、可變模塊大小運動補(bǔ)償、多重假設(shè)運動補(bǔ)償和加權(quán)預(yù)測工具實現(xiàn))、高效的基于上下文的熵編碼(通過變長度編碼或二進(jìn)制運算編碼工具實現(xiàn))以及內(nèi)環(huán)內(nèi)容和編碼模式適應(yīng)性解鎖濾波。實驗表明,要實現(xiàn)相近的視覺質(zhì)量,同MPEG-4ASP編碼相比,H.264把比特速率降低了35%到50%,同MPEG-2相比,降低了40%到65%。另外,同MPEG-4SP相比,H.264BP可以在寬廣的比特速率范圍內(nèi)把峰值信噪比降低50%以上。(3)WMV標(biāo)準(zhǔn)WMV(WindowsMediaVideo)標(biāo)準(zhǔn),是Microsoft公司所推出的一種采用獨立編碼方式并且可以直接在網(wǎng)上實時觀看視頻節(jié)目的文件壓縮格式。由WMV標(biāo)準(zhǔn)生成的文件一般同時包含視頻和音頻部分。視頻部分使用WindowsMediaVideo編碼,音頻部分使用WindowsMediaAudio編碼。它是在Microsoft公司的另外一種文件格式ASF(AdvancedStreamFormat)升級延伸而來得。它作為一種經(jīng)久不衰的音視頻編碼標(biāo)準(zhǔn),一直在不斷的改進(jìn)。WMV格式的主要優(yōu)點包括:本地或網(wǎng)絡(luò)回放、可擴(kuò)充的媒體類型、部件下載、可伸縮的媒體類型、流的優(yōu)先級化、多語言支持、環(huán)境獨立性、豐富的流間關(guān)系以及擴(kuò)展性等。主流媒體文件格式目前的主流媒體文件格式有:avi、RealMedia的rm和rmvb格式,WindowsMedia的asf、wmv格式,mp4和3gp,QuickTime的qt格式等。下面將對上述幾種媒體文件格式進(jìn)行簡要的分析。(1)avi格式Avi英文全程是AudioVideoInterleaved,即“音頻視頻交錯”,就是可以將視頻和音頻交織在一起進(jìn)行同步播放,可以跨多個平臺使用。文件體積過大是他的缺陷,而且壓縮標(biāo)準(zhǔn)不統(tǒng)一,因此經(jīng)常會遇到高版本W(wǎng)indows媒體播放器播放不了采用早期編碼編輯的AVI格式視頻,而低版本W(wǎng)indows媒體播放器又播放不了采用最新編碼編輯的AVI格式視頻。所以在使用時常常需要臨時下載更新編碼編輯器。(2)RealMedia的rm和rmvb格式RealMedia是RealNetworks公司所開發(fā)的流式音頻、視頻文件格式,主要用來在低速率的網(wǎng)絡(luò)上實時傳播活動視頻影像,可以根據(jù)網(wǎng)絡(luò)數(shù)據(jù)傳輸速率的不同而7采用不同的壓縮比率,從而實現(xiàn)影像數(shù)據(jù)的實時傳播和播放。RealMedia包括:rm(RealVideo)、ra(RealAudio)和RealFlash三類文件。rm用來傳播連續(xù)視頻數(shù)據(jù),ra用來傳播CD音質(zhì)的音頻數(shù)據(jù),而RealFlash則是RealNetworks公司與Macromedia公司共同推出的采用矢量技術(shù)的動畫格式。作為最早的Internet流式技術(shù),在音視頻方面RealMedia已成為事實上的網(wǎng)絡(luò)音視頻播放標(biāo)準(zhǔn)。RMVB這是一種由RM視頻格式升級延伸出的新視頻格式,它的先進(jìn)之處在于RMVB視頻格式打破了原先RM格式那種平均壓縮采樣的方式,在保證平均壓縮比的基礎(chǔ)上合理利用比特率資源,就是說靜止和動作場面少的畫面場景采用較低的編碼速率,這樣可以留出更多的帶寬空間,而這些帶寬會在出現(xiàn)快速運動的畫面場景時被利用。這樣在保證了靜止畫面質(zhì)量的前提下,大幅地提高了運動圖像的畫面質(zhì)量,從而圖像質(zhì)量和文件大小之間就達(dá)到了微妙的平衡。(3)WindowsMedia的asf、wmv格式ASF是(Advanced

Streaming

Format

高級串流格式)的縮寫,是

Microsoft

Windows

98

所開發(fā)的串流多媒體文件格式。WindowsMedia是Microsoft提出的信息流式播放方案。其核心是ASF(AdvancedStreamFormat)文件,是一種包含音頻、視頻、圖像以及控制命令、腳本等多媒體信息的數(shù)據(jù)格式。這個詞匯當(dāng)前可和

WMA

WMV

互換使用。ASF支持任意的壓縮/解壓縮編碼方式,并可以使用任何一種底層網(wǎng)絡(luò)傳輸協(xié)議,具有很大的靈活性。并將ASF用作Windows版本中多媒體內(nèi)容的標(biāo)準(zhǔn)文件格式,這無疑將對Internet特別是流式技術(shù)的應(yīng)用和發(fā)展產(chǎn)生重大影響。ASF最大優(yōu)點就是體積小,因此適合網(wǎng)絡(luò)傳輸,也同樣適于在本地播放。用戶可以將圖形、聲音和動畫數(shù)據(jù)組合成一個ASF格式的文件,當(dāng)然也可以將其他格式的視頻和音頻轉(zhuǎn)換為ASF格式,而且用戶還可以通過聲卡和視頻捕獲卡將諸如麥克風(fēng)、錄像機(jī)等等外設(shè)的數(shù)據(jù)保存為ASF格式。WMV是微軟推出的一種流媒體格式,它是在“同門”的ASF(AdvancedStreamFormat)格式升級延伸來得。在同等視頻質(zhì)量下,WMV格式的體積非常小,因此很適合在網(wǎng)上播放和傳輸。WMV不是僅僅基于微軟公司的自有技術(shù)開發(fā)的。從第七版(WMV1)開始,微軟公司開始使用它自己非標(biāo)準(zhǔn)MPEG-4Part2。但是,由于WMV第九版已經(jīng)是SMPTE的一個獨立標(biāo)準(zhǔn)(421M,也稱為VC-1),所以WMV的發(fā)展已經(jīng)不象MPEG-4那樣是一個它自己專有的編解碼技術(shù)。(4)Mp4和3pg目前MP4最流行使用的壓縮方式為MPEG-4。移動手持設(shè)備視頻多數(shù)支持此格式,但由于硬件平臺的沒有統(tǒng)一的標(biāo)準(zhǔn),軟件系統(tǒng)也是由廠商自行設(shè)計,各種設(shè)備可播放的MP4編碼方式也不同。3gp使用MPEG-4或H.263

兩種影片編碼方式,以及

AMR-NB或AAC-LC兩種聲音儲存方式,可以將影片以更經(jīng)濟(jì)的方式存放在手機(jī)或是其他行動裝置里,所以它最大的優(yōu)點就是:容量小。(5)QuickTime的qt格式QuickTime的qt格式是Apple公司于1991年推出的能在計算機(jī)上播放高品質(zhì)視頻圖像的技術(shù),它幾乎支持所有主流的個人計算平臺和各種格式的靜態(tài)圖像文件、視頻和動畫格式,支持RLC、JPEG等領(lǐng)先的集成壓縮技術(shù),提供了大約150多種視頻效果。具有內(nèi)置Web瀏覽器插件(Plug-in)技術(shù),支持IETF流標(biāo)準(zhǔn)以及FTP和HTTP等網(wǎng)絡(luò)協(xié)議,現(xiàn)已成為是數(shù)字媒體領(lǐng)域的工業(yè)標(biāo)準(zhǔn)。QuickTime的qt電影文件格式定義了存儲數(shù)字媒體內(nèi)容的標(biāo)準(zhǔn)方法,不僅可以存儲單個的媒體內(nèi)容(如視頻幀或音頻采樣),而且能保存對該媒體作品的完整描述;QuickTime的qt文件格式被設(shè)計用來適應(yīng)為與數(shù)字化媒體一同工作需要存儲的各種數(shù)據(jù)。因為這種文件格式能用來描述幾乎所有的媒體結(jié)構(gòu),所以它是應(yīng)用程序間(不管運行平臺如何)交換數(shù)據(jù)的理想格式。qt文件格式中媒體描述和媒體數(shù)據(jù)是分開存儲的,媒體描述或元數(shù)據(jù)(meta-data)叫做電影(movie),包含軌道數(shù)目、視頻壓縮格式和時間信息。同時movie包含媒體數(shù)據(jù)存儲區(qū)域的索引。媒體數(shù)據(jù)是所有的采樣數(shù)據(jù),如視頻幀和音頻采樣,媒體數(shù)據(jù)可以與QuickTimemovie存儲在同一個文件中,也可以在一個單獨的文件或者在幾個文件中。流媒體技術(shù)流媒體是指在Internet/Intranet中使用流式傳輸技術(shù)的連續(xù)時基媒體,如音頻、視頻等多媒體文件。在網(wǎng)絡(luò)上傳統(tǒng)的多媒體文件的傳輸方式,基本上只有文本、圖像可以按照原格式在網(wǎng)上傳輸,動畫、音頻、視頻等雖然可以直接在網(wǎng)上播放,但文件偏大,即使使用專線上網(wǎng),也要等完全下載后才能觀看。流式傳輸方式可將視頻、音頻、動畫等多媒體文件經(jīng)編碼工具的特殊處理,分成一個個壓縮包,由流媒體服務(wù)器向用戶計算機(jī)連續(xù)、實時傳送。在采用流式傳輸方式的系統(tǒng)中,用戶不必等到整個文件全部下載完畢,只需經(jīng)過幾秒或幾十秒的啟動延遲即可觀看,文件的其余部分將在后臺服務(wù)器繼續(xù)下載。該技術(shù)首先在用戶端的計算機(jī)上創(chuàng)建一個緩沖區(qū),預(yù)先下載多媒體文件的部分?jǐn)?shù)據(jù)作為緩沖,播放程序讀取緩沖區(qū)內(nèi)的數(shù)據(jù)進(jìn)行播放。在播放的同時,用戶計算機(jī)在后臺繼續(xù)下載多媒體文件的剩余部分填充緩沖區(qū)。這樣,當(dāng)網(wǎng)絡(luò)出現(xiàn)抖動(Jitter),實際連線速度小于播放消耗數(shù)據(jù)速度時,可以避免播放的中斷,也使得播放質(zhì)量得以維持。流媒體技術(shù)是為解決以Internet為代表的中低帶寬網(wǎng)絡(luò)上多媒體信息傳輸問題而產(chǎn)生、發(fā)展起來的一種網(wǎng)絡(luò)新技術(shù),可適應(yīng)從窄帶到寬帶任意的網(wǎng)絡(luò)帶寬。目前,實現(xiàn)流媒體傳輸主要有兩種方式:實時流(realtimestreaming)傳輸和順序流(progressivestreaming)傳輸。一般來說,如使用HTTP服務(wù)器,文件即通過順序流發(fā)送,即為順序流傳輸。如視頻為實時廣播,或使用流傳輸媒體服務(wù)器,或應(yīng)用如RTSP的實時協(xié)議,即為實時流傳輸。采用哪種傳輸方式依賴于不同需求,兩種方式有著不同特點:順序流傳輸是順序下載,在下載文件的同時用戶可觀看在線媒體,在給定時刻,用戶只能觀看自己下載的那部分,而不能跳到還未下載的部分,順序流傳輸不像實時流在傳輸期間根據(jù)用戶連接的速度做調(diào)整。由于標(biāo)準(zhǔn)的HTTP服務(wù)器可發(fā)送這種形式的文件,不需要其他協(xié)議,它經(jīng)常被稱作HTTP流傳輸。順序流傳輸比較適合高質(zhì)量的短片段,如片頭、片尾和廣告。由于文件傳輸是無損下載的,這種方法保證電影播放的最終質(zhì)量。這意味著用戶在觀看前,必須經(jīng)歷延時,對較慢的連接尤其如此。實時流傳輸保證媒體信號帶寬與網(wǎng)絡(luò)連接匹配,使媒體可被實時觀看到。實時流媒體傳輸需要專用的流媒體服務(wù)器與傳輸協(xié)議。實時流傳輸總是實時傳送,特別適合現(xiàn)場事件,也支持隨機(jī)訪問,用戶可快進(jìn)或后退以觀看前面或后面的內(nèi)容。其必須匹配連接帶寬,這意味著以調(diào)制解調(diào)器速率連接時圖像質(zhì)量較差。而且,由于出錯丟失的信息被忽略掉,網(wǎng)絡(luò)擁擠或出現(xiàn)問題時,視頻質(zhì)量很差。實時流傳輸需要特定服務(wù)器,如QuickTime,StreamingServer,RealServer。這些服務(wù)器允許用戶對媒體發(fā)送進(jìn)行更多級別的控制,因此系統(tǒng)設(shè)置、管理比標(biāo)準(zhǔn)HTTP服務(wù)器更復(fù)雜。而流媒體的實現(xiàn)原理簡單地說,就是通過采用高效的壓縮算法,在降低文件大小的同時伴隨質(zhì)量的損失,讓原有的龐大的多媒體數(shù)據(jù)適合流式傳輸。然后通過架設(shè)流媒體服務(wù)器,利用各種實時協(xié)議傳輸流數(shù)據(jù)。Figure2.1Streamingmediaimplementationprinciple多媒體數(shù)據(jù)必須進(jìn)行預(yù)處理才能適合流式傳輸,這是因為目前的網(wǎng)絡(luò)帶寬相對多媒體巨大的數(shù)據(jù)流量來說還顯得遠(yuǎn)遠(yuǎn)不夠。預(yù)處理主要包括兩方面:一是采用先進(jìn)高效的壓縮算法;二是加入一些附加信息把壓縮媒體轉(zhuǎn)為適合流式傳輸?shù)奈募袷?。其技巧在于壓縮原始的A/V內(nèi)容,使其能夠在窄帶或?qū)拵ǖ郎弦粤鞯姆绞絺鹘o用戶。預(yù)處理在編碼器內(nèi)完成,編碼方式的選擇可以是多種多樣的。編碼過程是一種藝術(shù),應(yīng)該考慮不同編碼速度的定制性能、包損失的容錯性與網(wǎng)絡(luò)的帶寬波動、最低速度下好的A/V品質(zhì)、編碼/流式傳送的成本、流的控制以及其他方面。目前流媒體播放技術(shù)市場上主流的流媒體技術(shù)有三種,分別是:RealNetworks公司的RealMedia;Microsoft公司的WindowsMedia和Apple公司的QuiekTime。這三家公司的技術(shù)都有自己的專利算法、專利文件格式甚至專利傳輸控制協(xié)議。下面就這三種技術(shù)進(jìn)行簡要的介紹:(1)Apple公司的QuiekTime技術(shù)Apple公司的QuickTime適用于MacOS和Windows的跨平臺的多媒體體系結(jié)構(gòu)。它包括一系列多媒體操作系統(tǒng)擴(kuò)展(就像Windows里的DLL被執(zhí)行)、一個全面的API、文件格式和一系列用戶應(yīng)用比如說QuickTimePlayer,theQuickTimeActiveXcontrol和theQuickTimebrowserplug-in。QuickTime是一個完全的多媒體體系結(jié)構(gòu)而不僅僅是一個媒體播放器。它支持創(chuàng)建、產(chǎn)生和傳送各種廣泛的媒體文件。QuickTime提供了對于整個進(jìn)程的端到端的支持:實時的捕獲媒體信號、有步驟的合成媒體信號、輸入輸出媒體當(dāng)前媒體和編輯、合成、壓縮、傳輸用戶的重放。QuickTime的體系結(jié)構(gòu)是由靈活的工具集和插件組件構(gòu)成的。為了支持全面的多媒體任務(wù),QuickTimeAPI包括采集工具集(如電影工具箱,圖象壓縮管理器,序列截圖器等)和QuickTime流API。電影工具箱用來初始化QuickTime:實時的打開、播放、編輯和保存電影文件;圖象壓縮器是獨立于設(shè)9備和驅(qū)動壓縮的壓縮和解壓縮圖象數(shù)據(jù);序列截圖器是一種從一些實時的數(shù)據(jù)源(比如視頻采集卡或者音頻輸入)捕獲和記錄采樣的組件框架;QuickTime流API是用來可以使用標(biāo)準(zhǔn)流協(xié)議(比如RTP,RTSP)來發(fā)送和接收實時流數(shù)據(jù)。此外還有一些其他的工具集,如QuickTime虛擬區(qū),精靈助手工具箱和有線電影API。不同的工具集通常分享數(shù)據(jù)類型和范例設(shè)計,使得進(jìn)行后續(xù)開發(fā)變的簡單。當(dāng)想進(jìn)入QuickTime通常自動處理的任務(wù)時許多工具集是非常有用的。例如;當(dāng)要用到電影工具箱來播放電影時,它可能不需用戶和流API或者圖形壓縮管理器來交互就能打開實時流數(shù)據(jù)和解壓縮一系列的圖片,但是要檢查流的丟包或者確定圖片每個時間的解壓縮情況就可以使用恰當(dāng)?shù)墓ぞ呒瘉韺崿F(xiàn)。QuickTime的體系結(jié)構(gòu)廣泛的使用組件,使得它模塊化、靈活和可擴(kuò)展。一個QuickTime的組件可以分享到已被定義的API的源代碼。可以把新的組件加入到QuickTime里并當(dāng)在實際應(yīng)用到它時會被自動加載,這主要是因為它和現(xiàn)有存在的普通版本類型響應(yīng)的是同一個API。例如當(dāng)QuickTime工作在一些媒體類型(音頻、視頻、文本、精靈、Flash、3D模塊、圖片虛擬社區(qū)和其他)時,每一個媒體類型都被媒體處理組件所支持,組件所支持的媒體數(shù)目和類型在不斷的增加,用戶可以通過創(chuàng)建一新的媒體處理組件來增加新的媒體類型給QuickTime。(2)RealNetworks公司的RealMedia技術(shù)RealNetworks公司是世界領(lǐng)先的網(wǎng)上流式音視頻解決方案的提供者,提供從制作端、服務(wù)器端到客戶端的所有產(chǎn)品。其在20世紀(jì)90年代中期首先推出了流媒體技術(shù),并隨著互聯(lián)網(wǎng)的急速發(fā)展而壯大了自身,在市場上處于主動地位,并擁有最多的用戶數(shù)量,它的客戶端播放器RealPlayer的全球注冊人數(shù)已經(jīng)超過了1.6億人。RealNetworks公司是世界領(lǐng)先的網(wǎng)上流式視音頻解決方案的提供者,提供從制作端、服務(wù)器端到客戶端的所有產(chǎn)品。RealNetworks公司最新的網(wǎng)上流式視音頻解決方案叫RealSystemIQ,RealSystemIQ容易安裝,在高、低帶寬條件下均可提供良好的視音頻質(zhì)量,但價格較貴。RealMedia通過基于SMIL并結(jié)合自己的RealPix和RealText技術(shù)來達(dá)到一定的交互能力和媒體控制能力,不過相比QuickTime來說還有一段距離。下面介紹一下RealMedia技術(shù)的特點:a.RealVideo代表了影像編碼技術(shù)從撥號上網(wǎng)到寬帶網(wǎng)的量的飛躍。b.Macintosh版本現(xiàn)在完全支持實時廣播;VBR(variablebitrate)影像壓縮。這個特征使影像數(shù)字信號編解碼器,在工作中能根據(jù)被編碼內(nèi)容的不同自動調(diào)整比特律,改善了窄帶和寬帶影像的品質(zhì);c.TwoPassVideo影像壓縮。雙認(rèn)證編碼在對輸入的影像編碼前,會分析影像數(shù)據(jù)。在第一次認(rèn)證時將對整個影像片斷進(jìn)行分析,尋找過渡和復(fù)雜之處,在第二次認(rèn)證時,根據(jù)第一次認(rèn)證得到的分析數(shù)據(jù)對影像片斷進(jìn)行編碼。把VBR(有效位寄存器)和雙認(rèn)證編碼技術(shù)結(jié)合,對互聯(lián)網(wǎng)上寬帶視頻質(zhì)量的改善起到了不可低估的作用;d.RealVideo預(yù)過濾.雙預(yù)過濾技術(shù)的引入,為寬帶RealVideo過濾了許多細(xì)節(jié)上的不足之處;e.交織過濾技術(shù)用在對NTSC或PAL格式的影像編碼處,此技術(shù)將會過濾“所謂的人為因素”;f.反轉(zhuǎn)電視電影。電影通常以每秒24幀(fps)的速率進(jìn)行拍攝。當(dāng)一部電影以30fps轉(zhuǎn)變成數(shù)字影像時,額外的幀通過合并或復(fù)制被加入進(jìn)來。film-to-video變換過程被稱為電視電影反轉(zhuǎn)。電視電影過濾器在這個過程中尋找合適的幀并把他們加入到整個過程中,這樣就消除了冗余編碼并且提高了被編碼影像的質(zhì)量;g.帶寬仿真。RealProducerPlus捆綁了一個寬帶模擬器。這是一個Realplayer的插件,它允許創(chuàng)作人員在虛擬RealServer時可以測試真實世界的帶寬情況和信息損耗情況。h.RealMedia編輯器允許改變開始和結(jié)束的時間,把文件粘貼到一起,觀察流屬性,預(yù)覽任何Real視音頻文件。(3)Microsoft公司的WindowsMedia技術(shù)Microsoft是三家之中最后進(jìn)入這個市場的,但利用其操作系統(tǒng)的便利很快便取得了一定的市場份額。WindowsMedia是Microsoft提出的流媒體傳播方案,其主要目的是在Internet和Intranet上實現(xiàn)音頻、視頻等多媒體流的傳輸。WindowsMedia技術(shù)是一個能適應(yīng)多種網(wǎng)絡(luò)帶寬條件的流式多媒體信息發(fā)布平臺,提供密切結(jié)合的一系列服務(wù)和工具用以創(chuàng)造、管理、廣播和接收流媒體內(nèi)容,包括了流媒體的制作、發(fā)布、播放和管理的一整套解決方案。WindowsMedia的關(guān)鍵核心是MMS協(xié)議和ASF數(shù)據(jù)格式,MMS用于網(wǎng)絡(luò)傳輸控制,ASF則用于媒體內(nèi)容和編碼方案的打包。另外,WindowsMedia還提供了開發(fā)工具包(SDK)供二次開發(fā)使用。微軟的流視頻解決方案在微軟視窗平臺上是免費的,制作端與播放器的視音頻質(zhì)量都上佳,而且易于使用,但目前在整體解決方案方面和RealNetworks的產(chǎn)品還有差距。WindowsMedia由MediaTools,MediaServer和MediaPlayer等工具構(gòu)成。MediaTools是整個方案的重要組成部分,它提供了一系列的工具幫助用戶生成ASF格式的多媒體流,分創(chuàng)建工具和編輯工具兩種,創(chuàng)建工具主要用于生成ASF格式的多媒體流,包括MediaEncoder,Author,VidToASF,WavTbASF,Presenter五個工具;編輯工具主要對ASF格式的多媒體流信息進(jìn)行編輯與管理,包括后期制作工具ASFIndexer與ASFChop,以及對ASF流進(jìn)行檢查并改正錯誤的ASFCheckoMediaServer可以保證文件的保密性,不被下載,并使每個使用者都能以最佳的影片品質(zhì)瀏覽網(wǎng)頁,具有多種文件發(fā)布形式和監(jiān)控管理功能。MediaPlayer則提供強(qiáng)大的流信息播放功能。WindowsMedia的核心是ASF(AdvancedSystemsFormat)。ASF是一個獨立于編碼方式的在網(wǎng)絡(luò)上實時傳播多媒體的技術(shù)標(biāo)準(zhǔn),Microsoft希望用ASF取代QuickTime之類的技術(shù)標(biāo)準(zhǔn)以及WAV,AVI之類的文件擴(kuò)展名,并打算用ASF作為將來的Windows版本中所有多媒體內(nèi)容的標(biāo)準(zhǔn)文件格式。ASF也是一種數(shù)據(jù)格式,音頻、視頻、圖像以及控制命令腳本等多媒體信息通過這種格式,以網(wǎng)絡(luò)數(shù)據(jù)包的形式傳輸,實現(xiàn)流式多媒體內(nèi)容發(fā)布。其中,在網(wǎng)絡(luò)上傳輸?shù)膬?nèi)容就稱為ASF流(ASFStream)。ASF支持任意的壓縮、解壓縮編碼方式,并可以使用任何一種底層網(wǎng)絡(luò)傳輸協(xié)議,如RTP,RTSP,TCP,RTCP,UDP等,具有很大靈活性。Microsoft打算將ASF用作將來作為Windows版本中多媒體內(nèi)容的標(biāo)準(zhǔn)文件格式,這無疑將對Internet特別是流式技術(shù)的應(yīng)用和發(fā)展產(chǎn)生重大影響。嵌入式圖形用戶界面圖形用戶界面是指采用圖形顯示方式來完成用戶與機(jī)器的信息交換,借助計算機(jī)圖形學(xué)技術(shù)使人機(jī)交互能夠大量利用顏色、形狀等視覺信息,發(fā)揮人的形象感知和形象思維的潛能,提高了信息傳遞的效率。目前已出現(xiàn)了很多基于Linux的嵌入式系統(tǒng)。嵌入式系統(tǒng)對GUI有著特殊的要求:由于嵌入式系統(tǒng)實時性要求非常高,對GUI的要求也高。這些系統(tǒng)一般不希望建立在龐大臃腫的、非常消耗系統(tǒng)資源的操作系統(tǒng)和GUI之上,比如Windows或XWindow。因此,這些系統(tǒng)對輕型GUI的需求更加突出。另外,嵌入式系統(tǒng)往往是一種定制設(shè)備,它們對GUI的需求也必須是可定制的。所以,嵌入式系統(tǒng)對GUI的基本要求包括輕型、占用資源少、高性能、高可靠性和可配置。從用戶的觀點來看,圖形用戶界面(GUI)是系統(tǒng)的一個最至關(guān)重要的方面:用戶通過GUI與系統(tǒng)進(jìn)行交互,所以GUI應(yīng)該易于使用并且非??煽?。(1)幾種常見的GUI系統(tǒng)在嵌入式Linux下有很多圖形界面系統(tǒng)GUI,包括Qt/Embedded,MiniGUI,Microwindows和GTK+等。a.Qt/EmbeddedQt/Embedded是著名的Qt庫開發(fā)商TrollTech發(fā)布的面向嵌入式系統(tǒng)的Qt版本。因為Qt是KDE等項目使用的GUI支持庫,所以有許多基于Qt的XWindow程序可以非常方便地移植到Qt/Embedded版本上。不過,Qt/Embedded存在一些問題值得注意:首先,該系統(tǒng)采用兩種條款發(fā)布,如果要開發(fā)商業(yè)程序,就必須向TrollTech交納授權(quán)費用。其次,Qt/Embedded是一個C++函數(shù)庫,當(dāng)Qt/Embedded裁剪到最小630kB,但這時的Qt/Embedded庫已經(jīng)基本上失去了使用價值,低的程序效率、大的資源消耗也對運行Qt/Embedded的硬件提出了更高的要求。第三,Qt/Embedded庫目前主要針對手持式信息終端,因為對硬件加速支持的匱乏,很難應(yīng)用到對圖形速度、功能和效率要求較高的嵌入式系統(tǒng)當(dāng)中,比如機(jī)頂盒、游戲終端等等。第四,Qt/Embedded的結(jié)構(gòu)過于復(fù)雜,很難進(jìn)行底層的擴(kuò)充、定制和移植。b.MiniGUIMiniGUI是由清華大學(xué)魏永明主持開發(fā)的,并由許多自由軟件開發(fā)人員支持的一個自由軟件項目,其目標(biāo)是為基于Linux的實時嵌入式系統(tǒng)提供一個輕量級的圖形用戶界面支持系統(tǒng)。MiniGUI體系結(jié)構(gòu)是分層設(shè)計的,在最底層,圖形抽象層(GAL)和輸入抽象層(IAL)提供底層圖形接口以及輸入接口,如鼠標(biāo)和鍵盤的驅(qū)動;中間層是MiniGUI的核心層,其中包括了窗口系統(tǒng)必不可少的各個模塊;最頂層的API是提供給用戶的編程接口。與MicroWindows、Qt/Embedded等GUI相比,MiniGUI最顯著特點是占用資源小和可移植性好。但是,MiniGUI還存在諸多不足。譬如,它還缺乏開發(fā)應(yīng)用程序的集成開發(fā)環(huán)境,以及一些必要的應(yīng)用程序,如瀏覽器等一些Internet工具。同時,這些不足也在不同程度上阻礙著MiniGUI的推廣和應(yīng)用。c.MicroWindows/NanoXMicroWindows是一個開放源碼的嵌入式GUI軟件,由CenturySoftware公司主持開發(fā),目的是把圖形視窗環(huán)境引入到運行Linux的小型設(shè)備和平臺上,它有許多針對現(xiàn)代圖形視窗環(huán)境的功能部件。MicroWindows體系結(jié)構(gòu)是基于客戶機(jī)/服務(wù)器的,并且具有分層設(shè)計,在最底層,屏幕和輸入設(shè)備驅(qū)動程序與實際硬件交互;在中間層,可移植的圖形引擎提供對線的繪制、區(qū)域的填充、多邊形的裁剪14以及顏色模型的支持;在最上層,實現(xiàn)了可以用來開發(fā)圖形應(yīng)用程序的多種API函數(shù)。目前,MicroWindows支持兩種API函數(shù):MicroWindowsAPI和Nano-XAPI。MicroWindowsAPI適用于所有Win32和WinCE的應(yīng)用程序。Nano-X是MicroWindows支持的類XAPI,沿用XWindows中的XlibAPI。與Xlib實現(xiàn)不同,Nano-X仍在每個客戶機(jī)上同步運行,這意味著一旦發(fā)送了客戶機(jī)請求包,服務(wù)器在為另一個客戶機(jī)提供服務(wù)之前一直等待,直到整個包都到達(dá)為止。這使服務(wù)器代碼非常簡單,而運行的速度仍非???。但是,Nano-X聯(lián)網(wǎng)功能部件至今沒有經(jīng)過適當(dāng)?shù)卣{(diào)整(特別是網(wǎng)絡(luò)透明性),并且MicroWindows性能不高,特別在圖形引擎中有許多低效的算法,所以也還沒有太多現(xiàn)成的應(yīng)用程序可用。d.GTK+GTK+是建立在Xwindow和Glib庫上的輕量級高級圖形庫,旨在為應(yīng)用程序提供一套與平臺無關(guān)的圖形用戶界面接口。Xwindow是一種圖形用戶界面系統(tǒng),它為應(yīng)用程序提供了豐富的作圖資源。它有經(jīng)過精簡的Xlib類庫,去掉了許多對設(shè)備的檢測過程,占用資源少且穩(wěn)定性和移植性好。其主要功能特點有穩(wěn)定可靠、靈活、提供了事件驅(qū)動和信號/回調(diào)函數(shù)的消息傳遞機(jī)制、支持多類資源文件等優(yōu)點。GTK+與其依賴庫的關(guān)系如圖2.2所示。其中,Glib是Linux系統(tǒng)下最常用的輕量級的C語言函數(shù)庫,它提供了C常用的數(shù)據(jù)結(jié)構(gòu)定義、處理函數(shù)、宏、可移植的封裝和一些運行時機(jī)能,如事件循環(huán)、線程、動態(tài)調(diào)用、對象系統(tǒng)等的API;Xlib是TinyX的底層函數(shù)庫,是用來控制顯示的底層圖形庫,它提供了豐富的作圖資源;Gdk是建立在Xlib上的針對圖形圖象類的封裝,具有良好的移植性;GTK+即是建立在Xlib和GDK上的面向?qū)ο蟮母呒夘悗臁?yīng)用程序主要采用GTK+編寫,但是也可以直接調(diào)用GDK,Xlib和Glib的有關(guān)函數(shù)。GTK+系統(tǒng)使用事件驅(qū)動和信號回調(diào)機(jī)制作為應(yīng)用程序的創(chuàng)建構(gòu)架。當(dāng)用戶對界面控件做出某種操作即會產(chǎn)生一個事件。此時程序會收到消息并通知該控件有事件發(fā)生,控件即會產(chǎn)生特定信號并根據(jù)此信號調(diào)用相應(yīng)回調(diào)函數(shù)執(zhí)行功能處理。GTK+程序控制權(quán)傳遞基于“事件”和“信號”機(jī)制。gtk_main()函數(shù)是GTK+主處理循環(huán),當(dāng)程序運行到這里時,GTK+進(jìn)入等待狀態(tài),直到界面控件對象發(fā)生了某種事件(如鼠標(biāo)點擊、鍵盤輸入、焦點轉(zhuǎn)移等),這些事件都由支持系統(tǒng)收集,將其以事先約定的格式翻譯為特定的消息并發(fā)送。GTK+主循環(huán)捕獲到事件后通知該控件并產(chǎn)生特定信號,此時控制權(quán)就轉(zhuǎn)讓給了相應(yīng)的函數(shù)調(diào)用,由事先與該控件及信號建立關(guān)聯(lián)的所謂“回調(diào)函數(shù)”對其處理?;卣{(diào)函數(shù)即是用于實現(xiàn)功能處理的代碼。整個GTK+程序就一直處于“收到事件、發(fā)出信號、處理信號”的循環(huán)中,直到關(guān)閉的消息傳來退出循環(huán),結(jié)束程序。e.信號處理函數(shù)信號處理函數(shù)又叫回調(diào)函數(shù),它是GTK+程序的主體部分,應(yīng)用程序?qū)嶋H所做的工作大部分都發(fā)生在信號處理函數(shù)中,設(shè)計這些函數(shù)也是編程者的主要工作之一。回調(diào)函數(shù)的主要任務(wù)就是接收信號并實現(xiàn)功能,它具有以下形式:voidfunc(GtkWidget*widget,gpointercallback_data);其中,widget是指向發(fā)出信號的控件指針,callback_data是指向要傳遞給回調(diào)函數(shù)的用戶附加數(shù)據(jù)。由于回調(diào)函數(shù)是與控件以及事件信號一一對應(yīng)的,因此當(dāng)操作界面較為復(fù)雜控件信號較多時,回調(diào)函數(shù)的個數(shù)也會有很多。特定控件發(fā)出了特定信號后應(yīng)用程序需要知道調(diào)用哪個回調(diào)函數(shù)來處理信號,因此編程者必須創(chuàng)建這二者之間的關(guān)聯(lián)關(guān)系,GTK+系統(tǒng)稱之為信號連接器。用以連接信號和回調(diào)函數(shù)的信號連接器創(chuàng)建函數(shù)如下:gintgtk_signal_connect(GtkObject*object,gchar*name,GtkSignalFuncfunc,19gpointerfunc_data);其中,object是發(fā)出的信號的控件指針;name是發(fā)出的信號名稱,為字符串形式,用雙引號引起來;func是發(fā)出信號后要調(diào)用的函數(shù)名,即回調(diào)函數(shù)名,需要用G_CALLBACK宏來轉(zhuǎn)換;func_data是要傳遞給回調(diào)函數(shù)的用戶附加數(shù)據(jù),它的值類型為gpointer,如果不是這一類型需要強(qiáng)制轉(zhuǎn)換,如果沒有參數(shù)則為NULL。這里只能傳遞一個參數(shù),如果有多個參數(shù)可以先將它們定義為一個結(jié)構(gòu)體,再將此結(jié)構(gòu)體作為參數(shù)傳遞過去。這樣當(dāng)控件object發(fā)出了信號name后,程序即會調(diào)用回調(diào)函數(shù)func來處理信號。播放器的設(shè)計流程設(shè)計播放器的系統(tǒng)結(jié)構(gòu)由于嵌入式Linux媒體播放器的設(shè)計既要滿足對特殊嵌入式系統(tǒng)的要求,又要做到功能強(qiáng)大、界面友好、簡單可用,經(jīng)過分析關(guān)鍵要做到以下幾點:第一要支持Linux系統(tǒng);第二點是播放器的整體結(jié)構(gòu)基于分層設(shè)計,使各個功能模塊層次結(jié)構(gòu)清晰,條理清楚;第三點是擴(kuò)展的解碼器接口,可以方便的添加對解碼格式和解碼協(xié)議的擴(kuò)展功能;第四點是播放器框架不基于某種特定的架構(gòu),以增強(qiáng)其移植性;最后是要具有友好的圖形用戶界面,操作簡單方便。通過使用C語言開發(fā)來支持嵌入式Linux系統(tǒng);采用GTK+作為GUI來提供強(qiáng)大的用戶界面;采用FFMpeg開源解碼庫來完成解碼工作,它支持多種音頻和視頻編解碼標(biāo)準(zhǔn),功能十分強(qiáng)大,并且實現(xiàn)一個預(yù)先定義好的的解碼器接口來增強(qiáng)對多種格式媒體文件的解碼擴(kuò)展性;利用SDL來完成對音視頻的輸出,消除對架構(gòu)的依賴,保證了良好的可移植性。圖形用戶界面模塊接收到用戶的播放指令之后,就調(diào)用輸入模塊的相應(yīng)函數(shù)從本地文件或者網(wǎng)絡(luò)流媒體文件取得已壓縮數(shù)據(jù),然后將它送到相應(yīng)的解碼器,解碼之后取得的未經(jīng)壓縮的數(shù)據(jù)再將其傳遞給實現(xiàn)回放操作的功能塊。另外再加上負(fù)責(zé)處理與用戶交互的圖形用戶界面,銜接各個部分良好工作的控制管理功能,所以經(jīng)過分析之后將播放器劃分為輸入、輸出、插件接口、解碼器四個模塊。從功能上,它們各自所執(zhí)行的功能是互相獨立的;從另一方面來看,他們又是相互緊密聯(lián)系的??梢詫⒁纛l視頻的解碼程序以插件的形式封裝在解碼器模塊中,對不同格式的媒體文件可以使用解碼器模塊中封裝的對應(yīng)的解碼器插件。同時,為了調(diào)用的方便,可以在插件接口模塊和解碼器模塊之間采用一套統(tǒng)一的解碼器封裝接口。播放器主程序只需要調(diào)用接口函數(shù)就可以控制媒體數(shù)據(jù)的播放了,根本不需要了解媒體數(shù)據(jù)的格式及解碼算法,這使得播放器的主程序與解碼器模塊具有相對獨立性。當(dāng)需要增加一種新的媒體播放類型時,只需要按照封裝接口,編寫要添加的解碼器插件即可,而不需要對播放器的主程序做任何改動,這就使得播放器的可擴(kuò)展性增強(qiáng)。只要在解碼器選擇方面,可以將解碼器種的所有解碼插件通過注冊函數(shù)注冊到插件接口模塊上,這樣,就可以根據(jù)輸入文件的擴(kuò)展名和文件的頭信息選擇合適的解碼器,之后實現(xiàn)媒體數(shù)據(jù)的播放。界面設(shè)計圖形用戶界面窗口以Qt/Embedded為基礎(chǔ)開發(fā),通過調(diào)用Qt/Embedded提供的類庫根據(jù)需要設(shè)計可以管理多媒體文件的基本窗口,包括打開、刪除、顯示文件長度、顯示播放時間等窗口,以及為方便用戶設(shè)定的管理播放列表、進(jìn)行播放控制的窗口,這些都是直接和用戶打交道的,由于采用Qt/Embedded最為廣泛使用的GUI,可移植性得到了保證。本程序的主界面分別是由用戶播放控制區(qū)域和視頻圖像顯示區(qū)域組成。包括的窗口部件包口:菜單欄、按鈕欄、進(jìn)度條、視頻播放界面、文件添加界面等。用戶播放控制區(qū)域主要包括播放控制按鈕和彈出菜單,是由GTK+來負(fù)責(zé)創(chuàng)建控件,設(shè)置控件屬性并顯示窗體,主要的功能包括打開文件、打開URL、播放、停止、暫停、播放位置導(dǎo)航、音量調(diào)節(jié)等。視頻圖像顯示區(qū)域通過SDL來完成圖像的顯示。在界面的布局上可以自行調(diào)整,也可以采用布局管理器方式,這里簡單介紹一下布局管理器方式,它為窗口部件提供了有感知的默認(rèn)值,對子窗口部件的大小和位置做出適當(dāng)?shù)恼{(diào)整。所以布局管理器方式是對設(shè)計圖形化用戶界面、組織管理界面窗口部件是最好的方法。布局管理器方式主要有四種管理器:水平布局管理器(QHBoxLayout),按水平的方向組織管理窗口部件;垂直布局管理器(QVBoxLayout),按垂直方向管理窗口部件;網(wǎng)格布局管理器(QGridLayout),按二位網(wǎng)格方式組織管理窗口部件;站布局管理器(QStackedLayout),按照一種類似于棧的方式組織管理窗口部件,在某一時刻只有一種窗口部件是可見的。在本程序中界面的設(shè)計采用了基本的水平布局管理器和垂直布局管理器。模塊設(shè)計輸入模塊輸入模塊主要是響應(yīng)用戶通過圖形界面發(fā)出的文件打開命令,主要是對用戶指定的文件進(jìn)行讀取和解析,將獲得文件的長度、播放時間、編碼格式等內(nèi)容,結(jié)合MIME的處理,顯示預(yù)先設(shè)計的窗口中。它將獲得待播放文件的文件路徑和文件名。在此之后,它將首先判斷文件的路徑是否合法,文件是否為空,如果文件路徑不合發(fā)或文件為空,輸入模塊將退出執(zhí)行,其他模塊和界面將沒有變化。如果文件路徑合法同時文件不為空,它將開始對播放進(jìn)行初始化,初始化結(jié)束后它將向插件接口模塊發(fā)出信號,通過其查找該文件的可用解碼器,為文件解碼做好準(zhǔn)備。輸出模塊輸出模塊主要功能是將通過解碼器解碼之后的音頻和視頻數(shù)據(jù)送到輸出設(shè)備輸出。根據(jù)輸出內(nèi)容的不同可劃分為音頻數(shù)據(jù)和視頻數(shù)據(jù)。這兩個部分基本上是相互獨立輸出的。之后他們分別調(diào)用音頻解碼器和視頻解碼器進(jìn)行解碼。通過插件接口模塊的同步控制讓它們在說輸出時保持同步。再分別通過音頻和視頻輸出設(shè)備輸出。視頻輸出的主要步驟:1.根據(jù)屏幕尺寸創(chuàng)建兩個對象,一個用于存放當(dāng)前幀,一個用于旋轉(zhuǎn)幀;2.檢查解碼以后的視頻數(shù)據(jù)是否已經(jīng)準(zhǔn)備就緒;3.判斷當(dāng)前幀是否可見,若不可見直接等待可輸出的下一幀;4.獲取視頻畫面的長和寬,以便來設(shè)置輸出還的長寬比,如果文件畫面尺寸比軟件的畫面大,程序會自動適應(yīng)文件的畫面尺寸,當(dāng)用戶選擇全屏播放時,會按照比例把畫面擴(kuò)大至全屏,當(dāng)然用戶也可以用拖拽來自定義播放畫面的大小。5.把等待輸出的區(qū)域上空清空,并且為創(chuàng)建的對象分配區(qū)域。6.將準(zhǔn)備好的幀發(fā)送到步驟5分配好的區(qū)域,以便輸出到顯示設(shè)備上。插件接口模塊插件接口模塊通過輸出文件的擴(kuò)展名和文件的頭部信息來判斷該輸入文件是否被播放器所支持;對解碼模塊種的所有解碼器進(jìn)行注冊;能夠獲取播放文件的信息。能夠停止播放文件,并做出相應(yīng)的處理;能夠調(diào)用解碼器對音頻采樣數(shù)據(jù)進(jìn)行讀取,能夠調(diào)用解碼器對視頻幀進(jìn)行讀取等。插件接口調(diào)用主要是把所有對解碼器的操作整合到一個統(tǒng)一的開放式接口當(dāng)中,根據(jù)上一部分解析出的文件信息區(qū)查找相應(yīng)的解碼器插件并調(diào)用,如果沒有找到可用的解碼器可以返回信息提醒用戶添加相應(yīng)的插件。通過實現(xiàn)這樣的接口可以使播放器的擴(kuò)展性大大提高,因此本部分是播放器的核心。由此該模塊實現(xiàn)了兩種接口函數(shù),一種是用于處理網(wǎng)絡(luò)流媒體數(shù)據(jù)的網(wǎng)絡(luò)傳輸協(xié)議接口,另一種是負(fù)責(zé)處理本地媒體文件的接口。本地文件接口主要負(fù)責(zé)從存放在本地文件系統(tǒng)中的媒體文件中讀取媒體數(shù)據(jù),經(jīng)過對數(shù)據(jù)進(jìn)行簡單的分析之后,再交由音視頻解碼模塊進(jìn)一步的處理;網(wǎng)絡(luò)流媒體傳輸接口則負(fù)責(zé)實現(xiàn)網(wǎng)絡(luò)流協(xié)議的客戶端協(xié)議部分,將待實現(xiàn)的網(wǎng)絡(luò)傳輸協(xié)議按照統(tǒng)一的接口進(jìn)行封裝就可以擴(kuò)展其處理更多種協(xié)議的功能,所以具有一定的擴(kuò)展性。另外需要一個系統(tǒng)主控模塊,主要功能是過圖形用戶界面模塊為用戶提供一個播放器的控制接口,另一方面負(fù)責(zé)協(xié)調(diào)管理圖形用戶界面、音視頻解碼、數(shù)據(jù)訪問這三大模塊良好的協(xié)同工作。播放器在播放過程種會涉及到幾種播放狀態(tài)的轉(zhuǎn)換,包括播放、暫停、停止,在播放流媒體數(shù)據(jù)時還會涉及到超時的狀態(tài),通過系統(tǒng)管理主控模塊對其它幾個模塊的協(xié)調(diào)調(diào)度,實現(xiàn)播放狀態(tài)的轉(zhuǎn)換。解碼庫模塊解碼庫模塊的主要作用是對音頻和視頻的已壓縮數(shù)據(jù)進(jìn)行解碼。解碼庫又含解碼器和分離器,用于對各種多媒體文件進(jìn)行解碼。。解碼器就是對音頻視頻數(shù)據(jù)流進(jìn)行解碼的組件,分離器就是把文件流中的數(shù)據(jù)分離為音頻視頻數(shù)據(jù)流的組件,音頻數(shù)據(jù)和視頻數(shù)據(jù)是分開解碼的,二者缺一不可。該模塊采用統(tǒng)一的接口將所有解碼器的程序進(jìn)行封裝,也采用動態(tài)加載的方式實現(xiàn)各自數(shù)據(jù)的解碼。播放器功能的實現(xiàn)界面的詳細(xì)開發(fā)過程:通過定義QLable的對象制作播放窗口;定義QListWidget的對象控件制作播放列表;定義QPushButton的對象制作按鈕;定義QSlider的對象制作聲音控制條和播放進(jìn)度控制條。設(shè)置界面大小#include<QtGui>#include<QtWidgets/QtWidgets>#include"movieForm.h"intmain(intargc,char**argv){QApplicationapp(argc,argv);QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));MovieForm*movieForm=newMovieForm;movieForm->show();returnapp.exec();}resize(720,480);//界面大小setWindowTitle("Mplayer");//設(shè)置窗口標(biāo)題為Mplayerview=newQLabel("",this);view->setGeometry(QRect(30,30,480,335));timeLabel=newQLabel(this);timeLabel->setGeometry(QRect(30,370,200,20));//添加文件欄percentLabel=newQLabel(this);percentLabel->setGeometry(QRect(180,370,50,20));//控制欄聲明槽函數(shù)voidnext();voidpre();voidpause();voidstop();voidchangeVolume(int);voidsetSpeed();voiddataRecieve();voidcurrent(int);voidjumpByTime();voidsureBtnClicked();voidplayListItem(QListWidgetItem*);voidadd();voiddel();聲明及添加按鈕:QPushButton*p

溫馨提示

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

評論

0/150

提交評論