为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > MFC视频播放器

MFC视频播放器

2018-02-20 45页 doc 407KB 43阅读

用户头像

is_005190

暂无简介

举报
MFC视频播放器MFC视频播放器 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕 业 设 计,论 文, 论文题目: MFC视频播放器的设计与实现 所属系部: 计算机工程学院 指导老师: 高海英 职 称: 讲师 学生姓名: 周诗植 班级、学号: 11301305 专 业: 计算机信息管理专业 西安航空职业技术学院制 2014年 4 月 25 日 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕业设计,论文,任务书 题目: MFC视频播放器的设计与实现 任务与要求: 使用VC6.0利用MF...
MFC视频播放器
MFC视频播放器 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕 业 设 计,论 文, 论文题目: MFC视频播放器的设计与实现 所属系部: 计算机工程学院 指导老师: 高海英 职 称: 讲师 学生姓名: 周诗植 班级、学号: 11301305 专 业: 计算机信息管理专业 西安航空职业技术学院制 2014年 4 月 25 日 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕业设计,论文,任务书 题目: MFC视频播放器的设计与实现 任务与要求: 使用VC6.0利用MFC设计一个简单的视频播放器,实现简单的视频播放功能。 1.视频列表框:可以实现添加(从计算机的指定位置添加视频或者音频文件到列表框之中)、删除、清空和保存视频列表框之中的内容。 2.播放控制:其中播放控制之中包括视频的播放、暂停、停止、退出程序、上一曲、下一曲、前进、后退的功能。 3.播放模式:可以实现视频的顺序播放、随机播放和单曲循环播放。 4.音量控制:可以实现视频的音量大小的控制以及静音功能。 5.时间控制:利用滑块来控制当前视频的播放功能,同时可以指定视频的开始和结束时间。使视频实现从任意时间点开始到任意时间点结束的功能。 时间: 2014 年2 月17 日 至2014 年 4月 11日 共 8 周 所属系部: 计算机工程学院 学生姓名: 周诗植 学 号: 11301305 专业: 计算机信息管理 指导单位或教研室: 西安航空职业技术学院 指导教师 : 高海英 职 称: 讲师 西安航空职业技术学院制 2013年 11 月 25 日 西安航空职业技术学院 毕业设计论文 毕业设计(论文)进度表 指导教师 执 行 日 期 工 作 内 容 签 字 2014.02情 况 (17-2014(0查找资料~进行前期的准备工作 完成 3.5 2014.03.MFC视频播放器的需求分析 完成 5-2014.03.19 2014(03 .19-2014.03.FC视频播放器概要设计 完成 31 2014.04.FC视频播放器的界面设计阶段 完成 01-2014.04.4 2014.04.FC视频播放器的实现 完成 5-2014.04.11 教师对进 度计划实施情 况总评 签名 年 月 日 本表作评定学生平时成绩的依据之一。 西安航空职业技术学院 毕业设计论文 【摘要】 目前常见的多媒体软件应该说各有特色,但是几乎每一个都存在着不如人意的地方。我的课题是“MFC视频播放器的设计与实现设计”,首先是初步介绍一些当前的媒体及媒体播放器,然后是详细介绍一个由本人设计的多媒体播放器――cnplayer。该播放器是基于MFC集成开发环境,利用系统的MFC命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑、支持各种视频格式等功能优势,还实现了CD抓轨。 关键词:媒体播放器;MFC;播放列表;音频;视频 西安航空职业技术学院 毕业设计论文 Abstract: There are different characteristic among the normal multimedia player at present, but there are shortcoming for all of these software nearly. My center is "A Software Of Media Player Designed by VC++ Program Language ".Firstly, let me introduce those media formats and players at present, then there is a particular presentation for the media player that designed by myselr. This player is based on MFC, referring to MFC(media controller interface) from system, having many good functions such as little size, supporting many kinds of format of media, taking up less system resource, supporting list control for playing item. Key words: media player;MFC;play list;audio;video 西安航空职业技术学院 毕业设计论文 目录 引 言........................................................................................................................................................... 1 2 1 课题研究的目的和技术发展的现状.........................................................................................................1.1 研究本课题的目的 ........................................................................................................................ 2 1.2技术应用的基本现状 ..................................................................................................................... 2 1.3论文完成的主要工作 ..................................................................................................................... 3 1.4本课题的研究难点 ......................................................................................................................... 3 2 MFC简介 ..................................................................................................................................................... 4 2.1 什么是MFC ..................................................................................................................................... 4 2.2 MFC简单介绍 ................................................................................................................................. 4 2.3 MFC关键技术 ................................................................................................................................. 4 2.3.1 MFC程序的初始化过程 ..................................................................................................... 4 2.3.2 运行时类型识别(RTTI) ................................................................................................ 5 2.3.3 动态创建 ............................................................................................................................ 5 2.3.4 永久保存 ............................................................................................................................ 5 2.3.5 消息映射 ............................................................................................................................ 6 2.3.6 消息传递 ............................................................................................................................ 6 3 软件需求分析 ............................................................................................................................................ 6 3.1 需求分析 ........................................................................................................................................ 6 3.2 可行性研究 .................................................................................................................................... 7 4软件设计 ..................................................................................................................................................... 7 4.1 .基本功能描述 .............................................................................................................................. 7 4.1.1 视频播放器主要功能图 .................................................................................................... 8 4.1.2 本地控制播放器的播放 .................................................................................................... 9 4.1.3 播放器运行流程 .............................................................................................................. 10 4.1.5 系统设计流程图 .............................................................................................................. 10 4.1.6 播放过程流程图 .............................................................................................................. 11 4.2主要变量声明 ............................................................................................................................... 12 5.软件实现 .................................................................................................................................................. 13 5.1使用AppWizard建立应用程序框架 ........................................................................................... 13 5.1.1AppWizard创建应用程序 ................................................................................................. 13 5.1.2在MFC应用程序向导-步骤 ............................................................................................. 13 5.2 建立视频播放器对话框 .............................................................................................................. 14 5.2.1 页面基本布局 .................................................................................................................. 14 5.2.2 建立相应的类向导 .......................................................................................................... 15 5.2.3添加文件的实现 ............................................................................................................... 17 5.2.4播放控制的实现 ............................................................................................................... 18 5.2.5播放模式选择的实现 ....................................................................................................... 19 5.2.6界面大小控制的实现 ....................................................................................................... 20 5.2.7音量调节的实现 ............................................................................................................... 20 6 播放器测试阶段 ...................................................................................................................................... 22 6.1 打开视频播放器 .......................................................................................................................... 22 6.2 打开视频列表 .............................................................................................................................. 22 西安航空职业技术学院 毕业设计论文 6.3 添加文件 ...................................................................................................................................... 23 6.5 播放控制 ...................................................................................................................................... 23 播放模式选择 .............................................................................................................................. 24 6.6 6.6.1 顺序播放 .......................................................................................................................... 24 6.6.2 随机播放 .......................................................................................................................... 24 6.6.3 单曲循环 .......................................................................................................................... 24 6.7 界面控制 ...................................................................................................................................... 25 6.7.1 全屏控制 .......................................................................................................................... 25 6.7.2 模式 .......................................................................................................................... 25 6.8 声音控制 ...................................................................................................................................... 25 6.8.1 声音大小控制 .................................................................................................................. 25 6.8.2 静音控制 .......................................................................................................................... 26 7 系统测试 .......................................................................................................................................... 26 7.1错误一 ........................................................................................................................................... 26 7.2错误二 ............................................................................................................................................ 26 7.3错误三 ........................................................................................................................................... 27 7.4错误四 ........................................................................................................................................... 27 8 关于软件 .................................................................................................................................................. 27 感谢 ...................................................................................................................................................... 28 结束语 .................................................................................................................................................. 29 参考文献 .............................................................................................................................................. 30 西安航空职业技术学院 毕业设计论文 引 言 多媒体技术的概念和应用出现于20世纪80年代初期,经过二十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。 随着技术的发展,多媒体素材类型也增多,包括音频、视频、图像、动画等,以往由于音视频、图像等的信息容量大,受硬件条件限制等原因,多媒体应用并不广泛,但是随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用。开发多媒体课件、网络课程、网站、应用软件、管理项目等均需利用多媒体素材。 本论文就是在这种环境下希望研究出一种,体积小,功能全的播放器。本视频播放器主要使用的技术是VC++下的MFC,MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 所以用来制作视频播放器十分良好。 西安航空职业技术学院 毕业设计论文 1 课题研究的目的和技术发展的现状 1.1 研究本课题的目的 随着技术的发展,多媒体素材类型也增多,包括音频、视频、图像、动画等,以往由于音视频、图像等的信息容量大,受硬件条件限制等原因,多媒体应用并不广泛,但是随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用。开发多媒体课件、网络课程、网站、应用软件、管理项目等均需利用多媒体素材。 因此制作一款拥有现代意义的视频播放器十分的重要,与其它多媒体播放器比较,这一多媒体播放器具有功能强大、占用空间小的特点,它与现有多媒体资源应用状况紧密结合,既具有很强的直观感,又不失一般性。 1.2技术应用的基本现状 Microsoft公司1998年推出了Visual C++6(0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。与VC++5(0的最大不同之处是它的帮助功能更强大,MSDN(Microsoft Developer Networking)为包括VC++6(0在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。所以VC,,6(0可谓是Microsoft公司的王牌产品,编程功能强大而赢得广大程序的偏爱。 Visual C++ 6.0,简称VC或者VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。 Visual C++6.0不仅是一个C++ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual 西安航空职业技术学院 毕业设计论文 C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 1.3论文完成的主要工作 根据学习研究,本媒体播放器的开发基于VC,, MFC的对话框,利用Windows MFC(Media Control Interface)控件和VC,,6(0自带的ActiveX控件――ActiveMovieControl Object来实现各类媒体格式的播放及程序界面处理。 首先确定要解决的问题是弄清楚MFC函数与命令消息的名称类型和功能;其次是通过分析媒体播放的具体过程,在打开媒体设备的过程中应用程序需要做哪些事情,以便在应用程序中加入对这些过程支持的代码;在对应用程序的流程有了大致的轮廓以后(最好画出流程图),在开始考虑程序框架的设计,应用程序外观的设计;最后也是最关键的就是编写实现播放媒体的代码将播放器的基本功能实现,紧接着就是程序的调试和完善。 1.4本课题的研究难点 针对如上所述的研究方向,本课题“MFC视频播放器的设计与实现设计”的主要任务是视频播放器的设计以及实现功能,完成对一些格式视频的播放等等功能。 因此应解决的主要问题是如何把你了解的多媒体和VC知识应用到实际编程当中去及编制的应用软件的可用性、易用性、健壮性。 本课题的难点如下: 对于VC,,集成开发工具的熟练使用,特别是MFC的使用,重点放在界面设计; 各类媒体设备的播放函数及相应的命令; 播放列表的生成及其操作(删除而不影响其他文件的播放等); CD音轨的抓并可以播放各种视频格式。 以上各点构成了本软件的难点,在克难过程中,我的分析问题解决问题的能力有了很大的进步,经过努力,一个占用空间小、简单实用的小型媒体播放器终于完成了。我开发的媒体播放器支持所有media player支持的媒体格式的播放及其他AVI视频的播放,实现了对播放列表的控制,CD抓轨等功能。 西安航空职业技术学院 毕业设计论文 2 MFC简介 2.1 什么是MFC MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 2.2 MFC简单介绍 微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用,大部分类均从CObject 直接或间接派生,只有少部分类例外。[1]MFC应用程序的总体结构通常由开发人员从MFC类派生的几个类和一个CWinApp类对象(应用程 ppWizard 自动生成框架 序对象)组成。MFC 提供了MFC A Windows 应用程序中,MFC 的主包含文件为Afxwin.h 此外MFC的部分类为MFC/ATL 通用,可以在Win32 应用程序中单独包含并使用这些类。 由于它的易用性,初学者常误认为VC++开发必须使用MFC,这种想法是错误的。作为Application Framework,MFC的使用只能提高某些情况下的开发效率,只起到辅助作用,而不能替代整个Win32 程序设计。 2.3 MFC关键技术 2.3.1 MFC程序的初始化过程 建立一个MFC窗口很容易,只用两步:一是从CWinApp派生一个应用程序类(这里是MyApp),,然后建立应用程序对象(theApp),就可以产生一个自己需要的窗口(即需要什么样就在InitInstance()里创建就行了)[2]。 西安航空职业技术学院 毕业设计论文 2.3.2 运行时类型识别(RTTI) 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数)。typeid()关键的地方是可以接受两个类型的参数:一个是类名称,一个是对象指针。 2.3.3 动态创建 动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。我觉得这是每个MFC的学习者很希望理解的问题。 初次接触MFC的时候,很容易有这样的迷惘。MFC的几大类不用我们设计也就罢了,但最疑惑的是不用我们实例化对象。本来最直观的理解就是,我们需要框架的时候,亲手写上CFrameWnd myFrame;需要视的时候,亲自打上CView myView;„„但MFC不给我们这个机会,致使我们错觉窗口没有实例化就弹出来了~就象画了张电视机的电路图就可以看电视一样令人难以置信。但大伙想了一下,可能会一拍脑门,认为简单不过:MFC自动帮我们完成CView myView之流的代码不就行了么~~~其实不然,写MFC程序的时候,我们几乎要对每个大类进行派生改写。换句话说,MFC并不知道我们打算怎样去改写这些类,当然也不打算全部为我们“静态”创建这些类了。即使静态了创建这些类也没有用,因为我们从来也不会直接利用这些类的实例干什么事情。我们只知道,想做什么事情就往各大类里塞,不管什么变量、方法照塞,塞完之后,我们似乎并未实例化对象,程序就可以运行. 2.3.4 永久保存 MFC的连续存储(serialize)机制俗称串行化。“在你的程序中尽管有着各种各样的数据,serialize机制会象流水一样按顺序存储到单一的文件中,而又能按顺序地取出,变成各种不同的对象数据。”不知我在说上面这一句话的时候,大家有什么反应,可能很多朋友直觉是一件很简单的事情,只是说了一个“爽”字就没有下文了。 西安航空职业技术学院 毕业设计论文 2.3.5 消息映射 消息映射与命令传递体现了MFC与SDK的不同。在SDK编程中,没有消息映射的概念,它有明确的回调函数中,通过一个switch语句去判断收到了何种消息,然后对这个消息进行处理。所以,在SDK编程中,会发送消息和在回调函数中处理消息就差不多可以写SDK程序了。 在MFC中,看上去发送消息和处理消息比SDK更简单、直接,但可惜不直观。举个简单的例子,如果我们想自定义一个消息,SDK是非常简单直观的,用一条语句:SendMessage(hwnd,message/*一个大于或等于WM_USER的数字*/,wparam,lparam),之后就可以在回调函数中处理了。但MFC就不同了,因为你通常不直接去改写窗口的回调函数,所以只能亦步亦趋对照原来的MFC代码,把消息放到恰当的地方。这确实是一样很痛苦的劳动。 2.3.6 消息传递 有了消息映射表之后,我们得讨论到问题的关键,那就是消息发生以后,其对应的响应函数如何被调用。大家知道,所有的MFC窗口,都有一个同样的窗口过程——AfxWndProc(„)。在这里顺便要提一下的是,看过MFC源代码的朋友都知道,从AfxWndProc函数进去,会遇到一大堆曲折与迷团,因为对于这个庞大的消息映射机制,MFC要做的事情很多,如优化消息,增强兼容性等,这一大量的工作,有些甚至用汇编语言来完成,对此,我们很难深究它。所以我们要省略大量代码,理性地分析它。 3 软件需求分析 3.1 需求分析 随着计算机技术的发展和网络的普及,多媒体素材类型越来越多,包括音频、视频、图像、动画等,由于音视频、图像等的信息容量大,受硬件条件限制,以往多媒体应用并不广泛,随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用,开发多媒体课件、网络课程、网站、应用软件、管理项目等均需利用多媒体素材。本软件是为满足部分人的浏览需求而开发的,能打开多种媒体格式,小巧简单,此外,为了方便使用,还具有对播放列表进行操作的功能,因此开发制作这一播放器具有备现实意义。 西安航空职业技术学院 毕业设计论文 3.2 可行性研究 要开发一个软件程序,其十分重要。一个合理可行的方案有助于减少程序员的工作量、缩短开发周期,更重要的是可以开发出运行效率更高、可移植性更好、健壮性更强的代码。 以下是本程序的方案论证: 本程序的开发用的是VC++的MFC集成开发环境,开发本程序的方案大概有如下二种: 1、利用VC开发环境提供的ActiveX控件――ActiveMovieControl Object 2、利用系统自带的MFC命令接口来编程。 (1)第一种方法是使用ActiveX控件,MFC可以利用“ActiveMovieControl Object”控件直接操作,实现起来非常简单,但用到的是完全别人的东西,故而不是太好。 (2)第二种方法是使用系统自带的MFC命令接口。MFC包含在系统的MMSYSTEM.H文件中,参数较多,功能比较齐全,虽然使用起来比较烦琐,但是更具有开发意义。 综上所述,使用系统自带的MFC命令接口来编程的方法是比较理想的选择。以下的开发设计流程就是基于第二种方案的设计流程。 4软件设计 4.1 .基本功能描述 使用VC6.0利用MFC设计一个简单的视频播放器,实现简单的视频播放功能。如:视频的播放、暂停、停止、退出程序、上一曲、下一曲、前进、后退,视频文件的添加、删除,以及视频列表的保存和清空等,同时可以实现远程控制视频的模块。 西安航空职业技术学院 毕业设计论文 4.1.1 视频播放器主要功能图 图4-1 视频播放器主要功能图 西安航空职业技术学院 毕业设计论文 4.1.2 本地控制播放器的播放 图4-2 本地音乐播放 播放功能:播放视频,音频文件。 暂停功能:暂停正在播放中的音频视频文件,当再次点击该按钮的时候视频继续播放。 停止功能:停止当前视频的播放,返回到未播放视频时候的初始状态。 退出程序:退出当前的MFC视频播放器 上下一曲功能:在播放过程中,控制播放列表中的文件,实现歌曲的上下一曲功能。 快进退功能:在视频播放中点击该按钮实现视频的快速播放或者是 播放模式:包括顺序播放、随机播放和单曲循环,对当前列表框之中的音频和视频执行相应的播放方式。 界面控制:包括全屏和标准。全屏模式下播放列表覆盖整个屏幕,标准模式下视频界面按照最初的列表执行。 声音控制:可以调整当前播放视频或者音频的声音大小,以及实现静音功能。 打开列表:打开音频和视频的播放列表。 西安航空职业技术学院 毕业设计论文 保存列表:可以保存当前列表中医存在的视频或者音频,以方便下次播放。 清空列表:清空当前列表,。 添加文件:从电脑中添加视频或者音频到列表中。 删除文件:删除当前列表中当前选择的文件。 4.1.3 播放器运行流程 图4-3 播放器运行程 西安航空职业技术学院 毕业设计论文 4.1.5 系统设计流程图 图4-4 系统设计流程图 4.1.6 播放过程流程图 图4-5 播放过程流程图 西安航空职业技术学院 毕业设计论文 4.2主要变量声明 表 4-1 主要变量声明 控件名称 变量类型 变量名 说明 IDC_play CBtton m_play 播放功能 IDC_pause CBtton m_pause 暂停功能 IDC_stop CBtton m_stop 停止功能 IDC_exit CBtton m_exit 退出程序 IDC_UPONE CBtton m_upone 上一曲 IDC_NEXT CBtton m_next 下一曲 IDC_QUIT CBtton m_quit 后退功能 IDC_ACCELATE CBtton m_accelate 快进功能 IDC_RADIO1 CRADIO 顺序播放 IDC_RADIO2 CRADIO 随机播放 IDC_RADIO3 CRADIO 单曲播放 IDC_RADIO4 CRADIO 全屏模式 IDC_RADIO5 CRADIO 标准模式 IDC_RADIO6 CRADIO 静音 IDC_list CBtton 打开列表 IDC_add CBtton 添加文件 IDC_DELETE CBtton 删除文件 IDC_save CBtton 保存列表 IDC_CLEARLIST CBtton 清空列表 IDC_SLIDER1 CSLIDER m_slider 控制音量 IDC_vol CEDIT m_int 显示音量 西安航空职业技术学院 毕业设计论文 5.软件实现 5.1使用AppWizard建立应用程序框架 5.1.1AppWizard创建应用程序 利用AppWizard创建MFC(exe)创建应用程序,项目文件名为Play。 图5-1 新建MFC(exe)应用程序 5.1.2在MFC应用程序向导-步骤 1对话框中选择:基本对话框(D)选项,其余的采用默认选项。 图5-2 新建对话框 西安航空职业技术学院 毕业设计论文 5.2 建立视频播放器对话框 5.2.1 页面基本布局 由于本程序的工程名为play,故系统会自动生成一个名为IDD_play_DIALOG的资源文件。删除对话框上附带的按钮和文本,然后在对话框的空白处单击鼠标右键,选择插入 ActiveX 控件菜单项。选择Windows Media Player控件,即可添加入该控件,如图11所示。虽然已有该控件,但在右侧的控件工具栏中并没有该控件的选项。原因是该控件只是进行了简单的添加,而没有与工程中的对话框发生任何联系,所以需要对其进行变量的关联,关联变量命名为m_player,变量所属的类为CplayDlg类。 图5- 3选择ActiveX控件 图5-4 插入WMP控件 西安航空职业技术学院 毕业设计论文 图5-5 页面基本布局 5.2.2 建立相应的类向导 利用ctrl+w打开建立类向导,添加IDC_LIST1的Member为m_list,添加IDC_OCX1的Member为m_player,具体添加如3 基本变量声明。 图5-6 建立类向导 这时候,Source Files中增加了17个类并完成页面的基本布局,相应的头 西安航空职业技术学院 毕业设计论文 文件也增加了17个。其中最主要的类为Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpplaylist,Cwmpsettings五大类。其中Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供了与Windows Media Player控件进行交互的基本方法,其中部分成员函数还能够进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作;Cwmpmedia类主要是对于媒体文件资源的一些操 首先,设置窗体的初始大小为(460,400),代码如下: SetWindowPos(NULL,0,0,460,400,SWP_NOMOVE); //设置初始窗体大小,无相对移动 图5-7窗体初始化 当点击窗体上的按钮时,将列表框展开。 西安航空职业技术学院 毕业设计论文 图5-8 播放列表的打开 播放器列表的打开,实现代码为: void CPlayDlg::Onlist() { flag=!flag; if(!flag) { SetWindowPos(NULL,0,0,670,550,SWP_NOMOVE); } else { SetWindowPos(NULL,0,0,850,550,SWP_NOMOVE); } } 5.2.3添加及播放文件的实现 添加适当的设计代码,是视频播放器可以播放一些视频或者音频文件,具体实现代 码如下: void CPlayDlg::Onadd() { char szFileFilter[]="媒体文件 西安航空职业技术学院 毕业设计论文 (*.avi,*.mp3,*.wma,*.wav*.wmv,*.mp4,*.flash)|*.avi;*.mp3;*.wma;*.wmv;* .mp4;*.flash;*.wav|"; CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGED IR,szFileFilter); POSITION pos=dlg.GetStartPosition(); if(dlg.DoModal()==IDOK) { while(pos!=NULL) {m_pathname=dlg.GetNextPathName(pos); m_list.AddString(m_pathname); } } } 5.2.4播放控制的实现 根据图5的程序流程图可以设计主要播放控制的功能。 这里需要用到Windows Media Player控件中AxWindowsMediaPlayer的两个重要属性Ctlcontrols和CurrentPosition,它们含有丰富的函数: 1)Ctlcontrols属性 ( ?1 方法play用于播放多媒体文件,其格式为: 窗体名.控件名.Ctlcontrols.play() :AxWindowsMediaPlayer1.Ctlcontrols.play()。 如 ?2方法pause用于暂停正在播放的多媒体文件,其格式为: 窗体名.控件名.Ctlcontrols.pause() 如: AxWindowsMediaPlayer1.Ctlcontrols.pause() ?3方法stop用于停止正在播放的多媒体文件,其格式为: 窗体名.控件名.Ctlcontrols.stop() 如: AxWindowsMediaPlayer1.Ctlcontrols.stop() ?4 方法fastforward用于将正在播放的多媒体文件快进,其格式为: 窗体名.控件名.Ctlcontrols.fastforward() 如: AxWindowsMediaPlayer1.Ctlcontrols.forward() ?5方法fastreverse用于将正在播放的多媒体文件快退,其格式为: 窗体名.控件名.Ctlcontrols.fastreverse() 西安航空职业技术学院 毕业设计论文 如: AxWindowsMediaPlayer1.Ctlcontrols.fastreverse() (2)属性CurrentPosition用于获取多媒体文件当前的播放进度,其值是数值类型,使用格式为: 窗体名.控件名.Ctlcontrols.currentPosition() 如:int d1 =AxWindowsMediaPlayer1.Ctlcontrols.currentPosition() 此外对于退出功能,可以设计弹出确认对话框来实现,具体方法为:if (MessageBox( "你确定要退出吗, ", "确认退出",MB_YESNO)!=IDYES)。退出使用OnCancel()函数。 5.2.5播放模式选择的实现 播放器模式的选择,建立一个Timer的定时器,获取音频或者视频当前的状态。若此时取得index=1,则认为播放器已经完成当前音频或者视频文件的数值。。此时软件IDC_RADIO测试的选择。若是IDC_RADIO1则认为此时播放器应该继续顺序播放,播放完当前歌曲后,自动播放器下一首;若是IDC_RADIO2则认为此时播放器应该继续随机播放,在当前的播放列表中随机产生某一音频或者视频文件对应的编号,开始播放,从而实现随机播放的功能。若是IDC_RADIO3则认为此时播放器应该继续单曲循环,播放完当前歌曲后,继续播放当前音频或者视频文件。 void CPlayDlg::OnTimer(UINT nIDEvent) { int index=m_player.GetPlayState();//播放状态 if(index==1)//如果播放完成 { if(((CButton *)GetDlgItem(IDC_RADIO1))->GetCheck())//如果是顺序播放 { CString str; int index=m_list.GetCurSel()+1; if(index>=m_list.GetCount()) index=0;//如果播放完最后一曲就自动播放第一首 m_list.GetText(index,str); m_player.SetUrl(str); m_list.SetCurSel(index);//自动置光标 西安航空职业技术学院 毕业设计论文 }//这样就实现了顺序播放 if(((CButton *)GetDlgItem(IDC_RADIO2))->GetCheck())//随机播放 { srand(time(0));//目的在于每次都能产生不同的随机数序列 m_list.SetCurSel(rand()%m_list.GetCount());//随机置光标 m_list.GetText(m_list.GetCurSel(),m_pathname); m_player.SetUrl(m_pathname); } if(((CButton *)GetDlgItem(IDC_RADIO3))->GetCheck())//单曲循环 { m_list.GetText(m_list.GetCurSel(),m_pathname); m_player.SetUrl(m_pathname); } } CDialog::OnTimer(nIDEvent); } 5.2.6界面大小控制的实现 我设计了两种界面大小:全屏模式、标准模式。其中全屏模式通过调用函数SetFullScreen(1)实现,但是标准模式都可以通过SetWindowPos函数设置显示的窗口大小来实现。 5.2.7音量调节的实现 对于音量调节,我认为要实现以下功能:通过滑块控件调节音量大小,并将其值显示在相应编辑框中;同理,在编辑框中更改数值也能动态的调节音量并反映在滑块上,使其相对移动。 首先,通过语句m_slinder.SetRange(0,100)设置滑块的移动范围为0-100,这与声音的大小的0-100相对应,实现调节功能。然后可以使用m_slinder.SetPos(50)设置滑块指针初始位置设置为50,即初始声音大小为50。 西安航空职业技术学院 毕业设计论文 再通过语句m_player. GetSettings().SetVolume.(GetPos())使得滑块的移动 控制声音大小并在编辑框中显示出来。 至于在声音控制编辑框中输入数值来改变声音大小,只需调用函数 SetPos(m_size)即可同样实现。 静音选项的控制通过一个if语句进行判断,如果选择静音,则调 m_player.GetSettings(). SetVolume(0)对音量调零,否则返回之前的音量值。 音量控制的代码如下: void CPlayDlg::OnCustomdrawSlider(NMHDR* pNMHDR, LRESULT* pResult) //滑块控制声音大小 { // TODO: Add your control notification handler code here UpdateData(true); m_int=m_slider.GetPos()/10; m_player.GetSettings().SetVolume(m_int); UpdateData(false); *pResult = 0; } void CPlayDlg::OnChangevol() { // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with the ENM_CHANGE flag ORed into the mask. // TODO: Add your control notification handler code here UpdateData(true); m_slider.SetPos(m_int); m_player.GetSettings().SetVolume(m_int); UpdateData(false); } 西安航空职业技术学院 毕业设计论文 6 播放器测试阶段 6.1 打开视频播放器 双击视频播放器执行文件,打开视频播放器。 图6-1 视频播放器初始化 6.2 打开视频列表 点击,打开当前播放器的播放列表。此时视频列表为空,没有任何文件。 图6-2 打开播放列表 西安航空职业技术学院 毕业设计论文 6.3 添加文件 点击,可以将电脑对应位置的视频或者音频添加到播放列表 图6-3 添加播放列表 ,删除列表框之中选择当前文件。 ,保存当前列表框之中的内容,下次打开列表框之时列表框显示为当前保存之时列表框的内容。 ,将当前列表框之中所有的内容清空。 6.5 播放控制 点击选择列表框之中的文件之后,单击播放控制中的播放按钮。进行视频的播放功能。同样的单击播放控制中的其他按钮实现相应的控制。 播放功能:播放视频,音频文件。 暂停功能:暂停正在播放中的音频视频文件,当再次点击该按钮的时候视频继续播放。 停止功能:停止当前视频的播放,返回到未播放视频时候的初始状态。 退出程序:退出当前的MFC视频播放器 上下一曲功能:在播放过程中,控制播放列表中的文件,实现歌曲的上下一曲功能。 西安航空职业技术学院 毕业设计论文 快进退功能:在视频播放中点击该按钮实现视频的快速播放或者是快退播放。 6.6 播放模式选择 6.6.1 顺序播放 单击选择播放模式之中的顺序播放,可以实现使视频按照从上到下的顺序逐个播放。 图6-3 顺序模式选择 6.6.2 随机播放 单击选择播放模式中的随机播放,可以实现播放完成当前的视频或者音频文件之中,随机跳转到任意一个视频或者音频文件进行播放。 图6-4 播放模式选择 6.6.3 单曲循环 单击选择播放模式中的单曲循环,可以实现重复播放当前选择的视频或者音频文件。 图6-5 单曲循环选择 西安航空职业技术学院 毕业设计论文 6.7 界面控制 6.7.1 全屏控制 在播放器为播放任何音频或者视频文件时选择全屏会弹出错误信息。当播放器有视频或者音频文件播放时,播放器跳转到全屏进行播放。 6.7.2 标准模式 点击标准模式,播放器恢复到初始状态。 图6-6 标准模式 6.8 声音控制 6.8.1 声音大小控制 拖动滑块,改变音量数字大小。可以控制当前播放视频或音频的声音大小。 西安航空职业技术学院 毕业设计论文 图6-7 音量控制 6.8.2 静音控制 选择,实现视频的静音出来,此时默认声音为0,且修改声音大小不能改变当前视频播放音量的大小。 7 系统测试报告 程序编写的的过程就是不断发现错误,改正错误,完善程序的过程。当出现编译错误的时候,可以利用VC++6.0中的编译器进行错误的查找,根据提示的错误,对处错误进行改正。还有一些编译无错误却得不到运行效果的错误。一些小错误,比如为定义变量等,在此就不赘述,下面将叙述主要错误已经解决方法。 7.1错误一 编译链接后,错误提示:LINK : fatal error LNK1168: cannot open Debug/kejie.exe for writing 错误原因:可能是因为编译的exe文件正在运行,而再次编译是要修改这个exe文件的,因为不让写,所以就提示这个错。 解决办法:检查是否有运行编译后文件,如果正运行着,就将其关掉。 7.2错误二 编译链接运行后都没问题,但是打开文件的对话框中却无法显示多媒体文件。 错误原因:文件过滤设置错误,原设置为char szFileFilter[]="媒体文件(*.avi,*.mp3,*.wma,*.wav*.wmv,*.mp4,*.flash)|*.avi,*.mp3,*.wma,*.wmv;*.mp4,*.flash,*.wav|";。解决方法:文件过滤后面的分隔符不是逗号,而是分号。更改为:char szFileFilter[]="媒体文件(*.avi,*.mp3,*.wma,*.wav*.wmv,*.mp4,*.flash)|*.avi;*.mp3;*.wma;*.wmv;* .mp4;*.flash;*.wav|"; 西安航空职业技术学院 毕业设计论文 7.3错误三 编译链接后,错误提示: Linking... kejieDlg.obj : error LNK2001: unresolved external symbol "protected: void __thiscall CKejieDlg::OnRadio1(void)" (?OnRadio1@CKejieDlg@@IAEXXZ) Release/kejie.exe : fatal error LNK1120: 1 unresolved externals 执行 link.exe 时出错. kejie.exe - 1 error(s), 0 warning(s) 错误原因:以前定义的函数没有调用,自己删除其代码,但是该函数并没有完全删除,函数的消息映射仍然存在。 解决方法:在相应头文件中删除以前不用的函数即可。 7.4错误四 视频选择全屏之后,退出全屏后软件和系统会出现卡的问题。最后只能利用任务管理器结束程序。 这个问题此时还没有找到问题的所在,还没有解决。所以这是一个遗憾的地方。 8 关于软件 经过长期的调试和改正,软件基本可以正常运行,基本实现了预实现功能。除了支持MICROSOFT MEDIA PLAYER支持的一切格式外,还支持其他一些音视频格式。本软件简单小巧,占很少空间。 因为只是试编的软件,不够专业,所以相比现已成熟的各种播放器来,更显得过于单调,而且功能方面还有待加强。比如说任务书所说的时间控制,指定视频的开始和结束时间。使视频实现从任意时间点开始到任意时间点结束的功能。这个并没有实现。 最后是希望视频播放器能够支持更多的格式,比如说在测试过程中虽然有些flash但是由于对flash格式的东西缺少一个理解和解码等过程,所以现在该视频播放器还没有办法加入更多的格式。 西安航空职业技术学院 毕业设计论文 感谢 经过几个月的忙碌,毕业论文也终于是告一段落。这其中学到的很多,从论文中的很多问题都要首先自己的解决。这其中当然要感谢一些人,高海英老师一直在悉心的指导。很多同学和实习单位的同事也是给予了不少的帮助。 对于编写软件的过程,也是获得了很多。向编写过程中有很多细小的错误都是由于自己的粗心所造成的。而同时编写过程中也是获得了很多的知识点都要自己的去学习,只有在不断的学些的过程中才能出获得知识,才能不断的进度。 西安航空职业技术学院 毕业设计论文 结束语 通过对整个媒体播放器软件的设计,我不仅对播放器的开发了有一定的了解,也认识了平常不常接触到的媒体类型及其发展,使我的编程能力了有了很大的提高。本软件实现在大多数的媒体格式的播放,基本上Windows Media Player能播放的格式,本软件都支持,还有其他一些格式。 虽然看起来成果不错,但是一路走过来,也发现了自己还有很多不足。做毕业设计时让我对VC,,的运用更是熟练了很多,而且有了系统地设计软件的概念,这对我以后的软件开发打下了很好的基础。但是毕竟只是一个人开发,且技术知识不够,当然不能跟专业的媒体播放器(比如winamp,windows media player等)相比,本软件还可以继续开发,比如实现CD抓轨等。 “书到用时方恨少”,只是到要用的时候,才会觉得这句话的有理。在设计的过程中,时常会碰到问题,往往都是解决完一个,同时又会冒出很多,单单只靠书上查上没有用的,而且有时候,虽然网络资源丰富,但是搜索水平不够,也不能找到有效的解决办法,这种时候,向同学老师请教,就会让自己受益很多。 很遗憾,当时选该课题时,有些想实现的功能,由于知识水平有限,最后都只是放了一个模块而已,都没有具体的扩展。有些更只是想想,但是没有实现。总的说来,此次软件设计,让我深刻认识的不足,以后会更加努力。 西安航空职业技术学院 毕业设计论文 参考文献 [1] 精英科技:《视频压缩与音频解码技术》,中国电力出版社,2001年8月第1版。 [2] 周长发:《Visual C++.NET 多媒体编程》,电子工业出版社,2002年6月第1版。 [3] 杨竞锐:《Visual C++.NET深入编程(1CD)》,北京希望电子出版社,2002年1月第1版,第88,96页。 [4]辛长安,梅林:《VC++编程技术与难点剖析》,清华大学出版社,2002年4月第1版。 [5]揣锦华:《面向对象程序设计与VC++实践》,西安电子科技大学出版社,2005年2月第3版。 [6]孙鑫:MFC网上视频教程 [7]pluckypan:MFC视频播放器(带播放列表) 西安航空职业技术学院 毕业设计论文 计算机工程 学院毕业设计(论文)教师指导表 职称 教研室 计算机信息指导教师 高海英 讲师 管理教研室 MFC视频播放专业班级 学生姓名 周诗植 题目 器的设计与113013 实现 指导时间:2014年3月17日 指导内容:1.摘要部分适当详细~声明做什么以及用什么 软件,2.适当添加软件测试部分的相关内容,3、内容的格式以 第 及图表的排放有问题。 一 次 指 导 指导时间:2013年12月19日 指导内容:1. 测试部分要把采用的实例和测试的过程以及 产生的界面都要放进来,这一部分要充实一下;2.进度表和教 师指导表以及审阅、评阅、答辩表格都要按照要求放在打印好 的论文中装订; 第 二 次 指 导 指导时间: 指导内容:添加出软件外的其他目录页~构成完整的论文。 第 三 次 指 导 注:本表由指导教师根据毕业设计(论文)指导工作方案和实际情况填写~在指导工作完 成后 交系,部,保存~作为计算教师指导工作量的主要依据之一, 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕 业 设 计,论文,审 查 意 见 书 指导教师对学生 所完成的题目为 的毕业设计,论文,进行情况、完成质量的审查意见: 成绩: 指导教师: 年 月 日 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕 业 设 计,论文,评 阅 意 见 书 评阅人对学生 所完成的题目为 的毕业设计,论文,评阅意见为: 成绩: 评阅人: 年 月 日 西安航空职业技术学院 毕业设计论文 西安航空职业技术学院 毕 业 设 计,论文,答 辩 结 果 毕业设计,论文,答辩委员会对学生 所完成的题目为 的毕业设计,论文,及答辩评语为: 经答辩委员会研究~确定成绩为: 毕业设计,论文,答辩委员会主任: 答辩委员会委员: 年 月 日 该生毕业设计,论文,最终成绩评定: 审阅成绩,权重评阅成绩,权答辩成绩,权最终 0.4, 重0.4, 重0.2, 成绩
/
本文档为【MFC视频播放器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索