




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I xxxxx 学院学院 本科毕业设计 论文 本科毕业设计 论文 题题 目 目 多媒体播放器设计多媒体播放器设计 学生姓名 学生姓名 学号 学号 系 部 系 部 数学与计算机科学系数学与计算机科学系 专业 专业 计算机科学与技术计算机科学与技术 入学时间 入学时间 201 年年 月月 导师姓名 导师姓名 职称职称 学位 学位 教授教授 导师所在单位 导师所在单位 II 多媒体播放器设计多媒体播放器设计 摘摘 要要 本文主要是开发了一款简单的多媒体播放器 可以播放多种格式的音频 视频文件 该播放器实现 了的基本功能包括 音频视频文件的打开 添加到菜单 媒体的播放 音量大小的调节 播放时间的拖动 暂停播放 停止等 使之成为一款简易的媒体播放设备 能够完美的播放市面上大多数的音频 视频文 件 在毕业设计中 系统开发平台为 Windows XP 操作系统 程序设计环境采用 Visual Studio 2010 程序 通过调试运行 初步实现了设计目标 本程序是基于 MFC 集成开发环境 利用 directshow sdk 实现媒体 播放的功能的 除了基本的播放控制外 还具有全屏播放 静音等实用功能 关键词 多媒体 播放器 关键词 多媒体 播放器 directshow sdk III The Design and Implementation of Multimedia Player Abstract This article is developed a simple multimedia player It can play multiple formats of audio video files The players realize the basic functions include that open the Audio and video files addto the menu and media playback adjust the volume size play time drag pause stop and so on Making it a simple media player device most audio or video files in the market can be played perfectly by this media player In the Graduation The System Development Platform is Windows XP The Programming Environment is Visual Studio2010 Program by commissioning Initial design goals achieved the program is based on MFC Integrated Development Environment Using the directshow sdk control to achieve the functions of media player In addition to the basic playback controls It also has many other utility functions such as playing Full Screen Mute and so on Keywords multimedia player directshow sdk IV 目目 录录 第一章第一章 绪绪 论论 1 1 1 11 1 引言引言 1 1 1 21 2 系统设计的目的和意义系统设计的目的和意义 1 1 1 31 3 研究背景研究背景 2 2 1 41 4 论文主要研究内容及论文结构安排论文主要研究内容及论文结构安排 4 4 第二章第二章 开发平台介绍和软件的初步设计开发平台介绍和软件的初步设计 5 5 2 12 1 开发平台的介绍开发平台的介绍 5 5 2 22 2 软件的需求分析和模块设计软件的需求分析和模块设计 5 5 2 2 12 2 1 软件的需求分析软件的需求分析 5 5 2 2 22 2 2 软件的模块设计软件的模块设计 6 6 第三章第三章 多媒体播放器软件设计多媒体播放器软件设计 7 7 3 13 1 开发环境配置开发环境配置 7 7 3 23 2 实现实现 GRAPHEDITGRAPHEDIT 模拟模拟 8 8 3 33 3 DIRECTSHOWDIRECTSHOW 接口实现函数说明接口实现函数说明 8 8 3 43 4 模块实现函数说明模块实现函数说明 9 9 3 53 5 主要变量声明主要变量声明 1010 3 63 6 设计多媒体播放器的界面设计多媒体播放器的界面 1111 3 73 7 播放器模块设计播放器模块设计 1111 第四章第四章 程序实现结果程序实现结果 1818 4 14 1 程序运行结果演示程序运行结果演示 1818 结束结束语语 1919 参考参考文文献献 2020 致致 谢谢 2121 0 多媒体播放器设计多媒体播放器设计 第一章 绪绪 论论 1 11 1 引言引言 多媒体就是多重媒体的意思 可以理解为直接作用于人感官的文字 图形 图像 动画 声音和视频等各种媒体的统称 即多种信息载体的表现形式和传 递方式 我们所提到的多媒体技术 就是利用电脑把文字 图形 影象 动画 声音及视频等媒体信息都数位化 并将其整合在一定的交互式界面上 使电脑 具有交互展示不同媒体形态的能力 它极大的改变了人们获取信息的传统方法 符合人们在信息时代的阅读方式 在当今信息社会 以多媒体为特征的信息技术和信息产业的发展及应用对人 类社会产生的影响和作用愈来愈明显 愈来愈重要 多媒体能改变信息的包装 实现知识信息数字化 为人们获得知识信息提供极大的方便和无穷的乐趣 友善 的人机界面 多种多样的多媒体教学软件 诱人的电子游艺节目 身临其境的 多媒体导购系统 五花八门的信息家电和高效方便的网上查询等等 无不渗透着 多媒体的作用 它引导人们进入了一个有声有色的世界 同时 多媒体的发展和 应用 极大地推动了各行各业的相互渗透和飞速发展 大大改变了人类社会的工 作环境和生活方式 可毫不夸张地说 多媒体产业的形成和发展 不仅引起了计 算机工业的一次革命 也正在深刻地影响人类社会发生巨大的变革 多媒体技术的发展在很大程度上依靠于多媒体软件开发的水平 目前 不管 是支撑多媒体系统的系统软件 还是管理和开发软件 以及多媒体的应用软件都 在能力和数量上还难以满足多媒体飞速发展的需要 特别是多媒体应用软件的 缺乏一直是制约多媒体产业发展的瓶颈问题 因此己成为多媒体研究和开发的关 键问题 如何制作和设计出大量高质量的多媒体应用软件是计算机从业人员所 面临的迫切课题 也是广大人民群众所关心的事情 多媒体播放器的设计是一门 集计算机技术和数字多媒体技术于一体的综合设计 随着中国计算机技术 宽 带网络技术的发展 越来越多的人开始重视多媒体播放器的发展与应用 1 21 2 系统设计的目的和意义系统设计的目的和意义 这个课程设计的目的就是制作一个能够播放音频 视频文件的播放器 并 使它具备一些简单的操作处理功能 如播放暂停的控制 音量的调节 视频的 全屏播放 视频进度的调节等等 将这个小型播放软件做得尽量的小巧 实用 多媒体技术是当今信息技术领域发展最快 最活跃的技术 是新一代电子 技术发展和竞争的焦点 多媒体技术融计算机 声音 文本 图像 动画 视 1 频和通信等多种功能于一体 借助日益普及的高速信息网 可实现计算机的全 球联网和信息资源共享 因此被广泛应用在咨询服务 图书 教育 通信 军 事 金融 医疗等诸多行业 并正潜移默化地改变着我们生活的面貌 多媒体技术已经成为当今比较热门的研究课题 特别是伴随着多媒体技术 的网络化 使得多媒体技术的发展前景无限广阔 因此掌握多媒体及多媒体技 术的相关知识 了解多媒体技术当前的发展状况及未来的发展前景 并能熟练 地进行多媒体技术的开发 对于当前即将毕业的大学生来讲 是很有发展前途 的 基于此 我选择了此课题 多媒体播放器的设计与实现 期望通过对此课 题的研究与开发 能深入了解多媒体技术 特别是掌握多媒体技术在媒体播放 器中的应用 1 31 3 研究背景研究背景 本设计采用的 Microsoft Visual Studio 2010 是微软公司发布的 Microsoft Visual Studio 软件开发工具的较新版本 此开发软件支持 C VB NET C ASP NET 等多种编程语言 功能非常强大 由于本设计要实现音频和视频解码 所以要用到 directshow sdk 开发包 DirectShow 是微软公司在 ActiveMovie 和 Video for Windows 的基础上推 出的新一代基于 COM Component Object Model 的流媒体处理的开发包 与 DirectX 开发包一起发布 DirectShow 使用一种叫 Filter Graph 的模型来管理 整个数据流的处理过程 运用 DirectShow 我们可以很方便地从支持 WDM 驱动 模型的采集卡上捕获数据 并且进行相应的后期处理乃至存储到文件中 这样 使在多媒体数据库管理系统 MDBMS 中多媒体数据的存取变得更加方便 它广 泛地支持各种媒体格式 包括 Asf Mpeg Avi Dv Mp3 Wave 等 为多媒体 流的捕捉和回放提供了强有力的支持 ActiveMovie 开发代号 Quartz 这个由 Geraint Davies 为微软公司设 计的 DirectShow 的前身 在 Windows 3 0 时代 是作为一种对当时最流行的 媒体平台 QuickTime 的回应而开发的 ActiveMovie 最早的出现是被附加在 Windows 95 上面的并且需要系统安装了 IE3 0 它当时的使命是作为 IE 的 附件播放在其窗口内的媒体文件 正如当时 QuickTime 为 Netscape 以及 IE 提供的服务那样 它的另一个功能是作为 Windows 视频技术 VFW Video For Windows 的一个替换 特别地为在 VFW 架构中难于处理的 MPEG 移动图象专 家组格式文件 文件提供辅助处理 在 1998 年 大致在 DirectX 5 年代的时候 ActiveMovie 被重命名为 DirectShow 反映了微软公司在那时正在努力加强 直接地 在一个通常的取 2 名系统之下与硬件合作的技术 并且被包含为 DirectMedia SDK 的一部份 在 DirectX 的 7 版中 DirectShow 变成了 DirectX SDK 主要组成部分而且 如同 DirectInput 等其它 DirectX APIs 一样被给予了它自己的位置 甚至之 后 DirectShow 被主要用来接收来自像一个手提摄像机这样的电视输入装置 的数据 而且它从文件中显示数据的能力被广泛用在 Windows Media Player 上面 从 2005 年四月起 DirectShow 被从 DirectX SDK 移除 必须单独下 载 Extra 包才能得以支持 之后 DirectShow 的文档和示例被转移到 Windows SDK DirectShow 也正式成为 Windows 的一个组件 然而 在编译某些 DirectShow 的示例时 DirectX SDK 仍然是必需的 本次设计出来的多媒体播放器主要支持 avi wmv flv rmvb 和 mkv 几种 网络上常见的视频格式 对此做简要介绍 Avi 的英文全称为 Audio Video Interleaved 即音频视频交错格式 它于 1992 年被 Microsoft 公司推出 随 Windows3 1 一起被人们所认识和熟知 所 谓 音频视频交错 就是可以将视频和音频交织在一起进行同步播放 这种视 频格式的优点是图像质量好 可以跨多个平台使用 但是其缺点是体积过于庞 大 而且更加糟糕的是压缩标准不统一 因此经常会遇到高版本 Windows 媒体 播放器播放不了采用早期编码编辑的 AVI 格式视频 而低版本 Windows 媒体播 放器又播放不了采用最新编码编辑的 AVI 格式视频 其实解决的方法也非常简 单 我们将在后面的视频转换 视频修复部分中给出解决的方案 Rmvb 是一种由 RM 视频格式升级延伸出的新视频格式 它的先进之处在于 RMVB 视频格式打破了原先 RM 格式那种平均压缩采样的方式 在保证平均压缩 比的基础上合理利用比特率资源 就是说静止和动作场面少的画面场景采用较 低的编码速率 这样可以留出更多的带宽空间 而这些带宽会在出现快速运动 的画面场景时被利用 这样在保证了静止画面质量的前提下 大幅地提高了运 动图像的画面质量 从而图像质量和文件大小之间就达到了微妙的平衡 FLV 是 FLASH VIDEO 的简称 FLV 流媒体格式是随着 Flash MX 的推出发展 而来的视频格式 由于它形成的文件极小 加载速度极快 使得网络观看视频 文件成为可能 它的出现有效地解决了视频文件导入 Flash 后 使导出的 SWF 文件体积庞大 不能在网络上很好的使用等缺点 WMV Windows Media Video 是微软推出的一种流媒体格式 它是在 同门 的 ASF AdvancedStreamFormat 格式升级延伸来得 在同等视频质量下 WMV 格式的文件可以边下载边播放 因此很适合在网上播放和传输 MKV 不是一种压缩格式 而是 Matroska 的一种媒体文件 Matroska 是一种 新的多媒体封装格式 也称多媒体容器 Multimedia Container 它可将多种 3 不同编码的视频及 16 条以上不同格式的音频和不同语言的字幕流封装到一个 Matroska Media 文件当中 MKV 最大的特点就是能容纳多种不同类型编码的视 频 音频及字幕流 了解了以上的相关知识 使得开发多媒体播放软件有了一个更加清晰的思 路 1 41 4 论文主要研究内容及论文结构安排论文主要研究内容及论文结构安排 本毕业设计是制作一个可播放目前主流媒体格式的多媒体播放器 其基本 功能应具有媒体播放 音量调节 播放进度选择 暂停 停止以及抓图等 使 之成为一款简易的媒体播放设备 能够完美的播放市面上大多数的音频 视频 文件 论文的结构安排 第一章 绪论介绍研究背景 目的和意义等 第二 章 开发工具介绍 软件的需求分析和模块设计 第三章 多媒体播放器软件设 计 第五章 播放器实现结果演示 最后是结束语以及参考文献和附录的相关 内容 4 第二章 开发平台介绍和软件的初步设计 2 12 1 开发平台的介绍开发平台的介绍 Visual Studio 是微软公司推出的开发环境 是目前最流行的 Windows 平 台应用程序开发环境 Visual Studio 2010 版本于 2010 年 4 月 12 日上市 其 集成开发环境 IDE 的界面被重新设计和组织 变得更加简单明了 Visual Studio 2010 同时带来了 NET Framework 4 0 Microsoft Visual Studio 2010 CTP Community Technology Preview CTP 并且支持开发面向 Windows 7 的 应用程序 除了 Microsoft SQL Server 它还支持 IBM DB2 和 Oracle 数据库 在 vs2010 开发平台上开发用户界面应用程序 我们需要用到 mfc 类库 MFC Microsoft Foundation Classes 是一个微软公司提供的类库 class libraries 以 C 类的形式封装了 Windows 的 API 并且包含一个应 用程序框架 以减少应用程序开发人员的工作量 其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类 MFC 是 WinAPI 与 C 的结合 API 即微软提供的 Windows 下应用程序的编 程语言接口 是一种软件编程的规范 但不是一种程序开发语言本身 可以允 许用户使用各种各样的第三方 如我是一方 微软是一方 Borland 就是第三方 的 编程语言来进行对 Windows 下应用程序的开发 使这些被开发出来的应用程序 能在 Windows 下运行 比如 VB VC Java Delhpi 编程语言函数本质上全 部源于 API 因此用它们开发出来的应用程序都能工作在 Windows 的消息机制 和绘图里 遵守 Windows 作为一个操作系统的内部实现 这其实也是一种必要 微软如果不提供 API 这个世上对 Windows 编程的工作就不会存在 微软的产 品就会迅速从时尚变成垃圾 上面说到 MFC 是微软对 API 函数的专用 C 封装 这种结合一方面让用户使用微软的专业 C SDK 来进行 Windows 下应用程序的 开发变得容易 因为 MFC 是对 API 的封装 微软做了大量的工作 隐藏了好多 程序开发人员在 Windows 下用 C strFilter MPEG File mpg mpeg mpg mpeg strFilter MP3 File mp3 mp3 strFilter WMA File wma wma strFilter All File 编辑下拉选项框 CFileDialog dlg TRUE NULL NULL OFN PATHMUSTEXIST OFN HIDEREADONLY strFilter this 设置打开文件对话框 if dlg DoModal IDOK 当用户打开文件时 做以下行为 m sourceFile dlg GetPathName 获取文件所在的路径名 m mediaFileName GetFileTitleFromFileName m sourceFile 1 获取 文件名称 CreateGraph 创建链表 连接滤波器 2 单击 播放 按钮后 开始选择播放的媒体文件 同时在标题栏中显 示播放速率和媒体文件名 具体代码如下 void CMediaPlayerDlg OnBnClickedButtonPlay if m pFilterGraph 如果 CDXGraph 对象已创建成功 则执行以下代码 SetWindowText T 1 倍速播放 m mediaFileName 设置窗口标题 栏文本内容 12 m pFilterGraph Run 播放视频文件 m pFilterGraph ChangeAudioVolume m volume 改变音量 m sliderVolume SetPos m volume 设置音量进度条的位置 if m playerTimer 0 设置定时器 m playerTimer SetTimer SLIDER TIMER 100 NULL 3 点击 暂停 按钮 暂停播放视频 void CMediaPlayerDlg OnBnClickedButtonPause if m pFilterGraph NULL 如果 CDXGraph 对象不为空 则执行 代码 m pFilterGraph Pause 暂停播放视频 4 点击 停止 按钮 停止播放视频 void CMediaPlayerDlg OnBnClickedButtonStop if m pFilterGraph NULL 如果 CDXGraph 对象不为空 则执行 代码 m pFilterGraph Stop 停止播放视频 5 点击 退出 按钮 退出程序 void CMediaPlayerDlg OnBnClickedButtonExit OnBnClickedButtonStop 停止播放 CoUninitialize 关闭程序的所有线程 13 CDialog OnOK 关闭窗口 6 点击 抓图 按钮 实现视频截图功能 并且将图片保存到软件的同一 目录下 void CMediaPlayerDlg OnBnClickedButtonGrasp static int c 0 TCHAR szFilename MAX PATH DWORD dwPathLen 0 if dwPathLen GetModuleFileName AfxGetInstanceHandle szFilename MAX PATH 0 得到程序整个路径名长度 return for int i dwPathLen 1 i 0 i 获取图片保存的目录 if szFilename i szFilename i break else szFilename i 0 设置图片保存的完整路径名称 CString str str Format T s szFilename CString strTemp strTemp Format T d c str strTemp T bmp c TCHAR p str GetBuffer str GetLength str ReleaseBuffer 14 进行抓图 并且将图片放在指定路径下 if m pFilterGraph NULL if m pFilterGraph SnapshotBitmap p else MessageBox T 抓图失败 7 实现拖拽功能 使得手动拖动进度条控件 能够控制音量的大小以及 视频的进度 void CMediaPlayerDlg OnHScroll UINT nSBCode UINT nPos CScrollBar pScrollBar if pScrollBar GetSafeHwnd m sliderPlayer GetSafeHwnd 如果拖动消息来自视频进度条 则执行代码 if m pFilterGraph NULL CDXGraph 对象不为空 double duration 1 0 定义事件长度对象 m pFilterGraph GetDuration 获取流媒体文件时间 长度 double pos duration m sliderPlayer GetPos 1000 0 计算得到 进度条位置 m pFilterGraph SetCurrentPosition pos 设置当前进度条的位 置 else if pScrollBar GetSafeHwnd m sliderVolume GetSafeHwnd 如果 拖动消息来自音量进度条 if m pFilterGraph NULL m volume m sliderVolume GetPos 获取音量进度条位置 m pFilterGraph ChangeAudioVolume m volume 改变当前音 15 量 else CDialog OnHScroll nSBCode nPos pScrollBar 8 设置静音或非静音模式 void CMediaPlayerDlg OnMenuMute if m pFilterGraph NULL CDXGraph 对象不为空 static int flag 0 设置信号量 if flag 判断信号量是否为真 即判断当前是否为静音模式 m pFilterGraph Mute 设置为静音模式 flag 1 设置信号量为真 else m pFilterGraph UnMute 设置为非静音模式 flag 0 设置信号量为假 9 设置全屏播放模式 void CMediaPlayerDlg OnMenuFullscreen static int flag 0 设置信号量 if m pFilterGraph NULL if flag 判断信号量的值是否为真 即判断当前是否为全屏 m pFilterGraph SetFullScreen TRUE 设置为全屏模式 flag 1 设置信号量为真 16 else m pFilterGraph SetFullScreen FALSE 关闭全屏模式 flag 0 设置信号量为假 10 设置置顶播放模式 但用户将播放器设置成置顶播放模式后 播放 器就不会被其他窗口所覆盖 void CMediaPlayerDlg OnMenuAlwaysontop static int flag 0 设置信号量 if flag 判断信号量是否为真 即判断当前是否为置顶模式 SetWindowPos m hWnd HWND TOPMOST 0 0 0 0 SWP NOMOVE S WP NOSI ZE 设置窗口为置顶 flag 1 设置信号量为真 else SetWindowPos m hWnd HWND NOTOPMOST 0 0 0 0 SWP NOSIZE SWP NOMOVE 设置窗口为非置顶 flag 0 设置信号量为假 11 播放速率的控制 以下为半速播放视频的代码 正常速率播放和两 倍速率播放视频的代码相似 这里就不在重复讲述 void CMediaPlayerDlg OnMenuHalfrate if m pFilterGraph 如果 CDXGraph 对象不为空 则执行代码 m pFilterGraph SetPlaybackRate 0 5 将播放速率设为 1 2 SetWindowText T 1 2 倍速播放 m mediaFileName 设置窗口标 题文本 17 18 第四章 程序实现结果 4 1 程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜冶炼过程中的环保设备研发进展预测分析研究考核试卷
- 金属加工中的金属加工设备维护管理信息系统考核试卷
- 矿石催化反应与催化机理考核试卷
- 银冶炼中的冶炼厂智能化改造与生产调度考核试卷
- 针织品生产计划与优化考核试卷
- 外科缝合穿针教学
- 口腔护士职业实践心得
- 麻醉科每月医疗质量控制
- 冷菜制作的卫生与安全
- 妊娠高血压疾病查房要点
- 铝粉加工合同协议书
- 大学语文试题及答案安徽
- 近七年宁夏中考化学真题及答案2024
- 2025至2030中国芳纶纤维行业需求预测及发展前景趋势研究报告
- 十一学校小升初入学测试数学真题及详细解答
- Braden 压力性损伤评分表详解
- 婚内赌博欠债协议书范本
- 造价咨询项目管理制度
- 徐圩港区疏港航道整治工程报告书
- XX公司事故隐患内部报告奖励制度1
- 儿童重症肺炎护理常规
评论
0/150
提交评论