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

下载本文档

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

文档简介

用VisualStudio设计的多媒体播放器摘要本课程设计的目的是制作一个可播放目前主流媒体格式的多媒体播放器,其基本功能应具有媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等,使之成为一款简易的媒体播放设备,能够完美的播放市面上大多数的音频、视频文件。在课程设计中,系统开发平台为WindowsXPProfessionalSP2,程序设计环境采用VisualC++6.0。在程序设计中,我利用了Microsoft公司开发的ActiveX控件——可视动画控件ActiveMovie,程序通过调试运行,初步实现了设计目标,并且经过适当完善及美化后,将可以成为一款精简实用的多媒体播放软件。该播放器是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能,除了基本的播放控制外,还具有多文件自动顺序循环播放、全屏播放、静音等实用功能。关键词程序设计;ActiveMovie控件;多媒体;播放器目录1.引言……………………….1系统的设计目标和系统的意义………….……………..1多媒体播放器将达到的效果…………...2软件的开发设计思想…………………...2开发工具的介绍………………………...3可行性分析和需求分析………………...32软件的需求分析和模块设计………….…...4软件的需求分析………………………..4软件的模块设计………………………..43.数据库设计…………………..….………….5TOC\o"1-5"\h\z3.1数据需求分析53.2数据库概念结构设计.5数据库逻辑结构设计…………………6数据库结构的实现…………………...74多媒体播放器软件设计7模块实现函数说明……………………..7主要变量声明…………..8设计多媒体播放器界面………………..9播放器模块设计………………………..9功能模块设计………………………...10歌曲信息模块的设计…………………135程序实现结果……………...17程序运行流程图……………………...17播放器实现结果演示………………...18结束语……………………….23考文献………………………...24附录:源程序清单#if(dlg.DoModal()==IDOK){pSet.Open();pSet.AddNew();pSet.m_GeQupSet.m_GeShoupSet.m_ZhuanJipSet.m_ZuoCipSet.m_ZuoQupSet.Update();{pSet.Open();pSet.AddNew();pSet.m_GeQupSet.m_GeShoupSet.m_ZhuanJipSet.m_ZuoCipSet.m_ZuoQupSet.Update();pSet.Requery();}=dlg.m_Gequ;=dlg.m_Geshou;=dlg.m_Zhuanji;=dlg.m_Zuoci;=dlg.m_Zuoqu;55程序实现结果5.1程序运行流程图该播放器程序运行过程的流程图如下图5.1所示:图17程序运行流程图播放器实现结果演示由于做程序时,把所有的文件包含在一个工程当中,已进行编译生成一个可执行文件,运行可执行文件“多媒体播放器.exe”即可运行程序。(1)程序启动时,自动进入播放器主界面。程序是基于MFC的对话框应用程序制作的,所以程序主界面只有一个对话框,界面简洁清爽,程序主界面如下图19所示:图19播放器主界面3)单击打开按钮,弹出打开文件的对话框,如图5.4所示。在文件类型下拉列表中,可以选择打开某种格式的文件,如图20所示,基本上现在网络上流行的主流媒体格式都可以打开播放,选择一个媒体文件后单击打开。图20打开文件对话框(4)单击打开后返回程序主界面,在右边的播放列表中增加了刚才打开的文件,如图21所示:播放列表I:\0si_i'\Songs\303t+pazolitefea-I:\osui\Songs\212LOVERINTAMBUR:I:\osi_i'\Songs\956ThePillows-1图21打开mp3文件(5)单击“播放”按钮,开始播放文件,在播放过程中,可通过单击进度条自由选择播放进度。(6)在播放过程中,可以通过“暂停”、“停止”、“全屏”、“+”(增大音量)、“-”(降低音量)、“X”(静音)等按钮达到相应的播放控制功能。此时,还可以再次单击“打开”按钮继续向播放列表中添加媒体文件,程序会按列表中的顺序自动循环播放文件。已经播放过的文件会自动被置于列表尾部,如图22所示,Dinginthesun.mp3被置于表尾。

图22循环播放多个文件(7)分别对mp3、wma、wmv、avi、mpg等不同音频、视频格式的文件进行测试播放,均可以成功运行,部分效果如图23、24所示:图23播放avi文件多媒体播放器打开关闭出

退.I:\葫芦娃.rmvb播放列表I:\狮子王.avl融曲信息:查询音量F1帀冈循环模式循环播放暂停停止全屏图24播放rmvb文件8)在歌曲信息编辑框内输入所要查询歌曲的名字,点击查询按钮即可查询歌曲的相关信息,如图25所示:图25查询结果9)点击添加按钮可向数据库添加新的歌曲信息,如图26所示图26添加歌曲10)单击“关于”按钮,会弹出关于信息,如下图27所示6结束语我使用VC++6.0这个微软强大的可视化应用程序开发工具,在VC++环境下,利用MFC库和ActiveMovie控件,可以较为方便的制作界面美观的并且可以实现多种媒体格式正常播放的多媒体播放器程序,带给我们美好的视听享受。我设计的这个多媒体播放器功能比较强大,且使用简单,能够进行日常所有的媒体播放任务,体积较小,占用内存极低。能够高保真的播放大多数的音频、视频文件。程序通过调试运行,实现了设计的目标,并且经过适当完善后,将可以成为一款简易的媒体播放软件。由于时间关系,程序功能实现不够完善,界面也不够美观等。这些都需要不断的改进和补充。具体存在的问题及不足主要有以下三点:(1)播放器的界面还不够美观。由于时间有限,没有给每个按钮都做一张位图图片,如果时间足够我想我会尽量完善它,使其兼具实用与美观,给人更大的视觉享受。(2)播放器的稳定性不高。有时在播放非主流格式的媒体文件时,会发生报错现象,这也是由于程序兼容性不高的缘故。(3)播放视频时的窗口大小问题。在播放画面分辨率较高的视频文件时,会造成画面溢出对话框,影响观看及程序美观,这个问题在今后一定要解决。在完成制作的过程中,我还是受益匪浅的,首先是以前学过的理论知识终于应用到了实践中,具体的一些书本知识应用到了实际生活中,学以致用,使我们对于VC++程序设计有了更加深入的理解,尤其是提高了我在实际操作中收集信息、对信息进行价值判断、进行信息整理、信息加工的能力。同时,也让我了解了在设计的过程中一些分析问题的方法技巧,清楚了自学的重要性,在以后的学习工作中当面对新的问题时让我知道了该如何从容的面对。我结合以前在课堂中的学习内容和收集课外的相关资料,不断的学习改进,当遇到问题时努力解决,虚心请教老师和同学,虽然设计过程十分艰难,但也燃起了我对专业的兴趣和求索,在翻阅大量的相关书籍和浏览了各种应用程序后,我总结经验再结合自己的学习基础,终于完成了多媒体播放器软件,尽管我设计的程序还比较简单也不够完善,但看到自己的努力成果却有着莫大的满足感,我希望在以后的学习道路中能够继承老师对我的期望继续对VC++以及相关语言的学习,我相信只要经过我坚持不懈的努力,总有一天会作出另人满意的程序。参考文献郑阿奇.VisualC++教程[M].北京:机械工业出版社,2004JesseLiberty.C++编程实例详解[M].北京:电子工业出版社,1999⑶东方人华等.VisualC++6.0范例入门与提高[M].北京:清华大学出版社,2003周长发.VisualC++.NET多媒体编程[M].北京:电子工业出版社,2002⑸老虎工作室.举一反三——VisualC++程序设计实战训练[M].北京:人民邮电出版社出版,2004附录:源程序清单//程序名称:MediaPlayerDlg.CPP//程序功能:通过调用ActiveMovie控件中的相关函数,实现多种播放控制功能//程序作者:赵瑞恒//最后修改日期:2007-4-9://省略程序前部的MFC类库中自身生成的程序内容voidCMediaPlayerDlg::OnOpen()〃实现打开、添加播放文件的函数{charszFileFilter[]=//定义文件格式"所有支持格式(*.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)l*.wma;*.mp3;*.midl""视频文件(*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb)|*.wav;*.avi;*.mov;*.mpeg;*.rm;*.rmvb|""Mp3文件(*.mp3)l*.mp3l""Wma文件(*.wma)l*.wmal""Video文件(*.dat)l*.datl""Wave文件(*.wav)l*.wavl""AVI文件(*.avi)|*.avi|""Real文件(*.rm;*.rmvb)l*.rm;*.rmvbl""Movie文件(*.mov)l*.movl""Media文件(*.mmm)l*.mmml""Mid文件(*.mid;*,rmi)l*.mid;*.rmil""MPEG文件(*.mpeg)l*.mpegl""所有文件(*.*)|*.*||";CFileDialogfileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);//调用fileDialog的库函数打开文件if(fileDialog.DoModal()==IDOK)//点击打开按钮{CStringm_FileName=fileDialog.GetPathName();//选择文件m_list.AddString(m_FileName);//加入到列表框}}voidCMediaPlayerDlg::OnPlay()//播放函数{SetTimer(1,2000,NULL);//设置循环参数,标志为1,时间为2秒m_ActiveMovie.Run();//开始播放}voidCMediaPlayerDlg::OnStop()//停止播放函数{KillTimer(1);//停止循环m_ActiveMovie.Stop();//停止播放}voidCMediaPlayerDlg::OnPause()//暂停播放函数{m_ActiveMovie.Pause();//调用控件的暂停函数暂停播放}voidCMediaPlayerDlg::OnClose()//关闭窗口函数{KillTimer(1);//停止标志为1的循环m_ActiveMovie.CloseWindow();//关闭窗口}voidCMediaPlayerDlg::OnLower()//减小音量函数{longVolume=m_ActiveMovie.GetVolume();//获得当前音量赋值给Volume变量m_ActiveMovie.Pause();//暂停播放m_ActiveMovie.SetVolume(Volume-300);//设置音量为原音量-300m_ActiveMovie.Run();//继续播放}voidCMediaPlayerDlg::OnUpper()//增大音量函数{longVolume=m_ActiveMovie.GetVolume();//获得当前音量赋值给Volume变量m_ActiveMovie.Pause();//暂停播放m_ActiveMovie.SetVolume(Volume+300);//设置音量为原音量+300m_ActiveMovie.Run();//继续播放}voidCMediaPlayerDlg::OnRepeat()//循环控制函数,实现对循环的控制功能{if(!isRepeat){//判断是否正在循环SetTimer(1,2000,NULL);//设置循环的标志为1,循环间隔为2秒isRepeat=TRUE;//将循环变量设为TURESetDlgItemText(IDC_STATIC2,模式:循环“);〃将静态文本显示为循环模式}else{KillTimer(1);//停止标志为1的循环isRepeat=FALSE;//将循环变量设为FALSESetDlgItemText(IDC_STATIC2,模式:普通“);〃将静态文本显示为普通模式}}voidCMediaPlayerDlg::OnFulscreeen()//全屏函数,实现全屏播放视频的功能{m_ActiveMovie.Pause();//暂停播放m_ActiveMovie.SetFullScreenMode(true);//设置全屏播放属性为真,即开启全屏播放m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED);//设置播放窗口大小为最大m_ActiveMovie.Run();//继续播放}voidCMediaPlayerDlg::OnTimer(UINTnIDEvent)//实现循环顺序播放功能的函数{CStringm_filename;//定义文件变量doubleCurPos=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);}voidCMediaPlayerDlg::About()//关于函数,实现弹出关于对话框的功能{CAboutDlgaboutDlg;//定义变量aboutDlg.DoModal();//弹出关于对话框}voidCMediaPlayerDlg::OnMute()//静音函数,实现静音功能{m_ActiveMovie.Pause();//暂停播放m_ActiveMovie.SetVolume(-4000);//将音量参数降低4000,达到静音的效果m_ActiveMovie.Run();//继续播放}voidCMediaPlayerDlg::OnCancel(){//TODO:AddextracleanuphereMessageBox("感谢您的使用!","再见");CDialog::OnCancel();}voidCMediaPlayerDlg::OnChaxun(){CSongSetcSet;

UpdateData();m_Edit1.TrimLeft();if(m_Edit1.IsEmpty()){MessageBox("要查询的歌曲不能为空!");return;}CSongDlgdlg;cSet.m_strFilter.Format(”歌曲名称='%s"',m_Editl);cSet.Open();if(!cSet.IsEOF())〃如果打开的记录集有记录=cSet.m_GeQu;=cSet.m_GeShou;=cSet.m_ZuoCi;=cSet.m_ZuoQu;=cSet.m_GeQu;=cSet.m_GeShou;=cSet.m_ZuoCi;=cSet.m_ZuoQu;dlg.m_Zhuanji=cSet.m_ZhuanJi;dlg.DoModal();UpdateData(FALSE);//自动更新表单中控件显示的内容}elseMessageBox("没有查到你要找的歌曲记录!");if(cSet.IsOpen())cSet.Close();}voidCMediaPlayerDlg::OnTianjia(){//TODO:AddyourcontrolnotificationhandlercodehereCSongDlgdlg;CSongSetpSet;if(dlg.Do

温馨提示

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

评论

0/150

提交评论