APP下载

基于MFC与UML的多媒体播放器研究

2016-05-30刘鸿沈

刘鸿沈

摘 要:该播放器采用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.