多媒体播放器论文.doc_第1页
多媒体播放器论文.doc_第2页
多媒体播放器论文.doc_第3页
多媒体播放器论文.doc_第4页
多媒体播放器论文.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用Visual C+设计的多媒体播放器学生姓名: 指导老师: 摘 要 本课程设计的目的是制作一个可播放目前主流媒体格式的多媒体播放器,其基本功能应具有媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等,使之成为一款简易的媒体播放设备,能够完美的播放市面上大多数的音频、视频文件。在课程设计中,系统开发平台为Windows XP Professional SP2,程序设计环境采用Visual C+ 6.0。在程序设计中,我利用了Microsoft公司开发的ActiveX控件可视动画控件ActiveMovie,程序通过调试运行,初步实现了设计目标,并且经过适当完善及美化后,将可以成为一款精简实用的多媒体播放软件。该播放器是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能,除了基本的播放控制外,还具有多文件自动顺序循环播放、全屏播放、静音等实用功能。关键词 程序设计;ActiveMovie控件;多媒体;播放器32目录1. 引言 .11.1系统的设计目标和系统的意义.11.2多媒体播放器将达到的效果.21.3软件的开发设计思想.21.4开发工具的介绍.31.5可行性分析和需求分析.32 软件的需求分析和模块设计.42.1软件的需求分析.42.2软件的模块设计.43. 数据库设计.53.1数据需求分析.53.2数据库概念结构设计.53.3数据库逻辑结构设计 63.4数据库结构的实现 .74多媒体播放器软件设计.7福利费用个人罚款个人奖金基础工资4.1模块实现函数说明.74.2主要变量声明.84.3设计多媒体播放器界面.94.4播放器模块设计.94.5 功能模块设计.104.6歌曲信息模块的设计134.7 欢迎动画模块设计.165 程序实现结果.175.1 程序运行流程图.175.2 播放器实现结果演示.18结束语 .23考文献.24附录:源程序清单1 引 言随着多媒体硬件环境和软件环境的不断完善,多媒体在人类文化生活中扮演的角色越来越重要。就目前而言,多媒体技术已在商业教育培训、电视会议、声像演示等方面得到了充分应用。利用多媒体技术可为各类咨询提供服务,如旅游、邮电、交通、商业、金融、宾馆等,多媒体技术还将改变未来的家庭生活,尤其是在大部分计算机软件开发中都涉及多媒体软件技术的应用。简单说 ,多媒体(Multimedia)就是多种媒体的结合和使用 。这些媒体可以是图形、图形、声音、文字、视频、动画等表现形式,也可以使显示器、扬声器、电视机等信息的展示设备以及传输信息的光纤、光缆、电磁波等介质,还可以是存储信息的磁带、光盘、磁盘等存储设备。这些媒体的直接结合、综合使用,就构成多媒体。 确切的定义是,多媒体是一种能够让用户以交互方式将文本、图像、图形、音频、动画、视频等多种信息,经过计算机的软硬件设备获取、操作、编辑 、存储等处理过程后,以单独的或合成的形态表现出来的技术和方法。多媒体播放器就是汇集了多媒体方面的多种技术,使多媒体实现化的一种软件。1.1系统的设计目标和系统的意义这个课程设计的目的就是制作一个能够播放音频、视频文件的播放器,并使它具备一些简单的操作处理功能,如播放暂停的控制,音量的调节,多文件自动循环等等。将这个小型播放软件做得尽量的小巧、实用。多媒体技术是当今信息技术领域发展最快、最活跃的技术,是新一代电子技术发展和竞争的焦点。多媒体技术融计算机、声音、文本、图像、动画、视频和通信等多种功能于一体,借助日益普及的高速信息网,可实现计算机的全球联网和信息资源共享,因此被广泛应用在咨询服务、图书、教育、通信、军事、金融、医疗等诸多行业,并正潜移默化地改变着我们生活的面貌。多媒体技术已经成为当今比较热门的研究课题,特别是伴随着多媒体技术的网络化,使得多媒体技术的发展前景无限广阔,因此掌握多媒体及多媒体技术的相关知识,了解多媒体技术当前的发展状况及未来的发展前景,并能熟练地进行多媒体技术的开发,对于当前即将毕业的大学生来讲,是很有发展前途的。基于此,我选择了此课题多媒体播放器的设计与实现,期望通过对此课题的研究与开发,能深入了解多媒体技术,特别是掌握多媒体技术在媒体播放器中的应用。1.2 多媒体播放器将达到的效果本课程设计的目的是制作一个可播放目前主流媒体格式的多媒体播放器,其基本功能应具有媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等,使之成为一款简易的媒体播放设备,能够完美的播放市面上大多数的音频、视频文件。1.3软件的开发设计思想本系统开发设计思想:l 尽量利用人们现有的软件环境,采用简单快捷的设计方案,从而达到使用方便,容易操作的目的;l 此播放器可以满足大多数人日常使用的需要,并达到操作过程的直观、方便、实用、安全等要求;l 软件采用模块化程序设计方法,既便于软件功能的各种组合和修改,又便于技术维护人员进行补充、维护。1.4开发工具的介绍l 系统开发环境操作系统:Windows XP Professional 简体中文版开发平台:Visual C+ 6.0简体中文版l 开发平台介绍Visual C+ 6.0。它是微软公司推出的开发Win32应用程序(Windows 95/98/2000/XP/NT),面向对象的可视化集成工具。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。之所以选择Visual C+作为开发工具,不仅仅因为曾经有过使用它的经验,看中的更是它的功能强大和使用方便。它本身不仅具有极其强大的编程能力,它允许选择和管理外接程序,并内含多种实用控件,这些对Visual C+的扩充又进一步增强了它的开发环境的能力。1.5 可行性分析和需求分析l 经济可行性由于该软件属于个人开发,无需过大的资金投入.所以经济上是可行的。l 技术可行性VC+6.0中文版作为一个关系型数据库系统,它提供了面向对象的编程技术,可简化数据库管理,使开发应用程序这艰辛的工作就象堆木那样简单方便.另外, VC+6.0中文版开发的应用程序可以独立运行于WINDOWS平台. VC+6.0中文版,它是运行于W indows95/98和Window XP平台32位数据库系统,充分发挥了32位微处理器强大的32位数据处理性能.它功能强大,直观易用,支持客户/服务器结构和面向对象编程,提供多种可视化编程工具,支持最新Internet技术,WWW数据库的设计,最新流行的ActiveX 等。 VC+6.0中文版完全支持OOP(面向对象)的应用程序设计方法,VC+6.0使用了真正的类,包括继承性,封装性和多态性,用可视方式创建类,查看类及类代码;利用表单向导进行专业级界面设计;对表关系进行可视化查看;可利用OLE自动化来包含其他软件(如Excel, word)中的对象并使用这些软件。通过VC+6.0对象和事件模型,用户可以快速创建和实现无模式(Modeless)的应用程序;利用生成器和工具栏,开发人员可以快速开发应用程序,而省去编写大量的代码、定义繁多的属性。总之,VC+6.0中文版是一种适用于专业人员的开发工具。l 人员可行性我目前时间充足,可以完成开发任务。 而且C+语言和算法的功底还行,可以参与系统的算法设计与开发。我都有有深厚的文字功底,可以参与用户文档的制作、内部文档整理、后期测试等任务。2 软件的需求分析和模块设计2.1软件的需求分析当今互联网上已经有许多种类繁多的媒体播放器,而且都已经制作的相当完善。一般软件都支持大多数的主流媒体格式,具有十分友好的界面,强大的功能, 甚至有些播放器软件(如国产软件“暴风影音”)甚至可以支持外部插件。 但是强大繁多的功能,漂亮的界面带来的副作用就是内存占用量的正比上升。而我开发制作这款播放器的意图便是利用最小的内存和系统资源进行最基本的视听需要,让我们在享受视觉和听觉的美好享受时不用以大量的系统资源占用为代价。本程序要求实现的基本功能是实现音/视频的播放,要求主要的控制功能是播放、暂停、声音的大小控制、播放的拖放等功能。根据这些要求应该有相应的软硬件支持才能获得实现。可行性方面,我的计算机有声卡和集成显卡,使用的操作系统为微软的Windows XP,同时也安装了Visual C+ 6.0中文版。这个多媒体播放器基本上对软硬件没有太高的要求,在我目前的机器配置下足够实现它的全部功能。2.2软件的模块设计该播放器程序共分8个模块,结合ActiveMovie控件可以实现预期的所有功能。程序的功能模块图如图1:多媒体播放器 全屏模块暂停模块停止模块关闭模块播放模块循环模块音量模块 添加模块 图1 功能模块说明其中,添加模块用于打开媒体文件并添加到播放列表;关闭模块用于结束循环并关闭播放器;播放模块用于设置定时器开始播放;暂停模块用于暂停播放;停止模块用于结束循环并停止播放;全屏模块用于全屏化播放视频文件;音量模块包含三个函数,分别用于增大音量、降低音量、静音;循环模块包含两个函数,分别用于显示播放模式是否为循环、实现顺序循环播放列表中的文件。3数据模型分析与设计3.1数据需求分析通过对多媒体播放器的功能和数据流程分析,设计的数据项和数据结构如下:l 多媒体静态数据:主要是包括界面的设置,控键等等。l 多媒体动态数据:解码信息流、声音流、图象流等。l 歌曲的基本信息:包括的数据库项有歌曲名称、歌手姓名、作词、作曲,所属专辑名称,发行年月等。因为本程序中只涉及到歌曲的基本信息,为了简单说明,在数据库中只包含了与歌曲有直接关系的数据项。3.2数据库概念结构设计l 多媒体播放模块,其数据流图如下:音频文件视频文件解码器解码获取文件 信息解码信息流声音流图象流声音控制合成声卡输出图象编码显示控制显卡输出显示叠加字幕信息图2 媒体播放数据流图l 歌曲信息的设计规划出的实体有:歌曲信息实体、歌手实体、作词实体、作曲实体、专辑名称实体。实体和实体之间的关系E-R图如图3所示: 歌曲对应歌曲信息对应歌曲名称歌手作曲专辑名称作词图3 实体之间的关系E-R图3.3数据库逻辑结构设计为数据库歌曲信息表添加如下数据表:图4 歌曲信息表结构图5 信息详情表结构创建数据源为数据库创建用户DSN,数据源名称为”歌曲信息”如下:图6 创建数据源3.4数据库结构的实现在需求分析、概念结构设计的继承上得数据库的逻辑结构之后,我们就可以在VC+6.0数据库系统中实现该逻辑结构。数据库的逻辑结构,直接使用VC+6.0的项目管理器来实现,在这之前,先建一个名为songinformation的项目,保存在磁盘。如D:songinformation。存储为D: songinformationdatabase歌曲信息.dbc。为数据库添加数据表,存储为D:songinformationdatabase 歌曲信息.dbf.4多媒体播放器软件设计福利费用个人罚款个人奖金基础工资4.1模块实现函数说明这些实现模块功能的具体函数均属于CMediaPlayerDlg类,它是在建立MediaPlayer工程时由MFC建立的一个对话框的类,在该对话框上进行的操作函数即可实现程序所需要的所有功能,其实现函数则是调用ActiveMovie控件的相关函数,从而完成各项具体功能。各个模块的具体实现函数描述见下表1所示:表1 模块函数列表模块名称实现函数添加模块void CMediaPlayerDlg:OnOpen()关闭模块void CMediaPlayerDlg:OnClose()播放模块void CMediaPlayerDlg:OnPlay()暂停模块void CMediaPlayerDlg:OnPause()停止模块void CMediaPlayerDlg:OnStop()全屏模块void CMediaPlayerDlg:OnFulscreeen()音量模块void CMediaPlayerDlg:OnLower()void CMediaPlayerDlg:OnUpper()void CMediaPlayerDlg:OnMute()循环模块void CMediaPlayerDlg:OnRepeat()void CMediaPlayerDlg:OnTimer()查询模块void CMediaPlayerDlg:OnChaxun()添加模块void CMediaPlayerDlg:OnTianjia()4.2主要变量声明程序中用到的主要控件有:1个ActiveMovieControl 、1个列表框、12个按钮。各个控件变量的声明参见下表2:表2 变量声明列表控件名称变量类型变量名说明IDC_LIST1CListBoxm_list播放列表IDC_ACTIVEMOVIECONTROL1CActiveMovie3m_ActiveMovie可视动画控件IDC_OPENCButtonm_Open打开、添加文件IDC_STOPCButtonm_Stop停止播放IDC_CLOSECButtonm_Close关闭当前播放IDC_LOWERCButtonm_Lower降低音量IDC_PLAYCButtonm_Play循环播放IDC_PAUSECButtonm_Pause暂停IDCANCELCButtonm_Exit退出IDC_UPPERCButtonm_Upper增大音量IDC_FULSCREEENCButtonm_FullScreen全屏IDC_REPEATCButtonm_Repeat循环控制IDC_EDIT1CStringm_Edit1查询编辑框IDC_GEQUCStringm_Gequ歌曲名称编辑框IDC_GESHOUCStringm_Geshou歌手编辑框IDC_ZUOCICStringm_Zuoci作词编辑框IDC_ZUOQUCStringm_Zuoqu作曲编辑框IDC_ZHUANJICStringm_Zhuanji专辑名称编辑框4.3设计多媒体播放器界面播放器的主界面设计如图7:图7 主界面在主界面添加控件,为控件添加成员变量与控件变量并邦定。4.4播放器模块设计为界面添加ActiveMovie Control Object控件,以及打开、关闭、播放、暂停、停止、全屏、循环等按钮控件,ActiveMovie Control Object控件的添加过程如图8所示:图8 添加ActiveMovie Control Object控件ActiveMovie关键函数说明可视动画控件ActiveMovie Control Object 是Microsoft公司开发的ActiveX控件,为程序员提供了在该层次上控制媒体设备接口的能力。它包含一组高层次的独立于设备的命令,可以控制音频和视频外设,我们不必关心具体的设备便可以对CD、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制,也可以理解成设备面板上的一排按键,通过选择不同的按键(发送不同的命令)即可让设备完成各种功能,而不必关心设备的内部实现,它是一种主要实现音/视频播放的方法。下面对播放器程序需要调用的相关函数做简要说明:(1)播放文件的函数: void CActiveMovie3:Run() InvokeHelper(0x60020001,DISPATCH_METHOD,VT_EMPTY,NULL, NULL); (2)暂停播放的函数: void CActiveMovie3:Pause() InvokeHelper(0x60020002,DISPATCH_METHOD,VT_EMPTY,NULL, NULL); (3)停止播放的函数: void CActiveMovie3:Stop() InvokeHelper(0x60020003,DISPATCH_METHOD,VT_EMPTY,NULL, NULL); (4)设置音量的函数: void CActiveMovie3:SetVolume(long nNewValue) static BYTE parms = VTS_I4; InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue); 4.5 功能模块设计程序中的播放模块、暂停模块、停止模块、音量模块等功能模块只需要直接调用控件中的函数即可实现,为各控件添加成员变量如图9所示:图9 为控件添加成员变量(1)为了将所需播放的文件加入列表框,我们采用OnOpen()函数来显示打开对话框通过该对话框选择要执行的文件。以便为以后调用作准备。代码如下:void CMediaPlayerDlg:OnOpen() char szFileFilter= 所有文件(*.*)|*.*|; /可选择不同格式的媒体文件CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); if (fileDialog.DoModal() = IDOK) /消息响应函数 CString m_FileName=fileDialog.GetPathName(); /选择文件 m_list.AddString(m_FileName); /加入到列表框 (2)为了循环播放,我们利用定时器来工作,采用OnTimer()函数来激活定时器,代码如下:void CMy1Dlg:OnTimer(UINT nIDEvent)CString m_filename; /定义文件变量double CurPos=m_ActiveMovie.GetCurrentPosition(); /获得播放位置if(CurPos= = 0)m_list.SetCurSel(0); /选择列表框的第一个文件m_list.GetText(0,m_filename);m_ActiveMovie.SetAutoStart(1); /设置自动播放m_ActiveMovie.SetFileName(m_filename); /设置文件m_ActiveMovie.Run(); /播放m_list.GetCurSel(); /获得播放文件m_list.InsertString(-1,m_filename); /插入列表框最后m_list.DeleteString(0); /删除用过的文件CDialog:OnTimer(nIDEvent);(3)全屏播放功能调用了m_ActiveMovie.SetMovieWindowSize函数,代码如下:void CMediaPlayerDlg:OnFulscreeen() /全屏函数,实现全屏播放视频的功能m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetFullScreenMode(true); /设置全屏播放属性为真,即开启全屏播放m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED); /设置播放窗口大小为最大m_ActiveMovie.Run(); /继续播放(4)音量模块由减小、增大和静音三部分组成,均通过调用m_ActiveMovie.SetVolume函数实现,代码如下:void CMediaPlayerDlg:OnLower() /减小音量函数long Volume=m_ActiveMovie.GetVolume(); /获得当前音量赋值给Volume变量m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetVolume(Volume-300); /设置音量为原音量-300m_ActiveMovie.Run(); /继续播放void CMediaPlayerDlg:OnUpper() /增大音量函数long Volume=m_ActiveMovie.GetVolume(); /获得当前音量赋值给Volume变量m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetVolume(Volume+300); /设置音量为原音量+300m_ActiveMovie.Run(); /继续播放void CMediaPlayerDlg:OnMute() /静音函数,实现静音功能 m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetVolume(-4000); /将音量参数降低4000,达到静音的效果m_ActiveMovie.Run(); /继续播放(5)关于模块实现弹出关于对话框的功能,均通过调用void CMediaPlayerDlg:About()函数实现,关于对话框如图10所示:图10 关于对话框界面其代码如下:void CMediaPlayerDlg:About()/关于函数,实现弹出关于对话框的功能 CAboutDlg aboutDlg; /定义变量aboutDlg.DoModal();/弹出关于对话框(6)为退出按钮IDCANCEL添加消息映射OnCancel,并添加下列代码:void CMediaPlayerDlg:OnCancel() / TODO: Add extra cleanup hereMessageBox(感谢您的使用!,再见);CDialog:OnCancel();4.6歌曲信息模块的设计歌曲信息查询模块详情如图11所示:图11歌曲信息查询模块创建歌曲信息对话框如图12所示:图12歌曲信息模块为对话框资源创建一个对话框类CSongDlg,在MFC中为控件添加成员变量如下图13所示:图13 为控件添加成员变量然后为IDOK添加BN_CLICKED消息映射,并添加下列代码:void CSongDlg:OnOK() UpdateData(); CString str;m_Gequ.TrimLeft();if(m_Gequ.IsEmpty()MessageBox(歌曲名称不能为空!);elseif(m_Geshou.IsEmpty()MessageBox(歌手不能为空!);elseCDialog:OnOK();为上对话框定义CRecordSet派生类如图14所示:图14 对话框定义CRecordSet派生类为CRecordSet派生类在MFC中为控件添加成员变量如下图13所示:图15 添加成员变量为表单资源的按扭添加BN_CLICKED消息映射,并添加下列代码:void CMediaPlayerDlg:OnChaxun() CSongSet cSet;UpdateData();m_Edit1.TrimLeft();if(m_Edit1.IsEmpty()MessageBox(要查询的歌曲不能为空!);return;CSongDlg dlg;cSet.m_strFilter.Format(歌曲名称=%s,m_Edit1);cSet.Open();if(!cSet.IsEOF()/如果打开的记录集有记录CSongDlg dlg;dlg.m_Gequ =cSet.m_GeQu;dlg.m_Geshou =cSet.m_GeShou;dlg.m_Zuoci =cSet.m_ZuoCi;dlg.m_Zuoqu =cSet.m_ZuoQu; dlg.m_Zhuanji =cSet.m_ZhuanJi; dlg.DoModal(); UpdateData(FALSE);/自动更新表单中控件显示的内容elseMessageBox(没有查到你要找的歌曲记录!);if(cSet.IsOpen()cSet.Close();为表单资源的按扭添加BN_CLICKED消息映射,并添加下列代码:void CMediaPlayerDlg:OnTianjia() / TODO: Add your control notification handler code here CSongDlg dlg;CSongSet pSet;if(dlg.DoModal()=IDOK)pSet.Open();pSet.AddNew(); pSet.m_GeQu =dlg.m_Gequ; pSet.m_GeShou =dlg.m_Geshou;pSet.m_ZhuanJi =dlg.m_Zhuanji;pSet.m_ZuoCi =dlg.m_Zuoci;pSet.m_ZuoQu =dlg.m_Zuoqu; pSet.Update();pSet.Requery();4.7 欢迎动画模块设计建立欢迎动画对话框如图16所示:图16 欢迎动画模块为上面对话框资源创建一个对话框类CSplash,然后为CSplash类添加两个消息映射WM_TIMER和WM_INITDIALOG,代码如下:BOOL CSplash:OnInitDialog() SetTimer(1,2000,NULL); / 2000就是指定2秒 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CSplash:OnTimer(UINT nIDEvent) KillTimer(1); OnCancel();CDialog:OnTimer(nIDEvent);5 程序实现结果5.1 程序运行流程图该播放器程序运行过程的流程图如下图5.1所示: 开始添加文件N 是否播放 Y 播放控制添加文件 N 是否退出 Y 结束图 17 程序运行流程图 5.2 播放器实现结果演示由于做程序时,把所有的文件包含在一个工程当中,已进行编译生成一个可执行文件,运行可执行文件“多媒体播放器.exe”即可运行程序。(1) 程序启动时的欢迎画面如下图18所示,其中包含本程序的相关信息说明。图18 启动画面(2) 等候2秒钟之后,自动进入播放器主界面。程序是基于MFC的对话框应用程序制作的,所以程序主界面只有一个对话框,界面简洁清爽,程序主界面如下图19所示:图19 播放器主界面(3) 单击打开按钮,弹出打开文件的对话框,如图5.4所示。在文件类型下拉列表中,可以选择打开某种格式的文件,如图20所示,基本上现在网络上流行的主流媒体格式都可以打开播放,选择一个媒体文件后单击打开。图20 打开文件对话框(4) 单击打开后返回程序主界面,在右边的播放列表中增加了刚才打开的文件,“Ding in the sun.mp3”,如图21所示:图21 打开Ding in the sun.mp3文件(5) 单击“播放”按钮,开始播放文件,在播放过程中,可通过单击进度条自由选择播放进度。(6) 在播放过程中,可以通过“暂停”、“停止”、“全屏”、“+”(增大音量)、“-”(降低音量)、“”(静音)等按钮达到相应的播放控制功能。此时,还可以再次单击“打开”按钮继续向播放列表中添加媒体文件,程序会按列表中的顺序自动循环播放文件。已经播放过的文件会自动被置于列表尾部,如图22所示,Ding in the sun.mp3被置于表尾。图22 循环播放多个文件(7) 分别对mp3、wma、wmv、avi、mpg等不同音频、视频格式的文件进行测试播放,均可以成功运行,部分效果如图23、24所示:图23 播放wmv文件图24 播放mpg文件(8)在歌曲信息编辑框内输入所要查询歌曲的名字,点击查询按钮即可查询歌曲的相关信息,如图25所示:图25 查询结果(9)点击添加按钮可向数据库添加新的歌曲信息,如图26所示:图26 添加歌曲(10) 单击“关于”按钮,会弹出播放器的版权信息,如下图27所示:图27 版权信息对话框6 结束语我使用VC+6.0这个微软强大的可视化应用程序开发工具,在VC+环境下,利用MFC库和ActiveMovie控件,可以较为方便的制作界面美观的并且可以实现多种媒体格式正常播放的多媒体播放器程序,带给我们美好的视听享受。我设计的这个多媒体播放器功能比较强大,且使用简单,能够进行日常所有的媒体播放任务,体积较小,占用内存极低。能够高保真的播放大多数的音频、视频文件。程序通过调试运行,实现了设计的目标,并且经过适当完善后,将可以成为一款简易的媒体播放软件。由于时间关系,程序功能实现不够完善,界面也不够美观等。这些都需要不断的改进和补充。具体存在的问题及不足主要有以下三点:(1) 播放器的界面还不够美观。由于时间有限,没有给每个按钮都做一张位图图片,如果时间足够我想我会尽量完善它,使其兼具实用与美观,给人更大的视觉享受。(2) 播放器的稳定性不高。有时在播放非主流格式的媒体文件时,会发生报错现象,这也是由于程序兼容性不高的缘故。(3) 播放视频时的窗口大小问题。在播放画面分辨率较高的视频文件时,会造成画面溢出对话框,影响观看及程序美观,这个问题在今后一定要解决。在完成制作的过程中,我还是受益匪浅的,首先是以前学过的理论知识终于应用到了实践中,具体的一些书本知识应用到了实际生活中,学以致用,使我们对于VC+程序设计有了更加深入的理解,尤其是提高了我在实际操作中收集信息、对信息进行价值判断、进行信息整理、信息加工的能力。同时,也让我了解了在设计的过程中一些分析问题的方法技巧,清楚了自学的重要性,在以后的学习工作中当面对新的问题时让我知道了该如何从容的面对。我结合以前在课堂中的学习内容和收集课外的相关资料,不断的学习改进,当遇到问题时努力解决,虚心请教老师和同学,虽然设计过程十分艰难,但也燃起了我对专业的兴趣和求索,在翻阅大量的相关书籍和浏览了各种应用程序后,我总结经验再结合自己的学习基础,终于完成了多媒体播放器软件,尽管我设计的程序还比较简单也不够完善,但看到自己的努力成果却有着莫大的满足感,我希望在以后的学习道路中能够继承老师对我的期望继续对VC+以及相关语言的学习,我相信只要经过我坚持不懈的努力,总有一天会作出另人满意的程序。参考文献1 郑阿奇.Visual C+教程M.北京:机械工业出版社,20042 Jesse Liberty.C+编程实例详解M.北京:电子工业出版社,19993 东方人华等. Visual C+ 6.0范例入门与提高M.北京:清华大学出版社,20034 周长发. Visual C+ .NET多媒体编程M. 北京:电子工业出版社,20025 老虎工作室. 举一反三Visual C+程序设计实战训练M. 北京: 人民邮电出版社出版,2004附录:源程序清单/ 程序名称:MediaPlayerDlg.CPP / 程序功能:通过调用ActiveMovie控件中的相关函数,实现多种播放控制功能/ 程序作者:赵瑞恒/ 最后修改日期:2007-4-9: /省略程序前部的MFC类库中自身生成的程序内容void CMediaPlayerDlg:OnOpen() /实现打开、添加播放文件的函数char szFileFilter= /定义文件格式所有支持格式(*.mp3;*.wma;*.wav;*.avi;*.mov;*.mid;*.mpeg;*.rm;*.rmvb;*.dat;*.mmm;*,rmi)|*.mp3;*.wma;*.wav;*.avi;*.mov;*.mid;*.mpeg;*.rm;*.rmvb;*.dat;*.mmm;*,rmi|音频文件(*.wma;*.mp3;*.mid)|*.wma;*.mp3;*.mid|视频文件(*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb)|*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb|Mp3文件(*.mp3)|*.mp3|Wma文件(*.wma)|*.wma|Video文件(*.dat)|*.dat|Wave文件(*.wav)|*.wav|AVI文件(*.avi)|*.avi| Real文件(*.rm;*.rmvb)|*.rm;*.rmvb|Movie文件(*.mov)|*.mov|Media文件(*.mmm)|*.mmm|Mid文件(*.mid;*,rmi)|*.mid;*.rmi|MPEG文件(*.mpeg)|*.mpeg|所有文件(*.*)|*.*|;CFileDialog fileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter); /调用fileDialog的库函数打开文件 if (fileDialog.DoModal() = IDOK) /点击打开按钮 CString m_FileName=fileDialog.GetPathName(); /选择文件 m_list.AddString(m_FileName); /加入到列表框 void CMediaPlayerDlg:OnPlay() /播放函数SetTimer(1,2000,NULL); /设置循环参数,标志为1,时间为2秒m_ActiveMovie.Run(); /开始播放void CMediaPlayerDlg:OnStop() /停止播放函数 KillTimer(1); /停止循环 m_ActiveMovie.Stop(); /停止播放void CMediaPlayerDlg:OnPause() /暂停播放函数m_ActiveMovie.Pause(); /调用控件的暂停函数暂停播放void CMediaPlayerDlg:OnClose() /关闭窗口函数KillTimer(1); /停止标志为1的循环m_ActiveMovie.CloseWindow(); /关闭窗口void CMediaPlayerDlg:OnLower() /减小音量函数long Volume=m_ActiveMovie.GetVolume(); /获得当前音量赋值给Volume变量m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetVolume(Volume-300); /设置音量为原音量-300m_ActiveMovie.Run(); /继续播放void CMediaPlayerDlg:OnUpper() /增大音量函数long Volume=m_ActiveMovie.GetVolume(); /获得当前音量赋值给Volume变量m_ActiveMovie.Pause(); /暂停播放m_ActiveMovie.SetVolume(Volume+300); /设置音量为原音量+300m_ActiveMovie.Run(); /继续播放void CMediaPlayerDlg:OnRepeat() /循环控制函数,实现对循环的控制功能if(!isRepeat) /判断是否正在循环SetTimer(1,2000,NULL); /设置循环的标志为1,循环间

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论