劉鴻沈
摘 要:該播放器采用UML技術(shù)與面向?qū)ο蠹夹g(shù)研發(fā),包含音頻-視頻-圖片、信息一覽表、播放列表、控制區(qū)、文件解析等功能模塊。該播放器利用Microsoft MFC及ActiveX技術(shù)進(jìn)行播放界面、操作界面設(shè)計。該播放軟件功能完備、易用、容錯性強、界面友好,能夠綁定于當(dāng)前主流操作系統(tǒng)之上。
關(guān)鍵詞:多媒體播放器;微軟基礎(chǔ)類庫;統(tǒng)一建模語言;ActiveX
電腦播放器已經(jīng)成為居家及工作的必備,它可以帶來音樂、影視、圖片等多元化的娛樂效果[1]。目前市場上免費播放器很多,但大多數(shù)傳統(tǒng)多媒體播放器的功能較為單一、界面單調(diào),資源存儲能力較弱。而功能強大、界面友好、數(shù)據(jù)安全的多媒體播放器不僅給人們帶來前所未有的視覺沖擊,并且能夠根據(jù)不同的要求把不同的媒體文件進(jìn)行劃分與管理[2]。因此,研究開發(fā)這樣一款能夠兼播放、瀏覽、存儲、管理于一體的播放器,為當(dāng)前研究熱點之一。
1 系統(tǒng)功能需求分析
考慮方便用戶使用及用戶個性化設(shè)置等諸多因素。最終得出該系統(tǒng)主要功能:首先,可以對多媒體文件進(jìn)行播放、瀏覽;其次是可以對這些喜歡的文件進(jìn)行管理,可以建立播放列表,把自己喜歡的文件加入到列表中,以便今后瀏覽,并且可以對這些的媒體文件進(jìn)行表間的編輯管理,如剪切、移動、復(fù)制等等。最后,系統(tǒng)自動讀取和記錄系統(tǒng)的當(dāng)前狀態(tài),系統(tǒng)每次啟動時,自動讀取配置信息,并配置播放器,當(dāng)播放器系統(tǒng)關(guān)閉時,系統(tǒng)自動保存關(guān)閉時刻的系統(tǒng)配置信息,以實現(xiàn)配置記錄功能。各項功能具體描述如下:
①音頻播放:實現(xiàn)對音頻文件的播放功能。包括mp3/wma等格式。
②視頻播放:實現(xiàn)對視頻文件的播放功能,包括jpg/png/gif/bmp等格式。
③圖片播放:實現(xiàn)對圖片文件的播放功能,包括wmv/avi/asf/rmvb等格式。
④媒體文件分類:根據(jù)用戶的需求,對混合的多媒體文件進(jìn)行音頻、視頻、圖片的分類顯示。
⑤播放控制:實現(xiàn)對媒體播放的控制,播放、暫停、停止、上一個、下一個、編輯、全屏、音量控制、進(jìn)度控制、進(jìn)度時間顯示等等。
⑥資源列表:用來顯示當(dāng)前選定的Play List中的多媒體文件信息列表。
⑦資源排序:對資源列表中的多媒體文件信息按照條件進(jìn)行排序。
⑧資源編輯:對資源列表中的多媒體文件進(jìn)行復(fù)制、粘貼、剪切、移動、全選、反選等操作。
⑨播放模式:單曲播放、單曲循環(huán)、順序播放、循環(huán)播放、隨機播放等。
2 系統(tǒng)總體設(shè)計
2.1 系統(tǒng)總體結(jié)構(gòu)圖
經(jīng)過系統(tǒng)需求分析,最終確定了該播放軟件系統(tǒng)的9個主要功能模塊,如圖2.1所示:
圖2.1中系統(tǒng)功能模塊及其間關(guān)聯(lián)具體說明如下:
序號1:三大模塊向資源列表發(fā)送分類及操作消息。
序號2:三大模塊向Control控制區(qū)發(fā)送類型消息,以重繪Control控制區(qū)。
序號3:資源列表框向播放窗體模塊發(fā)送所要播放的文件信息消息。
序號4:資源列表框和Control控制區(qū)互發(fā)消息,用來根據(jù)文件重繪Control控制區(qū)和Control控制區(qū)控制資源列表框的文件播放及光標(biāo)定位。
序號5:Control控制區(qū)控制播放窗體的相關(guān)播放。
序號6:信息一覽表模塊接收資源列表框發(fā)送的文件句柄信息,并根據(jù)句柄信息顯示此文件的全部信息。
序號7:資源列表框與數(shù)據(jù)庫信息交互,資源列表框從數(shù)據(jù)庫讀取信息。
序號8:PlayList與數(shù)據(jù)庫的信息交互,從數(shù)據(jù)庫讀取PlayList的所有List,向資源列表框添加List時,要更新數(shù)據(jù)庫。
序號9:PlayList與資源列表框相關(guān)聯(lián),資源列表框根據(jù)List名字來檢索數(shù)據(jù)庫,來讀取文件信息,資源列表框添加文件時需要將其所在的List信息也存入數(shù)據(jù)庫,使之與List進(jìn)行關(guān)聯(lián)。
2.2 系統(tǒng)靜態(tài)結(jié)構(gòu)圖
該軟件系統(tǒng)設(shè)計采用面向?qū)ο笤O(shè)計方法,使用UML作為系統(tǒng)建模工具[3],最后得到了系統(tǒng)的8個主要類,類及其間的關(guān)聯(lián)如圖2.2所示:
上圖中系統(tǒng)的功能模塊及其間的關(guān)聯(lián)關(guān)系具體說明如下:
系統(tǒng)主類為CMediaDlg,由播放面板控制類CControl(包含各類控制按鈕類CButton),播放文件控制類CWMP(該抽象類具體化為各類具體播放控制類CLRC),播放列表控制類CPlayList組成(該類一方面與數(shù)據(jù)庫類DB關(guān)聯(lián),另一方面具體化為各類播放次序控制類COrder)三個基本類組成,并關(guān)聯(lián)播放媒體應(yīng)用類CMediaApp。數(shù)據(jù)庫類DB關(guān)聯(lián)媒體分析類CAanalyseMsg及播放列表控制類CPlayList。
3 系統(tǒng)實現(xiàn)
3.1 系統(tǒng)主要界面
多媒體播放器主界面包含本播放器軟件的所有可視操作界面。主窗體采用框架設(shè)計方法布局播放界面,播放界面分割為上下兩大欄,各自分為左中右三欄。界面設(shè)計以操作簡單流暢,方便用戶高效實用為設(shè)計目標(biāo)。系統(tǒng)界面設(shè)計采用Microsoft的ActiveX技術(shù)及C++程序設(shè)計語言[4][5],設(shè)計結(jié)果圖3.3所示。界面具體設(shè)計說明如下:上方是菜單欄,有一些設(shè)置和擴展功能。左側(cè)上方為媒體文件分類按鈕,有音頻、視頻、圖片三大分類,點擊相應(yīng)按鈕就會對資源列表框
中的資源文件進(jìn)行分類顯示;左下方是信息一覽表,用來顯示當(dāng)前播放文件的詳細(xì)信息等等;右側(cè)是資源列表框,用來顯示當(dāng)前選中的播放列表所存儲的媒體信息文件,還有一些功能按鈕對資源列表框進(jìn)行操作,包括排序、編輯、播放模式和搜索文件等;正上方是播放器的滾動信息欄,用來顯示當(dāng)前播放器系統(tǒng)的狀態(tài)信息、當(dāng)前播放曲目、錯誤提示信息等等;中間播放區(qū)由WindowsMediaPlayer實現(xiàn),是本播放器軟件的顯示核心;下方是Control控制區(qū),對本播放器的媒體播放控制按鈕全部集成在這一控制區(qū)域,并且會根據(jù)不同的媒體文件類別進(jìn)行自動重繪。系統(tǒng)其它界面設(shè)計從略。
3.2 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)實現(xiàn)
系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu)設(shè)計為Struct_MediaFileMsg結(jié)構(gòu)體的設(shè)計,該結(jié)構(gòu)體用來記錄單個文件的所有信息。系統(tǒng)其它數(shù)據(jù)結(jié)構(gòu)從略。
3.3 系統(tǒng)類函數(shù)實現(xiàn)
播放列表控制類CPlayList為系統(tǒng)基本核心類,該類包含多個功能函數(shù),其中OnSaveAllList函數(shù)為其中一個主要功能函數(shù),用來存取數(shù)據(jù)庫中多媒體資源。
該函數(shù)采用模塊化程序設(shè)計方法,應(yīng)用windows平臺下的MFC框架[6],函數(shù)流程具體說明如下:
①調(diào)用函數(shù)時首先讀取數(shù)據(jù)庫中的所有的列表名,并存入ListName數(shù)組。
②調(diào)用系統(tǒng)的文件夾瀏覽對話框,并自定義保存文件的路徑。
③依次根據(jù)列表數(shù)組的列表名,搜索數(shù)據(jù)庫的文件列表,讀取屬于列表數(shù)組元素的全部文件信息。
④依次把讀取到的文件信息形成M3U文件,并保存到本地便于快速存取播放[7]。其他函數(shù)及其他類的實現(xiàn)從略。
4 結(jié)論
該播放器在開發(fā)過程中采用面向?qū)ο蟪绦蛟O(shè)計語言,運用MFC應(yīng)用程序框架以及Microsoft的ActiveX控件,采用規(guī)范的軟件開發(fā)流程,因此保證了播放軟件研發(fā)質(zhì)量。本播放器實現(xiàn)了對圖片、音頻、視頻的多種格式文件的播放,軟件使用方便、流暢。主窗體上的視圖間可以隨意轉(zhuǎn)換是該播放軟件技術(shù)亮點,同時支持單曲、循環(huán)、隨機等多種播放模式,還支持音量的調(diào)節(jié)等一系列的操作。雖然該播放器經(jīng)過一段時間的使用,滿足了用戶對播放軟件個性化需求,實現(xiàn)了各種多媒體播放功能,提升了公司信息安全度,效果良好,但是系統(tǒng)內(nèi)存占用情況稍高、歌曲播放時、緩沖時間過長等問題將在今后不斷優(yōu)化。
參考文獻(xiàn):
[1]中國行業(yè)報告研究中心.2012-2016年多媒體播放器行業(yè)發(fā)展前景分析及投資規(guī)劃研究報告[EB/OL].http://www.reportrc.com/ITye/diann-
aoyuwaishe/256788.html,2012-04.
[2]吳玲達(dá),老松楊,魏迎梅.多媒體技術(shù)[M].北京:電子工業(yè)出版社,2007.12:132-145.
[3]牛麗平.UML面向?qū)ο笤O(shè)計與分析[M].北京:清華大學(xué)出版社,2007.06:124-136.
[4]譚浩強.C++程序設(shè)計[M].北京:清華大學(xué)出版社,2004.07:45-64.
[5]Mark Lee.C++ Programming for the Absolute Beginner[M].Course Technology, 2009.06:247-281.
[6]何風(fēng)華.Windows平臺上音樂播放器軟件的開發(fā)[J].兵工自動化,2000.03:60-62.
[7]王傳君,馮兵,周純玉.基于文件遍歷視頻點播系統(tǒng)的設(shè)計與實現(xiàn)[A].中國航海學(xué)會通信導(dǎo)航專業(yè)委員會2006年學(xué)術(shù)年會論文集[C],2006.08:373-377.