劉鴻沈



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