mfc视频播放器.docx
《mfc视频播放器.docx》由会员分享,可在线阅读,更多相关《mfc视频播放器.docx(19页珍藏版)》请在冰点文库上搜索。
mfc视频播放器
PINGDINGSHANUNIVERSITY
实训论文(设计)
题目:
项目四:
MFC视频播放器
院(系):
软件学院
专业年级:
软件工程2012级
姓名:
XXX
学号:
********
指导教师:
吕琼帅
2013年12月25日
目录
1绪论-0-
1.1项目设计的目的-1-
1.2项目设计的意义-2-
2工具及核心功能介绍-2-
2.1开发人员及工具-3-
2.2核心功能-3-
2.2.1系统流程图-4-
2.2.2核心模块-5-
3系统运行环境及截图-6-
3.1系统运行环境-6-
3.2系统截图-6-
4附录-14-
4.1系统设计实现的基本原理与过程-14-
4.2如何创建Player应用程序-14-
心得-15-
参考文献-16-
1绪论
基于MFC应用程序的数据类型转换软件,个人觉得这个小程序很实用,可以实现人们对视听的享受,程序主要是根据编码进行统计,这在以后的程序开发中经常要用到。
对于我们日常的生活学习有很大的作用。
随着人们对视听效果的不断提高,多媒体技术已经成为计算机领域发展的重要部分。
而且,随着编程平台的不断发展,开发多媒体程序不再是一件繁琐、艰难的工作了,无需具备太多的专业知识就可以编写多媒体程序。
本案例就介绍用VC6.0自带的一个ActiveX控件---ActiveMovieControlObject,来建立自己的多媒体播放器。
本案例将利用VisualC++6.0设计一个可以播放*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件的媒体播放器。
1.1项目设计的目的
利用此次课程设计,进一步熟悉C++语言,熟悉VisualStudio相关的开发环境,结合WindowsMediaPlayerActiveX控件的使用,进一步学习体会MFC使用与制作逐渐培养学生的编程能力、用计算机解决实际问题的能力。
利用VC++开发一个支持mp3、wma、wmv、avi、mpg等不同视频、视频格式的多媒体播放器。
通过课程设计掌握多媒体编程的基本原理。
本课程设计的目的是制作一个可播放目前主流媒体格式的多媒体播放器,其基本功能应具有媒体播放、音量调节、播放进度选择、暂停、停止以及歌曲信息的查询与添加等,使之成为一款简易的媒体播放设备,能够完美的播放市面上大多数的音、视频文件。
在课程设计中,系统开发平台为WindowsXPProfessionalSP2,程序设计环境采用VisualC++6.0。
在程序设计中,我利用了Microsoft公司开发的ActiveX控件——可视动画控件ActiveMovie,程序通过调试运行,初步实现了设计目标,并且经过适当完善及美化后,将可以成为一款精简实用的多媒体播放软件。
该播放器是基于MFC集成开发环境,利用ActiveMovie控件实现媒体播放的功能,除了基本的播放控制外,还具有多文件自动顺序循环播放、全屏播放、静音等实用功能
1.2项目设计的意义
这个课程设计的目的就是制作一个能够播放音频、视频文件的播放器,并使它具备一些简单的操作处理功能,如播放暂停的控制,音量的调节,多文件自动循环等等。
将这个小型播放软件做得尽量的小巧、实用。
多媒体技术是当今信息技术领域发展最快、最活跃的技术,是新一代电子技术发展和竞争的焦点。
多媒体技术融计算机、声音、文本、图像、动画、视频和通信等多种功能于一体,借助日益普及的高速信息网,可实现计算机的全球联网和信息资源共享,因此被广泛应用在咨询服务、图书、教育、通信、军事、金融、医疗等诸多行业,并正潜移默化地改变着我们生活的面貌。
多媒体技术已经成为当今比较热门的研究课题,特别是伴随着多媒体技术的网络化,使得多媒体技术的发展前景无限广阔,因此掌握多媒体及多媒体技术的相关知识,了解多媒体技术当前的发展状况及未来的发展前景,并能熟练地进行多媒体技术的开发,对于当前即将毕业的大学生来讲,是很有发展前途的。
基于此,我选择了此课题——多媒体播放器的设计与实现,期望通过对此课题的研究与开发,能深入了解多媒体技术,特别是掌握多媒体技术在媒体播放器中的应用。
2工具及核心功能介绍
此程序采用模块化程序设计方法,既便于软件功能的各种组合和修改,又便于技术维护人员进行补充、维护,尽量利用人们现有的软件环境,采用简单快捷的设计方案,从而达到使用方便,容易操作的目的,满足大多数人日常使用的需要,并达到操作过程的直观、方便、实用、安全等要求。
2.1开发人员及工具
开发人员
开发工具:
MicrosoftVisualC++6.0
开发语言:
C++
运行支持环境:
硬件环境:
CPU1.0G以上
内存256M以上
硬盘20G以上
操作系统:
MicrosoftWindows2000,XP,VISTA,Windows7
开发平台介绍:
VisualC++6.0。
它是微软公司推出的开发Win32应用程序(Windows95/98/2000/XP/NT),面向对象的可视化集成工具。
它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C++类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。
之所以选择VisualC++作为开发工具,不仅仅因为曾经有过使用它的经验,看中的更是它的功能强大和使用方便。
它本身不仅具有极其强大的编程能力,它允许选择和管理外接程序,并内含多种实用控件,这些对VisualC++的扩充又进一步增强了它的开发环境的能力。
2.2核心功能
该播放器程序共分7个模块,结合ActiveMovie控件可以实现预期的所有功能。
其中,添加模块用于打开媒体文件并添加到播放列表;关闭模块用于结束循环并关闭播放器;播放模块用于设置定时器开始播放;暂停模块用于暂停播放;停止模块用于结束循环并停止播放;全屏模块用于全屏化播放视频文件;循环模块包含两个函数,分别用于显示播放模式是否为循环、实现顺序循环播放列表中的文件。
2.2.1系统流程图
程序运行在vc++6.0的环境中,在运行的过程中的每一个操作都会显示出播放器的不同的功能模块,程序流程图如下图1所示:
图1:
系统流程图
2.2.2核心模块
本程序的核心模块为,完成对视频播放器的需求分析、功能模块划分并由此设计了播放器应用程序,实现了各功能与控件的连接。
本软件使用方便快捷、应用面广泛、简单易学、适合各种人群所使用。
程序的功能模块图如图2:
图2:
功能模块划分
多媒体播放模块数据流图如下图3:
图3:
数据流图
3系统运行环境及截图
3.1系统运行环境
MFC(MicrosoftFoundationClasses),是一个微软公司提供的类库(classlibraries),以C++类的形式封装了Windows的API。
并且包含一个应用程序框架,以减少应用程序人员的工作量。
其中包含的类包含大量的Windows句柄封装类和很多Windows的内建控件和组建的封装类。
WindowsMediaPlayer包括用于呈现音频和视频的MicrosoftActiveX控件。
该控件可在任何运行WindowsMediaPlayer的计算机上获得。
WindowsMediaPlayer是一种独立的技术,此外,它还包括了一个ActiveX控件形式的组件对象模型(com)服务器(Player与ActiveX控件之间的关系相当于MicrosoftInternetExplorer与其所提供的WebBrowserActiveX控件之间的关系)。
有两种方法可用于创建使用WindowsMediaPlayerActiveX控件的应用程序。
你可以在Web应用程序中使用该控件,也可以在基于Windows的应用程序中使用它。
3.2系统截图
1)创建MFC视频播放器界面
创建对话框模式的播放器界面,在界面添加功能按钮,功能按钮有添加文件,播放文件,删除部分播放列表,删除播放列表,顺序播放,单曲循环播放,随机播放,打开播放列表和退出按钮,其中播放列表为添加一个列表框,播放模式为添加了三个单选按钮。
如下图4。
播放控件为WindowsMadiaPlayer,WindowsMediaPlayer为最终用户提供了各种信息和功能,但是,你可能需要提供自定义交互或自定义数据,使用用户页面插件可完成此项工作。
WindowsMediaPlayer的完整模式由许多区域组成,如NowPlaying(正在播放)功能和播放列表窗格。
某些区域在默认状态下不可见,但最终用户可将其显示为可见。
这些区域包括显示在NowPlaying功能底部的设置区域,以及显示在播放列表上方的元数据区域。
图4:
播放器界面
用户页面插件分五种类型。
其中三种类型显示在Player的不同区域中。
在每个区域中,每次只启用一个插件。
1、显示插件:
这些插件占据NowPlaying功能中的可视化效果显示区域。
由于该区域通常很大,因此比较适合显示大量数据或复杂的交互控件集。
2、设置插件:
这些插件占据NowPlaying功能中的可视化效果显示区域的下面。
该区域包含图形均衡器、视频设置和其他用于配置播放或WindowsMediaPlayer外观的控件,设置插件比较适合添加相似的自定义功能,使最终用户能够配置Player的外观或行为。
3、元数据插件:
这些插件位于播放列表上方的一个小区域。
他们比较适合显示曲目、唱片集或播放列表的确切信息,同时也适用于简单控件或超链接。
例如,WindowsMediaPlayer包含一个元数据插件,它显示的封面图形是一个指向有关当前播放的唱片集和音乐家的更多信息的链接。
有两类界面插件在WindowsMediaPlayer窗口中不显示。
1、窗口插件:
这些插件占用一个单独的窗口。
他们比较适合显示信息或向最终用户提供从NowPlaying功能切换到其他功能或加载其他插件时始终存在的交互操作。
2、背景插件:
这些插件没有图形页面(除非像对待任何插件那样,为他们提供属性页)。
他们比较适合最终用户不要求进行输入的自动服务。
2)添加bitmap图片为背景图片,单击插入显示添加类型,选择bitmap,绘制图片并创建一个新的函数DrawMainPicture(CDC*pDC),在这个函数中实现将新建的bitmap图片添加到原建立MFC播放器界面上,如下图5显示背景,以及将背景添加上界面的代码。
图5:
添加的bitmap背景
源代码:
voidCMFCDlg:
:
DrawMainPicture(CDC*pDC)
{
CDCMemDC;
CBitmapbitmap;
BITMAPm_bitmap;
bitmap.LoadBitmap(IDB_M);
bitmap.GetBitmap(&m_bitmap);
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(&bitmap);
pDC->BitBlt(0,0,m_bitmap.bmWidth,m_bitmap.bmHeight,&MemDC,
0,0,SRCCOPY);
bitmap.DeleteObject();
MemDC.DeleteDC();
}
(3)添加播放文件的截图(图6)以及源代码,如在记事本中添加打开文件的方式一样,添加可打开文件使用函数charszFileFilter[]="媒体文件(*.avi,*.mp3,*.wma,*.mp4)|*.avi;*.mp3;*.wma;*.mp4|";
图6:
添加文件
源代码:
voidCMFCDlg:
:
Onadd()
{
charszFileFilter[]="媒体文件(*.avi,*.mp3,*.wma,*.mp4)|*.avi;*.mp3;*.wma;*.mp4|";
CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter);
POSITIONpos=dlg.GetStartPosition();
if(dlg.DoModal()==IDOK)
{
while(pos!
=NULL)
{
m_pathname=dlg.GetNextPathName(pos);
m_list.AddString(m_pathname);
}
}
}
(4)展开播放列表通过函数OnList()通过控件Button
展开播放界面的整个界面,展开截图如图7所示:
图7:
展开播放器界面全图
(5)单击保存列表,将添加到列表的文件连同根目录一起保存到list.txt中,如下图8所示:
图8:
保存文件以及根目录
源代码:
voidCMFCDlg:
:
Onsave()
{
CStdioFilefile;
file.Open(".\\list.txt",CFile:
:
modeCreate|CFile:
:
modeReadWrite|CFile:
:
typeText);
for(inti=0;i{
CStringstrtemp;
m_list.GetText(i,strtemp);
strtemp+="\n";//需要换行
file.WriteString(strtemp);
}
file.Close();
}
(6)单击删除列表将添加到记事本中的文件名以及根目录删除,如下图9所示:
图9:
删除文件名以及清空记事本
源代码:
voidCMFCDlg:
:
Onlistdel()
{
CStdioFilefile;
m_list.ResetContent();
file.Open(".\\list.txt",CFile:
:
modeCreate);
}
(7)单击删除删除选中的播放文件,如下图10所示:
图10:
删除光标选中的文件
源代码:
voidCMFCDlg:
:
Ondellistcur()
{m_list.DeleteString(m_list.GetCurSel());//删除当前光标所选择的行
Onsave();//自动保存删除某一行后的播放列表
}
(8)退出程序按钮所调用的函数如下图11所示:
图11:
退出按钮
源代码:
voidCMFCDlg:
:
Onexit()
{
CDialog:
:
OnCancel();
KillTimer
(1);//一定要记住在退出程序时删除计数器,释放内存,这是个很好的习惯}
4附录
4.1系统设计实现的基本原理与过程
本课程设计的目标是完成实现一个可播放多种音频视频文件的多媒体播放器。
要求播放器能够基本实现音频视频文件的打开,播放,暂停,停止,音量控制等基本播放器操作。
多媒体播放器的基本实现过程为。
4.2如何创建Player应用程序
WindowsMediaPlayer包括用于呈现音频和视频的MicrosoftActiveX控件。
该控件可在任何运行WindowsMediaPlayer的计算机上获得。
WindowsMediaPlayer是一种独立的技术,此外,它还包括了一个ActiveX控件形式的组件对象模型(com)服务器(Player与ActiveX控件之间的关系相当于MicrosoftInternetExplorer与其所提供的WebBrowserActiveX控件之间的关系)。
有两种方法可用于创建使用WindowsMediaPlayerActiveX控件的应用程序。
你可以在Web应用程序中使用该控件,也可以在基于Windows的应用程序中使用它。
要在Web应用程序中使用WindowsMediaPlayer,应在页面的超文本标记语言(HTML)中包含一个OBJECT元素。
并在OBJECT中包含嵌套的PARAM元素,以指定WindowsMediaPlayerActiveX控件是否可见,包含哪些操作按钮以及该控件的其他属性。
通过包含多个OBJECT元素,可在一个Web页面中包含多个控件。
要完全控制嵌入的Player,可以在页面的HTML中编写脚本代码。
要在基于Windows的应用程序中使用WindowsMediaPlayer,可以包含一个对服务于该控件的动态链接库(DLL)的引用。
例如,在MicrosoftVisualBasic中,使用Components(组件)对话框设置一个对WindowsMediaPlayer的引用。
最终用户可在任何安装了WindowsMediaPlayer的基于Windows的计算机上运行该应用程序。
他们可以通过已经熟悉的用户页面收听音频或观看视频。
企业程序员可以简单地使用Player提供的播放功能,并将其精力集中在应用程序的特定业务需要上。
心得
通过对本课程设计的编写,熟悉MCI指令的应用开发功能更为强大的播放器,熟悉如何利用VisualC++开发各种应用程序的步骤与一些基本方法与技巧,还知道了一些程序的调试技巧。
通过对VisualC++课程设计的实践,可以进一步巩固自己的所学,熟悉了C++语言,同时加强了自己时间动手的能力,如何查找资料,发现问题后如何解决等。
总的来说本次课程设计,收获颇丰。
在前面实现播放等基本功能时候并没有遇到太大的困难,这要基于强大的多媒体控制接口,只要简单的发送一些命令便可以实现这些基本功能。
但是问题总是不断会出现的,关键是要如何去解决它。
还有细节真的很重要。
在此我也发现,最好是把前面做好的工作做一个记录,不然虽然你前面记得怎么做的,但是难免会忘掉一些细节问题。
这样既减少了出错的概率,也加快了解决问题速度。
最后总算完成了程序,尽管还不完善,也存在一些问题,但是这只是开始,以后只会不断提高,越来越好。
参考文献
[1]郑莉,董渊。
C++语言程序设计(第4版)。
北京:
清华大学出版社。
2003