![基于VC媒體播放器的設計與實現(xiàn)_第1頁](http://file4.renrendoc.com/view/c171de3bebd95120c275119cd7919011/c171de3bebd95120c275119cd79190111.gif)
![基于VC媒體播放器的設計與實現(xiàn)_第2頁](http://file4.renrendoc.com/view/c171de3bebd95120c275119cd7919011/c171de3bebd95120c275119cd79190112.gif)
![基于VC媒體播放器的設計與實現(xiàn)_第3頁](http://file4.renrendoc.com/view/c171de3bebd95120c275119cd7919011/c171de3bebd95120c275119cd79190113.gif)
![基于VC媒體播放器的設計與實現(xiàn)_第4頁](http://file4.renrendoc.com/view/c171de3bebd95120c275119cd7919011/c171de3bebd95120c275119cd79190114.gif)
![基于VC媒體播放器的設計與實現(xiàn)_第5頁](http://file4.renrendoc.com/view/c171de3bebd95120c275119cd7919011/c171de3bebd95120c275119cd79190115.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
47/53摘要目前常見的多媒體軟件應該講各有特色,然而幾乎每一個都存在著不如人意的地點。我的課題是“基于VC++開發(fā)工具的媒體播放器軟件設計”,首先是初步介紹一些當前的媒體及媒體播放器,然后是詳細介紹一個由本人設計的多媒體播放器――cnplayer。該播放器是基于MFC集成開發(fā)環(huán)境,利用系統(tǒng)的MCI(mediacontrollerinterface)命令接口來編程,具有體積小,支持的播放格式多、系統(tǒng)資源占用少、支持播放列表編輯、支持各種視頻格式等功能優(yōu)勢,還實現(xiàn)了CD抓軌。關鍵詞:媒體播放器;MCI;播放列表;音頻;視頻AbstractTherearedifferentcharacteristicamongthenormalmultimediaplayeratpresent,butthereareshortcomingforallofthesesoftwarenearly.Mycenteris"ASoftwareOfMediaPlayerDesignedbyVC++ProgramLanguage".Firstly,letmeintroducethosemediaformatsandplayersatpresent,thenthereisaparticularpresentationforthemediaplayerthatdesignedbymyself--cnplayer.ThisplayerisbasedonMFC,referringtoMCI(mediacontrollerinterface)fromsystem,havingmanygoodfunctionssuchaslittlesize,supportingmanykindsofformatofmedia,takinguplesssystemresource,supportinglistcontrolforplayingitemandcatchtrackofCD.Keywords:mediaplayer;MCI;playlist;audio;video目錄摘要 IAbstract II1緒論 11.1課題研究的目的和技術(shù)進展的現(xiàn)狀 11.1.1研究本課題的目的 11.1.2技術(shù)應用的差不多現(xiàn)狀 11.2論文完成的要緊工作與課題研究的難點所在 21.2.1論文完成的要緊工作 21.2.2本課題的研究難點 22媒體格式簡介 42.1什么是媒體? 42.1.1媒體 42.1.2多媒體 52.2淺議數(shù)字音、視頻格式 52.2.1WAV格式 52.2.2MIDI格式 62.2.3CD格式 62.2.4MP3格式 62.2.5WAV格式 62.2.6MP4格式 62.2.7QuickTime格式 72.2.8DVD格式 72.2.9RealAudio格式 72.2.10AIFF格式 82.2.11ASF格式 82.3常見播放器 82.3.1RealPlayer 82.3.2WindowsPlayer 92.3.3QuickTimePlayer 93MCI命令接口編程 103.1MCI設備 103.2MCI函數(shù)與命令 103.2.1MCI命令 103.2.2MCI命令消息接口方式 133.2.3MCI命令字符串接口方式 164軟件需求分析 184.1需求分析 184.2可行性研究 185.1.1差不多界面設置 195.1.2打開文件,添加列表 195.1.3播放操縱 195.1.4對列表的操縱 205.1.5菜單設置 205.2.2打開文件,添加列表 215.2.3播放操縱 215.2.4對列表操縱 225.2.5菜單設置 226軟件設計結(jié)果 246.1主界面 246.1打開文件 256.1菜單操縱 267軟件評價 277.1軟件的特點 277.1軟件的不足 27結(jié)論 28參考文獻 29致謝 301緒論多媒體技術(shù)的概念和應用出現(xiàn)于20世紀80年代初期,通過十余年的進展,隨著計算機科學網(wǎng)絡的普及和多媒體技術(shù)的進展,已成為計算機領域進展的熱點技術(shù),針對目前各種媒體格式,如何簡單方便的播放各類媒體已成為人們普遍關注的問題,而媒體播放器的開發(fā)也變得十分重要。1.1課題研究的目的和技術(shù)進展的現(xiàn)狀1.1.1研究本課題的目的隨著技術(shù)的進展,多媒體素材類型也增多,包括音頻、視頻、圖像、動畫等,由于音視頻、圖像等的信息容量大,受硬件條件限制,以往多媒體應用并不廣泛,隨著硬件技術(shù)的不斷提高,多媒體技術(shù)已為各類人員廣泛使用,開發(fā)多媒體課件、網(wǎng)絡課程、網(wǎng)站、應用軟件、治理項目等均需利用多媒體素材,因此開發(fā)制作這一播放器具有備現(xiàn)實意義,與其它多媒體播放器比較,這一多媒體播放器具有功能強大、占用空間小的特點,它與現(xiàn)有多媒體資源應用狀況緊密結(jié)合,既具有專門強的直觀感,又不失一般性。1.1.2技術(shù)應用的差不多現(xiàn)狀Microsoft公司1998年推出了VisualC++6.0,它是支持Win32平臺應用程序(application)、服務(service)和控件(control)開發(fā)的可視化編程的集成環(huán)境。與VC++5.0的最大不同之處是它的關心功能更強大,MSDN(MicrosoftDeveloperNetworking)為包括VC++6.0在內(nèi)的所有微軟的程序產(chǎn)品提供在線關心;另外,類的對象的可用成員函數(shù)、成員變量及函數(shù)的參數(shù)類型與個數(shù)都能動態(tài)顯示在屏幕上,用戶無須記住那些復雜而又枯燥乏味的函數(shù)名及復雜的參數(shù),這無疑使得用VC++編程更加容易。因此VC++6.0可謂是Microsoft公司的王牌產(chǎn)品,編程功能強大而贏得寬敞程序的偏愛。多媒體技術(shù)差不多在如下若干方面開展了有效的應用:①多媒體治理信息系統(tǒng)、展示系統(tǒng);②多媒體電子出版物(Title);③計算機輔助教學、教育培訓;④計算機藝術(shù)制作、設計;⑤計算機娛樂-游戲、雙向電影;⑥協(xié)同工作。有發(fā)下三大進展趨勢:進一步完善計算機支持的協(xié)同工作環(huán)境;智能多媒體技術(shù);把多媒體信息實時處理和壓縮編碼算法集成到CPU中。1.2論文完成的要緊工作與課題研究的難點所在針對如上所述的研究方向,本課題“基于VC++開發(fā)工具的媒體播放器軟件設計”的要緊任務是深入理解各種媒體格式,開發(fā)出適用的播放器軟件。因此應解決的要緊問題是如何把你了解的多媒體和VC知識應用到實際編程當中去及編制的應用軟件的可用性、易用性、健壯性。1.2.1論文完成的要緊工作依照學習研究,本媒體播放器的開發(fā)基于VC++MFC的對話框,利用WindowsMCI(MediaControlInterface)控件和VC++6.0自帶的ActiveX控件――ActiveMovieControlObject來實現(xiàn)各類媒體格式的播放及程序界面處理。首先確定要解決的問題是弄清晰MCI函數(shù)與命令消息的名稱類型和功能;其次是通過分析媒體播放的具體過程,在打開媒體設備的過程中應用程序需要做哪些情況,以便在應用程序中加入對這些過程支持的代碼;在對應用程序的流程有了大致的輪廓以后(最好畫出流程圖),在開始考慮程序框架的設計,應用程序外觀的設計;最后也是最關鍵的確實是編寫實現(xiàn)播放媒體的代碼將播放器的差不多功能實現(xiàn),緊接著確實是程序的調(diào)試和完善。1.2.2本課題的研究難點本課題的難點如下:關于VC++集成開發(fā)工具的熟練使用,特不是MFC的使用,重點放在界面設計;各類媒體設備的播放函數(shù)及相應的命令;播放列表的生成及其操作(刪除而不阻礙其他文件的播放等);CD音軌的抓并轉(zhuǎn)換格式。以上各點構(gòu)成了本軟件的難點,在克難過程中,我的分析問題解決問題的能力有了專門大的進步,通過努力,一個占用空間小、簡單有用的小型媒體播放器終于完成了。我開發(fā)的媒體播放器支持所有mediaplayer支持的媒體格式的播放及其他AVI視頻的播放,實現(xiàn)了對播放列表的操縱,CD抓軌等功能。2媒體格式簡介2.1什么是媒體?2.1.1媒體一般來講,媒體(medium,復數(shù)形式為media)是一種信息公布和表現(xiàn)的方法,如正文、圖形、語音、音樂等,可按不同的標準分類。CCITT將媒體定義為以下五種:①感受媒體(Perceptionmedium):能直接作用于人的感官,使人產(chǎn)生感受的媒體。如語言、音樂、圖形、活動圖像、文本等。我們所講的“多媒體”意義上的媒體,要緊是指這一類媒體。感知媒體關心人們來感知環(huán)境。要解決的問題是:人在計算機環(huán)境中如何感知信息?就目前而言,人類要緊靠視覺和聽覺來感知環(huán)境的信息,觸覺作為一種感知方式也慢慢引入到計算機系統(tǒng)中。②表示媒體(Representationmedium):為傳輸感受而研究出來的中間手段,以便更有效地將感受從一地傳往另一地。表示媒體的特征用計算機內(nèi)部表示來刻畫。要解決的要緊問題是:計算機信息如何編碼?例子有:文本字符用ASCⅡ或EBCDIC碼表示。圖像能夠用JPEG格式BMP格式編碼。組合音頻/視頻序列能夠用不同的TV標準格式(PAL、SECAM等)編碼。③表現(xiàn)媒體(Perceptionmedium):用于信息傳輸中電信號和感受媒體之間轉(zhuǎn)換所用的媒體,意指信息輸入/輸出的工具和設備。要解決的問題是:信息通過何種媒體輸入到計算機中或從計算機中輸出?輸出媒體的例子有屏幕、紙和喇叭,而輸入媒體的例子有鍵盤、鼠標、攝像機和麥克風等。④存儲媒體(Storagemedium):用于存儲表示媒體的載體。數(shù)據(jù)存儲并不局限于計算機的部件,因此,紙也是一種存儲媒體。要解決的問題是:信息存儲在什么地點?存儲媒體的例子有:縮微膠片、磁盤等。⑤傳輸媒體(Transmissionmedium):用來將表示媒體從一地傳輸?shù)搅硪坏氐奈锢韺嶓w。要解決的問題是,在什么上面?zhèn)鬏斝畔ⅲ磕壳耙o使用網(wǎng)絡來進行信息傳輸,網(wǎng)絡介質(zhì)有同軸電纜、光纖等,無線方式進行通信正變得越來越廣泛。2.1.2多媒體從字面上看,所謂多媒體multimedia,確實是多種媒體的綜合,多媒體處理技術(shù)涉及到以上五種媒體形式。但如此的理解沒有接觸到多媒體概念的特定的內(nèi)涵,是遠遠不夠的。為了辨析多媒體的含義,我們給出兩個多媒體定義進行比較:①多媒體是指如此的一個計算機系統(tǒng):交互式綜合處理多種媒體信息-文本、圖形、圖像和聲音等,使多種信息建立邏輯連接,集成為一個具有交互性的系統(tǒng)。(Lippincatt,Byte1990年)②多媒體是下面兩種以上媒體組成的結(jié)合體:文本、圖形、動畫、圖像、視頻、聲音等。(IBM,multimediaFoundation,1990年)顯然,定義②是有問題的,因為按那個定義,電視節(jié)目就能夠看作是多媒體。這是因為,那個定義沒有體現(xiàn)出多媒體計算機技術(shù)的關鍵特性。定義①較好地體現(xiàn)了這一點:即多媒體的含義除多種媒體外,還包括集成性和交互性兩個重要的特性。2.2淺議數(shù)字音、視頻格式首先,我們來明確一下數(shù)字音、視頻的概念,它是指一個用來表示聲音強弱的數(shù)據(jù)序列,由模擬聲音經(jīng)抽樣、量化和編碼后得到的。簡單地講,數(shù)字音、視頻的編碼方式確實是數(shù)字音、視頻格式,我們所使用的不同的數(shù)字音、視頻設備一般都對應著不同的音頻文件格式。常見的數(shù)字音、視頻格式有:2.2.1WAV格式WAV格式是微軟公司開發(fā)的一種聲音文件格式,也叫波形聲音文件,是最早的數(shù)字音、視頻格式,被Windows平臺及其應用程序廣泛支持。WAV格式支持許多壓縮算法,支持多種音頻位數(shù)、采樣頻率和聲道,采納44.1kHz的采樣頻率,16位量化位數(shù),因此WAV的音質(zhì)與CD相差無幾,但WAV格式對存儲空間需求太大不便于交流和傳播。2.2.2MIDI格式MIDI是MusicalInstrumentDigitalInterface的縮寫,又稱作樂器數(shù)字接口,是數(shù)字音樂/電子合成樂器的統(tǒng)一國際標準。它定義了計算機音樂程序、數(shù)字合成器及其它電子設備交換音樂信號的方式,規(guī)定了不同廠家的電子樂器與計算機連接的電纜和硬件及設備間數(shù)據(jù)傳輸?shù)膮f(xié)議,能夠模擬多種樂器的聲音。MIDI文件確實是MIDI格式的文件,在MIDI文件中存儲的是一些指令。把這些指令發(fā)送給聲卡,由聲卡按照指令將聲音合成出來。2.2.3CD格式大伙兒都專門熟悉CD這種音樂格式了,擴展名CDA,其取樣頻率為44.1kHz,16位量化位數(shù)。CD存儲采納了音軌的形式,又叫“紅皮書”格式,記錄的是波形流,是一種近似無損的格式。2.2.4MP3格式MP3全稱是MPEG-1AudioLayer3,它在1992年合并至MPEG規(guī)范中。MP3能夠以高音質(zhì)、低采樣率對數(shù)字音、視頻文件進行壓縮。換句話講,音頻文件(要緊是大型文件,比如WAV文件)能夠在音質(zhì)丟失專門小的情況下(人耳全然無法察覺這種音質(zhì)損失)把文件壓縮到更小的程度。2.2.5WAV格式WMA(WindowsMediaAudio)是微軟在互聯(lián)網(wǎng)音頻、視頻領域的力作。WMA格式是以減少數(shù)據(jù)流量但保持音質(zhì)的方法來達到更高的壓縮率目的,其壓縮率一般能夠達到1:18。此外,WMA還能夠通過DRM(DigitalRightsManagement)方案加入防止拷貝,或者加入限制播放時刻和播放次數(shù),甚至是播放機器的限制,可有力地防止盜版。2.2.6MP4格式MP4采納的是美國電話電報公司(AT&T)所研發(fā)的以“知覺編碼”為關鍵技術(shù)的a2b音樂壓縮技術(shù),由美國網(wǎng)絡技術(shù)公司(GMO)及RIAA聯(lián)合公布的一種新的音樂格式。MP4在文件中采納了愛護版權(quán)的編碼技術(shù),只有特定的用戶才能夠播放,有效地保證了音樂版權(quán)的合法性。另外MP4的壓縮比達到了1:15,體積較MP3更小,但音質(zhì)卻沒有下降。只是因為只有特定的用戶才能播放這種文件,因此其流傳與MP3相比差距甚遠。2.2.7QuickTime格式QuickTime是蘋果公司于1991年推出的一種數(shù)字流媒體,它面向視頻編輯、Web網(wǎng)站創(chuàng)建和媒體技術(shù)平臺,QuickTime支持幾乎所有主流的個人計算平臺,能夠通過互聯(lián)網(wǎng)提供實時的數(shù)字化信息流、工作流與文件回放功能。Apple公司的QuickTime電影文件現(xiàn)已成為數(shù)字媒體領域的工業(yè)標準。QuickTime電影文件格式定義了存儲數(shù)字媒體內(nèi)容的標準方法,使用這種文件格式不僅能夠存儲單個的媒體內(nèi)容(如視頻幀或音頻采樣),而且能保存對該媒體作品的完整描述;QuickTime文件格式被設計用來適應為數(shù)字化媒體一同工作需要存儲的各種數(shù)據(jù)。因為這種文件格式能用來描述幾乎所有的媒體結(jié)構(gòu),因此它是應用程序間(不管運行平臺如何)交換數(shù)據(jù)的理想格式。QuickTime文件格式中媒體描述和媒體數(shù)據(jù)是分開存儲的,媒體描述或元數(shù)據(jù)(Meta-Data)叫做電影(Movie),包含軌道數(shù)目、視頻壓縮格式和時刻信息。同時Movie包含媒體數(shù)據(jù)存儲區(qū)域的索引。媒體數(shù)據(jù)是所有的采樣數(shù)據(jù),如視頻幀和音頻采樣,媒體數(shù)據(jù)能夠與QuickTimeMovie存儲在同一個文件中,也能夠存儲在一個單獨的文件或者在幾個文件中。2.2.8DVD格式DVDAudio是新一代的數(shù)字音、視頻格式,與DVDVideo尺寸以及容量相同,為音樂格式的DVD光碟,取樣頻率為“48kHz/96kHz/192kHz”和“44.1kHz/88.2kHz/176.4kHz”可選擇,量化位數(shù)能夠為16、20或24比特,它們之間可自由地進行組合。低采樣率的192kHz、176.4kHz盡管是2聲道重播專用,但它最多可收錄到6聲道。而以2聲道192kHz/24b或6聲道96kHz/24b收錄聲音,可容納74分鐘以上的錄音,動態(tài)范圍達144dB,整體效果出類拔萃。2.2.9RealAudio格式RealAudio是由RealNetworks公司推出的一種文件格式,最大的特點確實是能夠?qū)崟r傳輸音頻信息,尤其是在網(wǎng)速較慢的情況下,仍然能夠較為流暢地傳送數(shù)據(jù),因此RealAudio要緊適用于網(wǎng)絡上的在線播放。現(xiàn)在的RealAudio文件格式要緊有RA(RealAudio)、RM(RealMedia,RealAudioG2)、RMX(RealAudioSecured)等三種,這些文件的共同性在于隨著網(wǎng)絡帶寬的不同而改變聲音的質(zhì)量,在保證大多數(shù)人聽到流暢聲音的前提下,令帶寬較寬敞的聽眾獲得較好的音質(zhì)。2.2.10AIFF格式AIFF(.AIF)是蘋果公司開發(fā)的聲音文件格式,被Macintosh平臺和應用程序所支持。2.2.11ASF格式Microsoft公司的WindowsMedia的核心是ASF(AdvancedStreamFormat)。微軟將ASF定義為同步媒體的統(tǒng)一容器文件格式。ASF是一種數(shù)據(jù)格式,音頻、視頻、圖像以及操縱命令腳本等多媒體信息通過這種格式以網(wǎng)絡數(shù)據(jù)包的形式傳輸,實現(xiàn)流式多媒體內(nèi)容公布。ASF的最大優(yōu)點是體積小,適合網(wǎng)絡傳輸,用戶能夠?qū)D形、聲音和動畫數(shù)據(jù)組合成一個ASF格式的文件,不僅能夠?qū)⑵渌袷降囊曨l和音頻轉(zhuǎn)換為ASF格式,而且用戶還能夠通過聲卡和視頻捕獲卡將諸如傳聲器、錄像機等外設的數(shù)據(jù)保存為ASF格式。另外,ASF格式的視頻中能夠帶有命令代碼,用戶指定在到達視頻或音頻的某個時刻后觸發(fā)某個事件或操作。數(shù)字音、視頻給我們的生活帶來了前所未有的變化。它以音質(zhì)優(yōu)秀、傳播無損耗、可進行多種編輯和轉(zhuǎn)換而成為主流,同時應用于各個方面。例如我們常使用到的音響設備、IP電話、衛(wèi)星電話、數(shù)字衛(wèi)星電視以及專業(yè)錄音、制作等。展望以后,數(shù)字音、視頻將會應用于更多的領域,而且會擁有更清晰、更真實的音質(zhì)、更小巧的體積和更方便的傳輸和轉(zhuǎn)換功能。2.3常見播放器2.3.1RealPlayerRealNetworks推出的RealPlayer是目前最受歡迎的網(wǎng)絡流媒體播放器,它幾乎支持所有的媒體文件格式。除了RealNetworks自己推出的流媒體格式ram、rmm、ra、rm、rp、rt外,還支持SMIL、SWF、MP3、WMA、AVI、MPEG、JPEG、GIF及PNG等格式,但不支持QuickTime的文件格式。RealOnePlayer是RealNetworks公司最新推出的一種新型音-視頻綜合播放系統(tǒng),以取代該公司現(xiàn)有的3種主打產(chǎn)品,即RealPlayer、RealJukebox和GoldPass。RealOnePlayer的一大特點是多層畫面功能,即當一個屏幕播放影碟或歌曲的時候,旁邊有一個側(cè)屏幕提供有關影碟或歌曲的信息或廣告,能夠?qū)⒇S富多彩的Web頁面、生動傳神的畫面及聲音、相關背景的文字整合在同一個畫面上,使用戶得到一個完整的聲、視、訊信息。2.3.2WindowsPlayerWindowsMediaPlayer是一個基于DirectShow體系結(jié)構(gòu)的多媒體播放器。微軟借助自己在操作系統(tǒng)上的優(yōu)勢,將其作為操作系統(tǒng)默認的媒體播放器,目前最新的版本是11.0。它幾乎支持Windows下的所有媒體文件格式,包括CD音頻曲目文件、ASF、MPEG-1、MPEG-2、WAV、AVI、MIDI、VOD、AU、MP3等,同時能夠播放QuickTime文件。2.3.3QuickTimePlayerQuickTimePlayer是Apple公司的媒體播放器,現(xiàn)已推出了QuickTime7.0版,還有Windows版和Mac版,其特點是和Internet緊密結(jié)合,安裝是在網(wǎng)上進行的。QuickTimePlayer能夠直接播放的格式有QuickTime電影、AVI、AIFF音頻、SGI圖像、MacromediaFlash等。此外,QuickTimePlayer還能夠輸入各種格式的音頻、視頻和圖像媒體文件,并能轉(zhuǎn)換輸出為其他格式。QuickTimePlayer還支持基于HTTP、RTP、RTSP、FTP流格式的在線音頻和視頻。3MCI命令接口編程WindowsMCI(mediacontrolinterface)是操縱多媒體設備的高層、通用的命令接口。MCI可操縱所有Windows能驅(qū)動的多媒體設備,包括CD音頻(CDAudio)、數(shù)字視頻、動畫、數(shù)字化波形聲音、MIDI音序器、錄像機及影碟機等。MCI包含在Windows系統(tǒng)的MMSYSTEM.DLL動態(tài)鏈接庫中,有以協(xié)調(diào)多媒體事件和MCI設備驅(qū)動程序之間的通信。一些MCI設備驅(qū)動程序,如影碟機設備驅(qū)動程序,能夠直接操縱目標設備;而另外一些MCI設備驅(qū)動程序,如Wave和MIDI設備驅(qū)動程序,可通過MMSYSTEM中的函數(shù),間接操縱目標設備;還有一些MCI設備驅(qū)動程序則提供與其他Windows動態(tài)鏈接庫連接的高層接口。3.1MCI設備使用MCI的應用程序通過指定MCI的設備來區(qū)分MCI設備,設備類型講明了設備的物理類型。表1表出了可能用到的MCI設備類型。表3-1MCI設備類型MCI設備講明Cdaudio激光唱機Waveaudio數(shù)字化波形聲音設備SequencerMIDI音序器Overlay視頻疊加設備(窗口中的模擬視頻)Dat數(shù)字化磁帶音頻播放機Digitalvideo窗口中的數(shù)字視頻Scanner圖像掃描儀Vcr磁帶錄像機或播放機Videldisc影碟機Mmmovie多媒體影片播放器Other示定義的MCI設備3.2MCI函數(shù)與命令Microsoft提供的MMSYSTEM.H文件中定義了調(diào)用了MCI功能的數(shù)據(jù)類型和函數(shù)原型,在使用MCI功能的任何源模塊中都應包含該文件。3.2.1MCI命令應用程序能過MCI設備發(fā)送命令(命令消息或命令字符串)來操縱MCI設備,MCI命令能夠分為4類,如下所術(shù)。系統(tǒng)命令:直接由MCI解釋并由系統(tǒng)處理,是不傳送到MCI設備的命令。通用命令:所有MCI設備都支持的MCI命令??蛇x命令:MCI設備可選擇使用的MCI命令。專用命令:針對某類MCI設備或集合的專有MCI命令。MCI定義了兩種接口方式,即命令消息方式和命令字符串方式。相應地,MCI命令可分為命令消息和命令字符串。要緊的MCI命令及分類如表2所示,這些命令可能具有其相應的擴展形式。表3-2MCI命令列表MCI命令消息MCI命令字符串MCI命令講明MCI命令類型MCI_SYSINFOSYSINFO返回有關MCI設備的停息系統(tǒng)命令MCI_BREAKBREAK為一個指定的MCI設備設置一個終止鍵MCI_SOUNDSOUND播放一段Windows指定的系統(tǒng)聲音MCI_CLOSECLOSE關閉一個MCI設備通用命令MCI_GETDEVCAPSGETDEVCAPS獲得一個MCI設備的性能參數(shù)MCI_INFOINFO從一個MCI設備得到有關的信息MCI_OPENOPEN初始化一個MCI設備MCI_STATUSSTATUS從一個MCI設備返回有關的狀態(tài)信息MCI_LOADLOAD從一個磁盤文件中加載數(shù)據(jù)可選命令MCI_PAUSEPAUSE暫停播放數(shù)據(jù)MCI_PLAYPLAY開始播放數(shù)據(jù)MCI_RECORDRECORD開始記錄數(shù)據(jù)MCI_RESUMERESUME重新開始播放或記錄MCI_SAVESAVE將數(shù)據(jù)存儲到磁盤文件中MCI_SEEKSEEK向前或向后檢索MCI_SETSET設置設備信息MCI_STOPSTOP停止播放或記錄MCI命令都能夠帶兩個標志命令來操縱命令的方式,即“wait”和“notify”。它們在命令消息和命令字符串接口的形式和意思如表3所示。表3-3MCI標志命令命令消息命令字符串功能MCI_WAITwait通知MCI設備等,MCI命令執(zhí)行完后,才能將操縱權(quán)還給應用程序MCI_NOTIFYnotify通知MCI設備等,趕忙將操縱權(quán)交給應用程序,但當命令執(zhí)行完后,向應用程序發(fā)送MM_MCINOTIFY消息所有MCI函數(shù)都以mci為前綴。對應于MCI命令消息和命令字符串接口方式,MCI函數(shù)也分為兩類,即命令消息函數(shù)和命令字符串函數(shù)。在MMSYSTEM.H中定義了這些函數(shù)的原型。MCI函數(shù)如表4所示。表3-4MCI函數(shù)函數(shù)名功能類型mciSendCommand發(fā)送命令消息命令消息接口函數(shù)mciGetDeviceID獵取MCI設備的IDmciSetYieldProc設定一個回調(diào)函數(shù),在結(jié)束帶wait標志的命令時調(diào)用mciGetYieldProc獵取當前的回調(diào)函數(shù)mciSendString發(fā)送命令字符串命令字符串接口函數(shù)mciGetErrorString獵取當前MCI錯誤的字符串描述公用函數(shù)3.2.2MCI命令消息接口方式MCI命令消息接口方式利用消息和數(shù)據(jù)結(jié)構(gòu)來給多媒體設備發(fā)送命令和接收MCI設備傳來的信息。這種方式的接口函數(shù)要緊有3個,即mciSendCommand,mciGetDeviceID和mciGetErrorString。它們的函數(shù)原型如下:MCIERRORmciSendCommand(MCIDEVICEIDIDDevice,//設備IDUINTuMsg,//命令消息DWORDfdwCommand,//命令消息標志DWORDdwParam//命令消息使用的結(jié)構(gòu)參數(shù)地址);MCIDEVICEIDmciGetDeviceID(LPCTSTRlpszDevice//設備類型);BOOL(DWORDfdwError,//錯誤代碼LPTSTRlpszErrorText,//錯誤描述UINTcchErrorText//錯誤描述長度);mciGetDeviceID通過傳送MCI設備名lpszDevice來獵取MCI_OPEN命令消息找開MCI設備的標識號wDeviceID,其值可用于mciSendCommand的參數(shù)wDeviceID。mciSendCommand用于向標識號為wDeviceID的MCI設備發(fā)送命令消息uMsg。當用送MCI_OPEN命令消息打開一個設備時,將自動創(chuàng)建一個設備標識號。假如設備打開成功,能夠從MCI_OPEN_PARMS結(jié)構(gòu)的wDeviceID數(shù)據(jù)域中取得該設備的標識號,該值將保存以供后續(xù)的MCI命令使用。假如mciSendCommand調(diào)用成功,則返回值為0;否則表示設備驅(qū)動出錯,這時可用mciGetErrorString來取得錯誤信息的文字描述。MCI提供一個名為MCI_ALL_DEVICE_ID的專門設備標識號。當前所有已打開的MCI設備都將接收到對MCI_ALL_DEVICE_ID發(fā)送的任何MCI命令。使用任何一個MCI設備前都應先用MCI_OPEN打開它。打開MCI設備時,要求指定相應的MCI_OPEN_PARMS結(jié)構(gòu)。假如打開設備成功,則該結(jié)構(gòu)的wDeviceID域返回MCI設備的標識號ID。使用MCI_OPEN命令消息時可使用的命令消息中表5所示。MCI_OPEN_PARMS結(jié)構(gòu)定義如下:typedefstruct{DWORDdwCallback;//回調(diào)窗口句柄MCIDEVICEIDwDeviceID;//設備打開成功,返回的設備號LPCSTRlpstrDeviceType;//設備類型LPCSTRlpstrElementName;//復合設備的設備元素,通常為文件名LPCSTRlpstrAlias;//指定的設備不名}MCI_OPEN_PARMS;表3-5MCI_OPEN命令消息標志消息標志意義MC_OPEN_ALIASMCI_OPEN_PARMS結(jié)構(gòu)的lpstrAlias域中指定了設備不名MC_OPEN_ELEMENTMCI_OPEN_PARMS結(jié)構(gòu)的lpstrElementName域中指定了設備元素MC_OPEN_SHAREABE按共享設備方式打開設備MC_OPEN_TYPEMCI_OPEN_PARMS結(jié)構(gòu)的lpstrDeviceType域中指定了設備類型MC_OPEN_TYPE_IDMCI_OPEN_PARMS結(jié)構(gòu)的lpstrDeviceType域中指定了設備類型ID打開一個簡單的MCI設備不需要指定設備元素,即不需要指定一個數(shù)據(jù)文件,因此能夠僅僅指定MCI_OPEN_PARMS結(jié)構(gòu)中的wDeviceID和lpstrDeviceType兩個數(shù)據(jù)域。要打開一個復合的MCI設備,必須指定設備元素數(shù)據(jù)域lpstrElementName和設備類型數(shù)據(jù)域lpstrDeviceType。關于打開復合MCI設備,有以下3種方式可供選擇:為確定MCI設備的性能,能夠只指定設備的類型來打開MCI設備。這時,只同意確定MCI設備的性能,然后關閉設備,不般不能進行其它的操作。為使一個設備元素與指定設備相聯(lián)系,應同時指定設備元素(數(shù)據(jù)文件名)和設備類型。這時可對設備進行相應的各種操作。在使用隱含的MCI設備時,可只指定MCI設備(數(shù)據(jù)文件名),而把設備類型指定為NULL;MCI將依照設備元素的擴展名從系統(tǒng)定義中選擇隱含約定的MCI設備。應用程序在使用完一個MCI設備后應明確地關閉該MCI設備。MCI_CLOSE命令消息用于關閉并釋放MCI設備,即取消應用程序?qū)CI設備或設備元素的訪問權(quán)。當用MCI_SYSINFO命令消息獵取MCI設備系統(tǒng)信息時,需要在mciSendCommand的dwParam參數(shù)中指定MCI_SYSINFO_PARMS結(jié)構(gòu)的地址,系統(tǒng)信息將通過該結(jié)構(gòu)返回。與MCI_SYSINFO命令消息相關的消息標志如表6所示。MCI_SYSINFO_PARMS結(jié)構(gòu)定義如下:typedefstruct{DWORDdwCallback;//回調(diào)窗口句柄LPSTRlpstrReturn;//返回信息緩沖區(qū)地址DWORDdwRetSize;//返回信息大小DWORDdwNumber;//索引號UINTwDeviceType;//設備類型}MCI_SYSINFO_PARMS;表3-6MCI_SYSINFO命令消息標志消息標志意義MCI_SYSINFO_QUANTITY返回指定的設備類型的數(shù)目,如與MCI_SYSINFO_OPEN一起使用,則僅返回已打開的設備的數(shù)目MCI_SYSINFO_NAME返回設備名,如與MCI_SYSINFO_OPEN一起使用,則僅返回已打開的設備的名稱MCI_SYSINFO_OPEN僅返回已打開設備的信息MCI_SYSINFO_INSTALLNAME指定設備的安裝名稱在使用MCI設備時,還應注意共享、等待與通告等標志的使用。3.2.3MCI命令字符串接口方式MCI命令字符串使用ASCII字符串來發(fā)送驅(qū)動MCI設備的命令,這種方式采納的接口函數(shù)有mciSendString、mciGetErrorString。mciSendString用于向MCI設備發(fā)送命令字符串,其函數(shù)原型如下:MCIERRORmciSendString(LPCTSTRlpszCommand,//指向一個以NULL結(jié)尾的MCI命令字符串,格//式如下:comm.anddevice_nameargumentLPTSTRlpszReturnString,//指向一個用于存儲MCI命令執(zhí)行后返回的//字符串信息的緩沖區(qū)UINTcchReturn,//緩沖區(qū)大小HANDLEhwndCallback//指定一個同意MM_MCINOTIFY的窗口句柄,//非MCI命令中包含了notify標志,否則該參數(shù)可忽略。);4軟件需求分析4.1需求分析隨著計算機技術(shù)的進展和網(wǎng)絡的普及,多媒體素材類型越來越多,包括音頻、視頻、圖像、動畫等,由于音視頻、圖像等的信息容量大,受硬件條件限制,以往多媒體應用并不廣泛,隨著硬件技術(shù)的不斷提高,多媒體技術(shù)已為各類人員廣泛使用,開發(fā)多媒體課件、網(wǎng)絡課程、網(wǎng)站、應用軟件、治理項目等均需利用多媒體素材。本軟件是為滿足部分人的掃瞄需求而開發(fā)的,能打開多種媒體格式,小巧簡單,此外,為了方便使用,還具有對播放列表進行操作的功能,因此開發(fā)制作這一播放器具有備現(xiàn)實意義。4.2可行性研究要開發(fā)一個軟件程序,其方案十分重要。一個合理可行的方案有助于減少程序員的工作量、縮短開發(fā)周期,更重要的是能夠開發(fā)出運行效率更高、可移植性更好、健壯性更強的代碼。以下是本程序的方案論證:本程序的開發(fā)用的是VC++的MFC集成開發(fā)環(huán)境,開發(fā)本程序的方案大概有如下二種:1、利用VC開發(fā)環(huán)境提供的ActiveX控件――ActiveMovieControlObject2、利用系統(tǒng)自帶的MCI命令接口來編程。(1)第一種方法是使用ActiveX控件,MFC能夠利用“ActiveMovieControlObject”控件直接操作,實現(xiàn)起來特不簡單,但用到的是完全不人的東西,故而不是太好。(2)第二種方法是使用系統(tǒng)自帶的MCI命令接口。MCI包含在系統(tǒng)的MMSYSTEM.H文件中,參數(shù)較多,功能比較齊全,盡管使用起來比較煩瑣,然而更具有開發(fā)意義。綜上所述,使用系統(tǒng)自帶的MCI命令接口來編程的方法是比較理想的選擇。以下的開發(fā)設計流程確實是基于第二種方案的設計流程。5軟件開發(fā)與設計5.1程序設計的差不多思想最初運用MFC,建立對話框為差不多框架。因為本軟件是以系統(tǒng)自帶的MCI命令接口為基礎,因此為豐富本軟件,將重點和難點放在了界面設計方面。5.1.1差不多界面設置在差不多界面確定后,添加各類控件,如圖所示:圖5-1對話框差不多框架圖5-1對話框差不多框架將Button定義為自定義CButtonST按紐類的對象,進度滑條定義為自定義的CMySliderControl類的對象,時刻顯示靜態(tài)文本定義為自定義的CMatrixStatic。各個控件的位置是由程序操縱,因此原來擺在什么地點并不阻礙程序顯示出來的效果。5.1.2打開文件,添加列表打開文件有兩種方法,一是通過主面板上打開按紐,二是通過菜單中文件的子菜單――打開文件。添加文件:CButtonST,IDC_ADD,m_add5.1.3播放操縱播放操縱包括:播放(暫停),停止,上一首,下一首,循環(huán),播放進程操縱。播放操縱也可在菜單中進行操縱。播放:CButtonST,IDC_PLAY,m_play暫停:CButtonST,IDC_PAUSE,m_pause停止:CButtonST,IDC_STOP,m_stop上一首:CButtonST,IDC_PREVIOUS,m_previous下一首:CButtonST,IDC_NEXT,m_next循環(huán):CButtonST,IDC_REPEAT,m_repeat播放進程操縱CMySliderControl,IDC_SLIDER,m_slider5.1.4對列表的操縱列表的操縱包括:添加文件,刪除當前所選項,刪除全部,在列表中雙擊播放,列表的隱藏彈出。設置如下:添加文件:CButtonST,IDC_ADD,m_add刪除當前所選項:CButtonST,IDC_DEL,m_del刪除全部:CButtonST,IDC_DELALL,m_delall列表中的雙擊播放:LISTBOX本身的LBN_DBLCLK消息函數(shù)OnDblclkList()列表的隱藏彈出:CButtonST,IDC_HIDLIST,m_hid5.1.5菜單設置除去上述菜單操縱之外,菜單中還包括音量操縱,窗口總在最上。音量操縱:IDC_ONVOICE,m_voice窗口總在最上:ID_W_TOP5.2程序設計的詳細講明5.2.1界面設置各個自定義類的聲明:CButtonST類:詳細講明請見程序。CMySliderControl類:詳細講明請見程序。CMatrixStatic類:詳細講明請見程序。先設置差不多界面的圖形,如下:圖5-2主界面的圖在主對話框的類定義中聲明:private: voidInitMPlayerFace();//初始化界面在主對話框的初始化程序里調(diào)用該函數(shù),具體定義請參照程序中函數(shù):voidCMediaDlg::InitMPlayerFace()在主界面設置好相應的位置后,就開始定義各個控件的具體功能。5.2.2打開文件,添加列表打開添加文件的程序要緊寫在按紐的BN_CLICKED消息函數(shù)里面。程序詳見voidCMediaDlg::OnAdd()5.2.3播放操縱1)播放:voidCMediaDlg::OnPlay()2)暫停:voidCMediaDlg::OnPause()3)停止:voidCMediaDlg::OnStop()4)上一首:voidCMediaDlg::OnPrevious()5)下一首:voidCMediaDlg::OnNext()6)循環(huán):voidCMediaDlg::OnRepeat()7)播放進程操縱voidCMediaDlg::OnReleasedcaptureSlider(NMHDR*pNMHDR,LRESULT*pResult)以上程序代碼詳見畢業(yè)設計。5.2.4對列表操縱1)添加文件:CButtonST,IDC_ADD,m_add此函數(shù)同上述打開文件ONADD()。2)刪除當前所選項:voidCMediaDlg::OnDel()3)刪除全部:voidCMediaDlg::OnDelall()4)列表中的雙擊播放:LISTBOX本身的LBN_DBLCLK消息函數(shù)OnDblclkList()voidCMediaDlg::OnDblclkList()5)列表的隱藏彈出:voidCMediaDlg::OnHidli
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年輸送機械合作協(xié)議書
- 2025年通訊檢測儀器合作協(xié)議書
- 2025年代理買賣合同簡單版(三篇)
- 2025年買樓定金合同(2篇)
- 2025年產(chǎn)品銷售的協(xié)議(2篇)
- 2025年個人授權(quán)的合同委托(2篇)
- 2025年中班幼兒習慣培養(yǎng)總結(jié)模版(二篇)
- 2025年交通事故合同糾紛案例分析(2篇)
- 2025年二年級下冊班主任班級工作總結(jié)(4篇)
- 2025年人二手車買賣合同(2篇)
- 《也是冬天-也是春天》
- 鮮切水果行業(yè)分析
- 《中國探月工程》課件
- 義務教育物理課程標準(2022年版)測試題文本版(附答案)
- 第7章-無人機法律法規(guī)
- 藥劑科基本藥物處方用藥狀況點評工作表
- 初中音樂聽課筆記20篇
- 央國企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實施
- 拆遷征收代理服務投標方案
- 完形療法概述
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗收評定標準
評論
0/150
提交評論