ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:330.54KB ,
资源ID:3784718      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3784718.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多媒体播放器课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多媒体播放器课程设计.docx

1、多媒体播放器课程设计淮阴工学院多媒体编程实习报告选题名称: 视频播放器设计 系(院): 计算机工程学院 专 业: 通信工程(多媒体通信方向) 班 级: 姓 名: 学 号: 指导教师: 学年学期: 2012 2013 学年第 2 学期 2013 年 06 月 30 日实习任务书课题名称视频播放器设计实习目的1.巩固多媒体编程所涉及的基础理论和经典技术,努力提高实践动手能力;2.学习多媒体编程,进一步掌握VC6.0的使用方法和技术;3.通过一个完整的项目开发流程,构建合理的专业技能结构,完善知识体系;4.强化软件设计概念,训练文档处理能力,培养团队合作精神。实验环境1.微型电子计算机(PC);2.

2、VC6.0。任务要求1.利用课余时间查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;并在第15周完成预设计,请指导教师审查,通过后方可进行下一步工作;2.设计软件:(1)能简单地实现视频文件的打开以及播放;(2)在以上的基础上,实现视频的暂停,快进,快退,停止以及音量的调节。3.结束后,及时提交课程设计报告(含纸质稿、电子稿)。工作进度计划序号起止日期工 作 内 容12013.06.172013.06.18在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。22013.06.192013.06.24设计总体方案,绘制流程框图,编写代码,上机调试。32013.06.2

3、52013.06.28测试程序,优化代码,增强功能,撰写设计报告。42013.06.292013.06.30提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。指导教师(签/章): 年 月 日 一、实习目的1、巩固多媒体编程所涉及的基础理论和经典技术,努力提高实践动手能力;2、学习多媒体编程,进一步掌握VC6.0的使用方法和技术;3、通过一个完整的项目开发流程,构建合理的专业技能结构,完善知识体系;4、强化软件设计概念,训练文档处理能力,培养团队合作精神;5、加深对于多媒体软件功能的理解;6、激发学生对于多媒体相关技术的兴趣。二、实习时间2013年06月17日2013年06

4、月30日。三、实习地点淮阴工学院计算机工程学院及所属专业实验室。四、实习内容(一)设计课题:视频播放器(二)设计目标: 使用VC+6.0强大的AppWizard、Class Wizard和其中的多种控件可以很方便地建立各种应用程序。借助ActiveX控件资源和其他现有的控件资源,可以省去自己编程的复杂过程,从而实现高级的功能。本次课程设计要使用VC+6.0内部的ActiveX控件Windows Media Player控件,建立自己的多媒体播放器。此多媒体播放器具有打开文件、播放、暂停、关闭、全屏、音量滑块调节、快进、快退等基本功能,可以播放*.mp3、*.wma、*.mdi、*.wav、*a

5、vi、*dat等格式的多媒体文件。 (三)设计过程:1、设计思路:基于VC+6.0制作多媒体播放器,主要使用了Windows Media Player控件和各种类型按钮,控件Windows Media Player完成了由其他控件加载的多媒体文件的解码,以及完成由其他控件提交的控制信息的响应。 根据Windows Media Player和各个按钮控件功能的特点,首先要在初始化中对CWMPControl,CWMPSettings, CWMPMedia等类的对象进行绑定和定义。 播放器的一些基本的功能如播放、暂停、全屏、静音、快进、快退等主要是调用CWMPControl和CWMPPlayer类中

6、的成员函数来进行实现。对于打开按钮,需要调用通用文件对话框类,调用szFileFilter()文件过滤函数和GetFileName()获取文件名函数。 音量滑动条Slinder 是通过对CSliderCtrl类进行初始化,调用m_slinder中的CustomdrawSlider()函数来定义音量的改变。 2、创建工程:打开VC+6.0,点击“新建”,在“新建”窗口选择“工程”选项卡。由于程序是基于对话框的MFC应用程序,所以首先是建立基于对话框的工程,以“lee”为工程名,然后点击“确定”,如图1所示。图1 新建对话框在点击“确定”后进入到了“MFC应用程序向导步骤1”的设置界面,选择“基本

7、对话框”,然后点击“下一步”。图2 MFC应用程序向导在剩下的3个步骤中,全部选择默认的设置,不要做随意更改,直至“完成”便实现了对话框的创建。在建立的对话框中,点击右键,选择“插入ActiveX控件”,在跳出的对话框中选择“Windows Media Player”,点击“确定”。图3 插入Windows Media Player控件虽然已插入该控件,但该控件没有与工程中的对话框发生任何联系,所以需要对其进行变量(variables)的关联,将该控件与对话框联系起来。左键单击对话框中的中的“Windows Media Player”控件,“属性”设置为“IDC_player”,右键单击“建立

8、类向导”,在对话框中选择“Member Variables”选项卡,单击“ADD Variables”, 图5中的“Confirm Classes”中点击“OK”会弹出下图6所示的“Add member name”对话框,命名为“m_player”,设为控制“Control”型,单机“OK”。图4 MFC ClassWizard图5 Confirm Classes图6 变量命名关联变量之后才算是真正的添加了该控件,可以发现在关联变量之后,控件工具栏多了“Windows Media Player”控件的选项,并且在“Source Files”中增加了许多类,相应的头文件也增加许多,其中最主要的类

9、为Cwmpplayer4,Cwmpcontrols,Cwmpmedia, Cwmpsettings四大类。Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供了与Windows Media Player控件进行交互的基本方法,其中部分成员函数还能够进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作;Cwmpmedia类主要是对于媒体文件资源的一些操作;Cwmpsettings类主要是对于媒体文件中的一些基本设置的操作。 3、界面的设计:首先是打开按钮,用于媒体文件的打开;然后依次是播放、暂停、全屏、快进、快退、静音、停止、退出

10、按钮,以及音量滑块条Slinder控件。对空间主要进行变量的关联,以及ID的修改,对于普通按钮进行ID修改,结果如下下表1和表2所示。 表1 控件ID以及关联变量表控件Caption 按钮ID关联变量类型WMPlayer IDC_player CWMPlayer4 Slinderr IDC_Slinder CSliderCtrl 控件Caption 按钮ID 消息响应函数 打开 IDC_OPEN OnOpen() 播放 IDC_PLAY OnPlay() 暂停 IDC_PAUSE OnButtonPause() 全屏 IDC_FULSCREEN OnFulscreen() 快进 IDC_FAS

11、TFORWARD OnFastforward() 快退 IDC_FASTREVERSE OnFastreverse() 静音 IDC_MUTE OnMute() 停止 IDC_STOP OnButtonStop() 退出 IDCANCEL OnCancel() 表2 控件ID以及对应响应函数表经过控件添加、关联和位置修改、ID修改,最终得到各个控件分布后的界面。另外还要加入菜单“MENU”,菜单的添加相对较简单。 在“Resource File”中添加“MENU”,属性为“IDR_MENU1”,在“MENU”将按钮的ID填入到相应的“MENU”选项中,但是菜单并未与对话窗口有实质性联系,需要将

12、菜单加入到“IDD_CWMJ_DIALG”中来,在“IDD_CWMJ_DIALG”窗口空白右键单击,选中菜单“IDR_MENU1”,这样便完成了对菜单的加载。运行界面效果图如下图所示。图7 运行后的界面效果4、关键功能的实现:4.1 “打开”功能的实现:void CleeDlg:Onopen() / TODO: Add your command handler code here char szFilter=ALL Data(*.*)|*.*|AVI File (*.avi)|*.avi|Video File (*.dat)|*.dat|Wav File (*.wav)|*.wav|Mid F

13、ile(*.mid;*.rmi)|*.mid;*.rmi|MPEG File (*.mpeg)|*.mpeg; /用于设置FileDialog的文件类型 CFileDialog FileDlg( TRUE, NULL, NULL, OFN_HIDEREADONLY, szFilter ); if( FileDlg.DoModal() = IDOK ) CString PathName = FileDlg.GetPathName(); PathName.MakeUpper(); m_ActiveMovie.SetFileName(PathName); CMenu* pMenu=GetMenu (

14、); ASSERT_VALID (pMenu); pMenu-EnableMenuItem(fullscreen,0); pMenu-EnableMenuItem(end,0); pMenu-EnableMenuItem(pause,0); pMenu-EnableMenuItem(run,0); 4.2 “播放”功能的实现 void CleeDlg:Onrun() / TODO: Add your command handler code here /播放 m_ActiveMovie.Run();4.3 “暂停”功能的实现void CleeDlg:Onpause() / TODO: Add

15、your command handler code here /暂停 m_ActiveMovie.Pause();4.4 “结束”功能的实现void CleeDlg:Onend() /结束菜单 / TODO: Add your command handler code here m_ActiveMovie.Stop();4.5“全屏”功能的实现void CleeDlg:Onfullscreen() / TODO: Add your command handler code here /全屏 if(m_ActiveMovie.GetCurrentState()-1) m_ActiveMovie.

16、Pause ();/暂停播放 m_ActiveMovie.SetFullScreenMode(true);/设置满屏模式 m_ActiveMovie.Run();/继续播放 4.6 “控件隐藏”功能的实现void CleeDlg:Onhide() /设置按键的隐藏 CRect rc; GetWindowRect(rc); if(rc.bottom500) /判断窗口是否过小 m_hide=m_hide=0?1:0; if(m_hide=0) GetMenu()-CheckMenuItem(hide,MF_UNCHECKED); else GetMenu()-CheckMenuItem(hide

17、,MF_CHECKED); MovieWindow();4.7 “滑块控制音量”的实现void CleeDlg:OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here /滑块控制声音 UpdateData(TRUE); sound=m_slider.GetPos(); UpdateData(FALSE); *pResult = 0; CMenu* pMenu=GetMenu (); ASSERT_VALID (pMenu); pMenu

18、-EnableMenuItem(reduce,0); pMenu-EnableMenuItem(add,0); if(sound-100) m_sound=-sound*20-2000; if(m_ActiveMovie.GetCurrentState()-1&sound_flag=1) m_ActiveMovie.SetVolume(-sound*20-2000); else if (soundEnableMenuItem(add,1); else pMenu-EnableMenuItem(reduce,1);4.8 “音量增大”的功能实现 void CleeDlg:Onadd() /用于增

19、加音量 CMenu* pMenu=GetMenu (); ASSERT_VALID (pMenu); pMenu-EnableMenuItem(reduce,0); /讲减小置为可用if(sound-100) pMenu-EnableMenuItem(add,0); m_slider.SetPos(sound-10); /更改滑块位置 if(m_ActiveMovie.GetCurrentState()-1) /判断是否已载入媒体 m_ActiveMovie.SetVolume(-sound*20-2000); else pMenu-EnableMenuItem(add,1); /声音大于0

20、禁用增大4.9 “音量减小”的功能实现 void CleeDlg:Onreduce() /用于减小音量 CMenu* pMenu=GetMenu (); ASSERT_VALID (pMenu); pMenu-EnableMenuItem(add,0); /讲增加置为可用 / TODO: Add your command handler code here if(soundEnableMenuItem(reduce,0); m_slider.SetPos(sound+10); /更改滑块位置 if(m_ActiveMovie.GetCurrentState()-1) /判断是否已载入媒体 m_

21、ActiveMovie.SetVolume(-sound*20-2000); else pMenu-EnableMenuItem(reduce,1); /声音小于-4000 禁用减小4.10 “静音”功能的实现 void CleeDlg:Onnosound() / TODO: Add your command handler code here m_nosound.SetCheck(sound_flag); /设置静音复选框的复选 GetMenu()-CheckMenuItem(nosound,MF_UNCHECKED); /设置静音菜单的复选 if(sound_flag=1) m_sound

22、=m_ActiveMovie.GetVolume (); GetMenu()-CheckMenuItem(nosound,MF_CHECKED); sound_flag=0; if(m_ActiveMovie.GetCurrentState()-1) m_ActiveMovie.SetVolume(-8000); else sound_flag=1; GetMenu()-CheckMenuItem(nosound,MF_UNCHECKED); if(m_ActiveMovie.GetCurrentState()-1) m_ActiveMovie.SetVolume(m_sound); /静音标

23、志的更改4.11 “声道平衡”功能的实现 void CleeDlg:Onbalance() / TODO: Add your command handler code here/声道平衡 Cbalance sound_balance; m_movie=(CActiveMovie3*)&m_ActiveMovie; /使用CActiveMovie3控件指针传递 sound_balance.DoModal();4.12 “退出”功能的实现void CleeDlg:Onclose() / TODO: Add your command handler code here OnOK();/退出应用程序

24、5、实验成果图8 打开图9 播放中五、实习总结 经过这次课程设计,让我对于MFC编程的方法有了进一步的认识。开始看到VC+选择了一个感兴趣的的题目视频播放器,以为用VC+做出一个视频播放器的静态界面,结果说要做出一个播放器并且还要具有播放视频的真实效果,其他的功能也都要实现,就觉得这个课设很难,因为VC+学的不扎实。 接触题目开始做后,选用相对简单的Windows Media Player控件,于是在网上查了一些关于Windows Media Player控件的,结果按照网上说的方法来根本无法实现,所以在头两天是在摸索中,耗费了很多时间才拾起当时学的一些基本知识。整个程序设计我做了十天,直到答

25、辩前一天我都还在编写代码,每天熬夜到12点,想起当时没有好好学习VC+的课程知识,现在做起来才知道多么的浪费时间,很多小知识点却耗费了大量的时间去纠结。 在此次的实习中,我发现控件自带的的类会在对话框的主程序中被调用,那么就要在主程序中#include入对应类的头文件。对需要用到的类生成对应的对象以实现类中函数的使用。在完成控件自带类的函数在程序中的使用之后,还需要调用对话框自身的函数,比如消息及消息响应函数等函数,以及各控件对应的消息响应函数,并且初始化函数等也需要做一些改动,添加一些与控件类有关的函数或者定义一些变量,如此便可以实现控件自带类和本程序中的类的共同作用。除此以外,我个人觉得V

26、C+有个缺点,就是每次建立类向导后,一旦删除类向导后总是还要手动删除该类向导代码,还要删除头文件里的变量,不然总是提示错误,很繁琐,很费事。 最后,历时两周的实习终于结束了,播放器也做好了,并且能够实现一个视频播放器最基本的一些功能,每次运行看到我的播放器能够按照我的指令去实现一些功能真的很欣慰。这次是一个很好的机会,让我再次拾起了忘记了的知识,也锻炼了我的实践能力,提高了自己独立解决问题的水平。同时也非常感谢马岱、于永彦两位老师的指导,以及计算机工程学院给我们提供实验环境。参 考 文 献1揣锦华.面向对象程序设计与VC+实践M.西安电子科技大学出版社.2005 2郑阿奇.Visual C+教

27、程M.北京:机械工业出版社.2004 4周长发.Visual C+.NET多媒体编程M.电子工业出版社.2002 5Steve Mack.流媒体宝典.电子工业出版社.2003 6王育坚.Visual C+面向对象编程教程.第2版.北京:清华大学出版社,2008 7侯俊杰 .深入浅出MFC.第2版.广东:南方出版社,2007 8严华峰等.Visual C+课程设计案例精编.北京:中国水利水电出版社,2004 9王维玉等.Visual C+高级编程技术精粹.北京:科学出版社,2008 10于永彦等.多媒体开发与编程.北京:北京大学出版社,2011指导教师评语学号1101312215姓名章鹏班级通信1102选题名称视频播放器设计序号评价内容权重(%)得分1考勤记录、学习态度、工作作风与表现。52自学情况:上网检索机时数、文献阅读情况。103选题是否先进,是否具有前沿性或前瞻性。54成果验收:是否完成设计任务;能否运行、可操作性如何等。205报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。306文献引用是否合理、充分、真实。57答辩情况: 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。25合计指导教师(签名): 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1