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