基于VC++的多媒体播放器设计与实现_第1页
基于VC++的多媒体播放器设计与实现_第2页
基于VC++的多媒体播放器设计与实现_第3页
基于VC++的多媒体播放器设计与实现_第4页
基于VC++的多媒体播放器设计与实现_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

广西科技大学 普通本科毕业设计 论文 说明书普通本科毕业设计 论文 说明书 课题名称课题名称 基于基于 VC VC 的多媒体播放器设计与实现的多媒体播放器设计与实现 学 院 计算机科学与通信工程学院 专 业 计算机科学与技术 软件工程方向 班 级 学 号 姓 名 指导教师 2015 年 05 月 01 日 摘摘 要要 随着互联网的快速发展 多媒体技术和多媒体通讯技术的逐步成熟使得信息从单 一媒体到多媒体的方向发展 人们对多媒体信息的需求量日益增加 多媒体播放器也 应运而流行起来 大多数多媒体播放器软件的功能基本大同小异 一般都可支持本地 媒体文件和网络媒体文件 功能上已经大致完善 但是也有不足之处 论文主要作了 以下工作 一 详细地介绍了该课题研究的目的和多媒体技术发展的现状和发展趋势 介绍 该课题的主要工作内容和难点所在 二 对软件可行性研究初步项目计划 需求的分析 同时通过用户调查和对软件 性能和功能了解制定开发流程 设定好项目的开发环境 之后逐步按流程和需求完成 软件的初步设计 对于设计实现过程中的难题 寻找可行的解决方案 三 对播放器程序的概要设计 播放器系统按功能进行建立和划分模块 以及确立 模块与模块的接口 并调用好各模块和整体间连接 再者就是分析好层次结构 设计 友好的人机界面 最后再软件的详细设计以及实现主要的功能代码 列出该部分函数 的代码 四 对播放器程序的测试 在特定的测试环境的平台下 主要是于软件所实现的 基本功能进行了黑盒测试 通过测试发现输入还有输出的逻辑错误 以及在初始化时 因为错误导致的程序的终止 界面的显示发生不正常 程序的性能和功能发生了不正 确错误等等 通过使用 Windows 7 操作系统对多媒体播放器的设计与实现 程序设计的开发工 具采用 Microsoft Visual C 6 0 在程序设计中 使用了微软公司的 ActiveX 控件 Windows Media Player WMP 通过不断运行调试 初步实现了多媒体播放器的软件 开发的基本功能 基于 MFC 集成开发环境 使用 Windows 操作系统提供的 ActiveX 实 现编程 并完成需求的功能 并实现了占用内存比较小 界面简洁明了 功能较完全 支持多格式的视频和音频 同时具有程序健壮性强等特点 关键词 多媒体技术 播放器 ActiveX MFC 多媒体 MCI Abstract With the Internet and the development of information technology multimedia technology matures and multimedia communications technology makes information from a single media to multimedia direction increasing people s demand for multimedia information multimedia player should be transported and popular Most multimedia player software functions substantially similar generally can support local media files and online media files The function has been substantially improved but there are drawbacks Paper made the following work A detailed description of the current situation and development trend of purpose and multimedia technology development in the research introduces the main content Second preliminary feasibility study of software project planning requirements analysis while developing the development process through user surveys and understand the performance and functionality of the software set up the project s development environment then gradually according to the process and requirements to complete the preliminary design software For the design and implementation problems in the process to find viable solutions Third the player program s outline design player system set up and divided by function module and the establishment of an interface module and modules and each module and the overall good call en addition is good hierarchy analysis design friendly detailed design of man machine interface software and finally achieve the main function of the code Fourth the test player program in platform specific test environment primarily in the realization of the basic functions of the software black box testing were found to input as well as output of logic errors and pass the test during initialization because termination errors of the program the interface displays unusual occurrence performance and functionality of the program is not correct the error occurred and so on Through Windows 7 operating system design and implementation of multimedia player used programming development tools using Microsoft Visual C 6 0 In programming the use of Microsoft s ActiveX controls Windows Media Player WMP by constantly running debugging the initial realization of the basic functions of the multimedia player software development MFC based integrated development environment using ActiveX Windows operating system provides for programming And complete functional needs And to achieve the memory for relatively small concise interface features a more complete multi format video and audio but also has robust procedures and other characteristics Keywords multimedia player ActiveX MFC multimedia MCI 目目 录录 1 绪论 1 1 1 前言 1 1 2 背景 1 1 3 研究目的 3 1 4 相关技术 3 2 需求分析 6 2 1 播放器软件基本调查 6 2 2 软件功能分析 7 2 3 软件运行环境 9 2 4 业务流程分析 9 2 5 数据流程分析 10 2 6 可行性分析 12 3 系统总体设计 13 3 1 概要设计 13 3 2 界面设计 16 4 详细设计 18 4 1 功能模块详细设计 18 4 1 1 文件模块设计 21 4 1 2 播放控制模块设计 23 4 1 3 播放列表模块设计 28 4 1 4 播放循环模块实现 31 4 1 5 音量模块实现 32 4 1 6 定时关闭 33 4 1 7 对话框初始化 35 5 软件测试 37 5 1 测试方案 37 5 2 测试用例 37 根据测试过程制定两组测试用例 用例组如下表 5 1 和表 5 2 所示 37 5 3 黑盒测试 38 5 3 1 文件功能 39 5 3 2 播放控制功能 40 5 3 3 播放列表功能 41 5 3 4 音量控制模块 42 5 3 5 播放模式模块 43 5 3 6 定时关闭模块 44 结束语 45 致 谢 46 参考文献 47 1 绪论 1 1前言 随着科学技术的发展 在计算机 手机普及的今天 信息传播速度越来越快 也 越来越广 多媒体作为一种将图像 声音 文本等多种媒体据为一身的存在形式 在 计算机 手机 随身听等载体中出现 成为人们在生活中获取信息来源之一 在互联网起步的年代 网络技术 计算机硬件水平较低的限制 人们获取新闻信 息主要还是以看报纸 电视 还有人与人间的交流 媒体的传播主要以方式广播电视 里 DVD 播放器 当今网络技术的不断提高 迅速发展 人们能够更方便的连接互联 网来获取信息 流媒体的出现 多媒体的发展对世界的信息文化传播起到了促进作用 加快了信息全球化的发展 同时也成为了信息化今天的一部分 播放器作为一种播放视频或音频文件的软件 把数字信号加工处理成图片声音等 多种方式 识别展现同时存在一种或者多种媒体文件 媒体作为信息的载体 存储设 备作为媒体的载体 由载体 硬盘等 播放器 多媒体信息 视频音频 使得存在载体 中的媒体信息得以彰显 大多数播放器携带解码器用来还原已经过的压缩媒体文件 同时播放器还需要自带一组变换频率缓冲算法 现在播放器主要为音频播放器 代表软件 天天动听 千千静听 酷狗 QQ 音乐 等 和视频播放器 代表软件 RealPlayer KMPlayer 暴风影音 迅雷看看等 常用多媒体的文件主要格式包括 音频格式 AIFF AAC MP3 WAVE WMA 等 视频格式 F4V AVI RMVB MOV WMV MKV 等 1 1 1 设计目标 设计一个能支持多种格式 包括视频格式和音频格式的的播放器 有良好的人机交 互界面 且播放功能完善 还附加其他需求的而添加的功能 支持播放列表 音量控 制等 具体的功能基本符合当今视频音频播放器的需求来设计 并在这标准上根据自 己的需要做一下修改 1 2背景 媒体是作为信息载体的一种形式 在计算机中 它有两种含义 1 作为传播信息 的载体 有包括文字 图片 声音 语言 视频 音频等 2 作为存储信息的载体 比如 ROM 只读存储器 RAM 内存 磁盘等储存设备 媒体作为信息的载体 它 接收各式的数据信息 如图像 声音 文字等 再经过了计算机处理以及加工之后 以 文字形式 声音形式 图片形式 动画形式等多种形式彰显 实现 输入 输出 I O 方式的多元化 同时改变了旧时计算机只能接受输入输出文字 信息 数据信息的局限 性 通常我们将媒体分为了五大类 1 感觉媒体 能够直接作用于人的感官 使人产生感觉的媒体 如声音 图像 动画 文字等 2 表示媒体 为传输感觉而创造出来的中间手段 能够使感觉有效地从一处传递 到另一处 3 表现媒体 用在感觉媒体和信息传输中电信号之间转换所用的媒体 大致是指 信息输入 输出的工具设备 包括输入媒体 例如 鼠标 摄像机 键盘以及麦克风 等 和输出媒体 例如 屏幕 纸和喇叭等 4 存储媒体 以存储表示媒体的载体 5 传输媒体 用来将表示媒体从某一处传输到另一处的物理实体 用来进行网络 传输的通讯介质 例如 有线方式有同轴电缆 光纤以及双绞线等 而无线方式则有 wifi 蓝牙和红外线等 1 多媒体作为近几年出现的新生事物 是融合两种或者多种媒体的形式 我们称之 为多媒体 这种混合形式的信息载体 在当今的地位显得越来越重要 在人们去信息 需求量大的今天 多媒体举足轻重 相信在不久的一段时间中 多媒体会朝着更好的 方向快速的发展 如全息投影 虚拟成像技术 都开始新的技术革命 人接受信息 主要通过 视觉 听觉 嗅觉 触觉 味觉 也就是说明人有五种接受信息的方式 文字信息只能靠视觉获取 声音靠听觉 同理气味靠嗅觉和味觉 压力和温度靠触觉 其中 90 的信息来自视觉 想象一下 光是看一段动画就类似感觉到了 90 的信息 此 时再加上声音 温度 压力 气味的结合 那就是身临其境了吗 多媒体技术 Multimedia Technology 是一种将计算机中图像方面 文字方面和声 音方面等各式各样的信息融合一体 形成了计算机和用户之间人机交互作用的技术 多媒体技术涉及的是计算机的相关的对象的产物只属于计算机领域的技术 所以说电 视 广播等均不属多媒体技术的范围 2 多媒体技术的特点 1 集成性和多样性 多媒体融合了多种单一媒体聚于一身 经过对在计算机媒中 以数字信息化处理和加工形成一人具有多种属性的新形式 能更好的传达和承载信息 具有媒体无法具有的优势 2 数字化 多媒体以数字形式存在 3 人机交互性 人机交互就是多媒体的一大特点 它形成了人与计算机 人与计 算机及计算机间的交互 交互使人感觉身临其境 置身其中 更有利用户使用和控制 信息手段 3 4 实时性 画面和声音 信息 等能随时间而动态的变化 1 3 研究目的 近年随着来计算机产业和科学技术的发展 硬件的成本不断减少 传输瓶颈不断 的突破 个人计算机性能的提高应用越来越普及 突破硬件条件的限制 对图像 视 频等更高层次的支持 在计算机存储容量 存储媒体的信息容量扩大 网络飞跃式的 发展 网络传输提高速度上 传输媒体显得更方便快捷 媒体交互变得更容易 使得 多媒体应用更加的广泛 在新闻 广告 教育 娱乐 科研领域应用 并且得到很好 的利用 于是我萌生尝试制作一个基于 VC 多媒体播放器 虽然网上已经有了许多功 能强大 界面优美 且算法精良的播放器 但大多数软件都以商业利益为主 内嵌广 告 以展现多媒体的工具来传播信息 并通过广告应用多媒体技术到商业领域 也是 值得学习借鉴的 我想可以通过设计和实现的过程学习和应用多媒体技术 首先播放器要具有基本的播放控制的功能 且对大多数视频文件 avi Wmv mpeg 等 音频文件 wav cd aif mp3 等 格式的支持 功能有打开 播 放 快进 快退 暂停 停止 有播放列表以及列表管理 进度条 音量控制 单曲 循环 列表循环 随机播放等循环功能 以按键操控 快捷键操控和鼠标操控为主 播放器的界面以整齐 简洁明了的风格布局 开发使用的操作系统为 WIN 7 旗舰版 测试使用的操作系统 WIN 7 旗舰版 软件支持系统 WIN 8 WIN 7 WIN XP 开发工具为 VC 6 0 使用微软的微软基础类库 MFC 编程 通过 Windows Media Playd 的控件以 及 MCI 接口 开发效率也是比较高 精心去设计程序 我们可以完成一个相对不错的 播放器 对多种格式的兼容以及支持 内存占用率比较低 适合配置低的或者是要求 不高的用户 国内大部分 1 4 相关技术 C 语言 The C Programming Language 1983 年 在内尔实验室在 C 语言的基础上推出了 C 一开始曾被称为 new C 之 后又叫 C with Class 最后得名于 C 语言的 操作符 表示源自 C 语言的自然演 变 C 是一种面向对象的编程语言 作为一种通用的编程语言 得到了广泛的应用 C 具有多种编程范式 面向对象编程 过程化编程以及泛型编程 作为 C 语言扩展 保留了 C 语言的大部分语法 在它的基础上引入了对象的模型 同样设计 C 语言考虑 的是实现对过程事物的控制 而 C 这是思考如何构建对象模型 C 对 C 语言的扩展 主要表现在 1 类型检查更加严格 2 增加标准模版库 STL 3 C 增添了面向对象 4 C 还增添了对运算符的重载 5 C 增添泛型编程 Template 6 增添了异常处理 然而 C 语 言和 C 最大区别不是在于解决问题的方法 主要是解决问题的思想的方法不同 4 C 的语言特点 1 语言灵活 能高效的执行 具有高级语言的优点 C 可以直 接访问物理地址 2 无需复杂的程序设计环境 多种平台支持 C 3 C 静态类型同 C 语言一样具有高效且可移植性 4 面向对象语言 且有很多优秀的程序框架如 MFC QT OWL 等 C 具体开发过程如图 1 1 所示 图 1 1 开发 C 编程步骤 MFC 微软基础类 Microsoft Foundation Classes MFC 微软基础类 是一种应用程序框架 随着 VC 开发工具发布 由一个 CWinApp 类对象和 MFC 派生类组成 可以看成为封装了的 Win32 该类库提供可复用的 类库 微软提供开发人员使用 MFC 作为 VC 的一部分 提供 C 在 windows 平台下的 程序开发的效率和便利 MFC 作为 WinAPI 微软提供的 Windows 应用程序编程接口 和 C 的结合 允许第三方编程语言进行在 Windows 操作系统下应用程序的开发 操作 系统提供的 API 供发开人员使用 而系统内部的实现 你可以不需知晓 可以说 MFC 是微软 API 在 C 中的封装 其关键技术在消息映射和消息传递的消息处理机制 在 SDK 中没有消息映射的概念 消息响应传递回调函数 然后判断消息类型 再接着处理 其中 MFC 中重要的几个类 1 CWnd 作为大多数 窗口 的父类 如 CButton 按钮 CFrameWnd 框架窗口 CDialog 对话框 等 2 CDialog 对话框类 3 CDC 全名设备 文本 与 GDI 图形设备接口 一起负责文字图像显示的工作 通过对屏幕的像素点进 行绘图 4 CDocument 文档类主要负责读取和写盘 处理内存和磁盘的交互的 5 CWinApp 应用程序类 MFC 程序的主函数 程序编译执行的入口和出口 其中 InitInstance 函数负责初始化窗体 5 ActiveX ActiveX 控件或称 OCX 控件 作为组件嵌入软件或者网页中 特点有快速开发 支 持多语言的编程 在 COM 组件作为基础建立的 ActiveX 为开发人员提供了一个开放集 成的平台 在 WEB 网页和应用程序中应用广泛 2 需求分析 2 1 播放器软件基本调查 多媒体播放器的基本情况就是能对多种媒体格式的视频音频进行数字信号存储的 播放 在网络上已经有了许多流行且优秀的播放器 我们可以先去其概况和功能进行 了解然后制定软件需求 由腾讯公司开发制作的一款支持本地媒体文件本地播放器 能支持多种格式的视 音频 第一个创立轻量级多播放的内核技术 作为一款 纯净 的多媒体播放器 没 有任何植入广告 也没有强制安装其他软件 且支持的格式多 深受好评 界面 新 版的 QQ 影音的界面比旧版更为多彩 但还是一如既往的简洁 同时还提供换肤的功能 不是仅仅是把界面的背景做更改 而是把整体的布局和窗口的样式以及颜色风格都做 了改动 功能界面有进度条 播放控制按钮 隐藏和显示播放列表 播放控制功能 播放 暂停 停止 上一曲 下一曲 调整进度 播放列表功能 添加文件夹 添加文件 删除选中项 选中播放 打开自动保存列 表列表排序 播放循环功能 单一播放 顺序播放 无序播放 单一循环播放 以及列表循环播放 对一个本地播放器来说 暴风影音功能算是较为强大的了 但是根据时代的发展 现在主流的播放器都是据有网络播放和本地播放两种功能 有服务器支持的播放器可 以直接在播放器中搜索视频 代表暴风影音 作为本地播放器拥有播放器的功能 良好的人机交互界面 已经流畅的解码同时也 作为网络播放器 能在线检索资源 在线播放和缓存媒体资源的软件 功能强大 深 受广大用户的喜爱 还具有转换格式可以对当前格式进行转换 同时可以对播放文件 进行片段的截取 可以把某块片段截取下来保存 还有对视频截图 对当前画面的保 存成位图 2 2 软件功能分析 多媒体播放器通过初步的对用户群体调查我了解到作为用户他的需求重点主要在 如下几个方面 1 要求功能齐全 兼容性强 2 程序必须具有比较迅速的响应速度 3 程序要求占的系统资源比较少 同时不存在二级或二级以上的 BUG 4 具有美观友好的人机交互的界面 还经过了对 QQ 影音 暴风影音等几款多媒体播放器分了解 分析制定了多媒体 播放器的基础需求分析如下 1 实现播放控制功能 播放控制包括播放 暂停 停止以及上一曲和下一曲等基本 的播放器控制功能 提供用户进行操作 当播放音乐时播放界面就显示波形动画 还 有添加全屏播放的功能 让用户得到更好的体验 2 实现进度的控制 进度控制包括播放进度条 快进和快退 方便用户了解观看进 度已经对播放进度的控制和改变 每次快进或快退 播放进度前进或者退后百分之一 若是播放进度的百分之一小于五秒则每次快进或者退后 5 秒 3 实现音量控制 上调或下调滑条来控制音量的增加或者减少 音量的变化不影响 操作系统的音量 可以通过勾选音量按钮来开关音量 4 实现播放列表以及列表的管理 设计一个按钮能让播放列表显示和隐藏 在列表 中显示媒体文件的信息 如文件名 文件格式 播放时长 所在硬盘的位置 能在列 表里添加文件 移除选中的文件 双击播放选中的文件 清空列表 保存列表 还有 调整文件所在列表的位置 导入列表和导出列表 5 实现支持多种格式音频 MP3 WMA 等 视频格式 AVI WMV 等 的打 开 6 实现菜单栏 将所以控制功能都对应实现在菜单栏中 设置快捷键的绑定 以方 便用户使用对应的功能和操作 有利于建立良好的人机交互的界面 7 界面简洁整齐 让用户一目了然 8 实现播放循环模式 循环模式包括单一播放 顺序播放 无序播放 单一循环播放 以 及列表循环播放 9 实现程序托盘 让程序可以化为最小化图标在后台运行 在播放音乐时 可以给 用户更好的享受 10 定时关闭功能 该功能主要面向音频方面的需求设计的作为音频播放器时 或 许睡觉看书时可以听歌 为用户设计计关机和关闭程序的功能 11 截图功能 此功能面向视频方面的需求 对于用户在观看影片时遇到的精彩画 面可以及时的截取下来保存 12 提供用户换肤的功能 用户可以自定义部分界面 让其自己可以根据自己的喜 好制定界面风格 具体功能用例图见图 2 1 所示 图 2 1 多媒体播放器用例图 2 3 软件运行环境 操作系统 Windows 2000 Windows XP Windows Vista Windows 7 2 4 业务流程分析 首先开始程序 先是打开一个文件 有两种打开方式 一 从列表里添加文件或 者导入列表打开 二 直接打开文件 如果文件是符合兼容的类型 然后开始播放 否则视为打开失败 播放过程中有一些的供用户使用的操作 列表打开可以使用列表 的循环模式 用户可以对列表进行一系列的操作 最后是退出 用户使用完毕结束程 序 详解见图 2 2 所示 图 2 2 业务流程图 2 5 数据流程分析 根据播放控制模块的数据流程分析 首先获取媒体文件的信息 通过 WMP 的解码 器进行媒体文件的数据解码 解码成数据信息流 其中包括了声音信息流和图片信息 流 声音数据流通过系统进行声音合成 声卡接受到数据流处理并输出 图像数据流 通过图像编码 再进行显示控制的选项 显卡获取数据流 处理并输出 关于系统的 数据流图见图 2 3 和图 2 4 所示 图 2 3 多媒体播放器系统顶层图 图 2 4 多媒体播放器系统 0 层图 播放列表模块中通过打开文件添加到播放列表中或者是通过列表添加功能添加文件 列表中以表格的形式分别文件名 文件的格式 文件播放的时长 文件路径 一目了 然的显示媒体相关信息 基于时间戳的播放过程中 详解见图 2 5 仅仅对早到的或晚到的数据块进行等待 或快速处理 往往是不够的 如果想要更加主动并且有效地调节播放性能 就需要引入 反馈机制 也就是通过对比音视频的时间戳将当前数据流的播放状态反馈给上层的 源 如果音频流滞后 就即时通知音频解码器加快音频流输出 但是如果滞后太多 则直接将当前数据丢弃 直接跳到下一帧 如果视频流滞后 就通知音频解码器减慢 音频输出速度等待视频流 如滞后太多也直接进行跳帧 数据流首先通过分离器分解为 视频数据流和音频数据流 然后经过对应的解码器 同时由本地系统时钟来进行时间 戳控制 获得准确显示或回放时间以后进行时间戳比较 若同步则直接输出 不同步 则进行音频跳帧或等待 直到同步后输出 分离器 视 频 解 码 器 音 频 解 码 器 时 间 截 控 制 时间截比较 视频音频同 步 信息反馈 视 频 输 出 视 频 解 输 出 图 2 5 视频音频同步数据流程 2 6 可行性分析 开发工具 Visual Studio 2013 和 VC 6 0 开发语言 C 采用的是 Visual C 是 Windows 操作系统上常见的 C 开发工具 是 Microsoft 公司推出的目前使用极为广泛的基于 Windows 平台的 C 的可视化的开发环境 Visual C 6 0 编译器负责将 C 源代码编译成汇编文件 转变为中间文件 然后使 用连接器将相关的中间文件连接起来 生成可执行的二进制文件 Visual C 6 0 不 仅是一个 C 编译器 而且是一个基于 Windows 操作系统的可视化集成开发环境 integrated development environment IDE Visual C 6 0 许多组件组成 包括编辑器 调试器以及程序向导 AppWizard 类向导 Class Wizard 等开发工具 这些组件通过一 个名为 Developer Studio 的组件集成为和谐的开发环境 使用 VC 6 0 编译工具的 MFC 完成对多媒体播放器的制作 在过去 计算机程序的目标是短小使得运行速度快 的代码 当今计算机的性能更好 价格更大众 程序开发主要的经费从以前以硬件为主 转到了以程序维护 开发为主 所以当今程序设计的第一要务 目标是以可移植性 以 维护性还有可读性 做出一个播放器的途径具有多种方式 但是因为主观的原因开发 语言和开发环境的限制 只能在这个基础上分析其他能够达成目的的方法 根据查阅 资料 目前根据需求能实现的有 1 用 MFC 里面提供的 ActiveX 控件 在选择 Windows Media Player 组件 使用 WMP 组件提供的类 对类的使用和操作来完成对多媒体播放器的设计以及实现 可以 快速的完成一个功能强大 且兼容性和界面友好的多媒体播放器 在实际的项目的改 方案会减少大量的成本 有较好的开发效率 2 使用系统自带多媒体接口 MCI 多媒体应用编程接口 能在比组件更高的层次 上控制媒体设备 操作较为繁琐 却能完成各种功能 综上所述两个条件分析 从开发效率上看的话 ActiveX 控件的相对更高一些 可 以在组件提供的类对象上进行对多媒体播放器的各种功能的 且对 ActiveX 的可读性 更好一些 在组件限制的方面我们采用 MCI 编程 使用 MCI 强大的对系统多媒体接口 的操控 从而开发出一个完善的播放程序 3 系统总体设计 3 1 概要设计 播放器系系统的设计 打开播放器 播放器程序首先进行对话框信息的初始化 初始化的过程中初始化播放列表的信息 然后进行播放 暂停等等的播放控制 修改 播放器列表 记得当前播放状态信息 程序结束 根据流程图 3 1 所示播放系统流程图 图 3 1 播放流程图 程序的应用初始化信息有窗口的类型 系统函数的 对话框的框架 文档类等 对程 序的各模块进行初始化 以及播放器界面的初始化 然后让程序运行加载 加载列表 之前所保存的文件信息 显示预留提供操作 之后可以执行相关播放停止等控制操作 也可以把程序最小化托盘 在后台运行 需要时调出来使用 程序结束前可以进行播 放器配置和播放信息的保存 以供下次打开程序加载使用 根据功能划分为六大模块 详情见图 3 2 所示 图 3 2 系统功能结构图 打开 media player media players 先进行初始化 在打开文件后进行播放列表的加 载 接下来可以进行列表播放 列表数据的导入导出 列表的条目的排序和选项的上 下挪动顺序 选中的选项移除和清空表格功能 见表下 3 1 所示 表 3 1 播放列表模块功能设计 播放列表模块 播放双击选中项来进行播放 列表的导入 导出导入或导出列表信息到二进制文本 选中项的上 下移动鼠标拖动或按键帮助移动改变选中项位置 清空列表或移除选中项点击按键完成清空或选中再点击功能按键 播放模式模块有五种选择模式 当前只能存在一种模式五选一 菜单栏中的播放模式 按键互相排除的单项选则 还有有一个全屏播放模式 见下表 3 2 所示 表 3 2 播放模式模块功能设计 播放模式模块 单个播放和循环播放当前文件播放 或者连续的循环播放改文件 顺序播放和循环播放按顺序播放当前列表里的文件 播放完就停止 循环当前播放 随机播放在当前中随机的选择下个播放的文件 全屏全屏播放 播放控制模块包括对播放状态的控制以及播放进度的控制 见表 3 3 所示 表 3 3 播放控制模块功能设计 播放控制模块 播放状态控制包括暂停 播放 停止的播放状态进行选择 单击相应按键实现播放状态的切换 在没有打开文件和播放列表为空的情况下 按键点击无效 通过上一个以及 下一个进行列表中文件上 下的切换 当前文件若是在列表中的最后一个文件 下一个时则切到列表最上方的文件 播放进度控制包括快进 进度条 快退 单击快进前进总进度的百分之一 快退则是倒退总进 度的百分之一 进度条不仅仅用来显示当前的进度概况 通过拖动改变进度 下面是音量控制模块 见表 3 4 所示 表 3 4 音量控制模块功能设计 媒体文件模块 见表 3 5 所示 表 3 5 文件模块功能设计 文件模块 文件打开并且播放媒体文件 对于无法兼容的文件不给供打开功能 最后一个模块是计划关闭模块 主要是设置定时然后完成相应的关闭操作 主要适用 于播放音乐文件的时候 详细见表 3 6 表 3 6 定时关闭 音量控制模块 音量的增减 静音设置有开启和关闭总音量的开关 关闭就是静音 通过改变进度条调整增 加或者减少音量大小 定时关闭 设置定时可以设置定时 设置规格最大为一天 最小为一分钟 定时操作定时时间到了之后执行的操作 关机或者关闭程序 倒计时显示和后台显示倒计时 开启之后可以后台 也可以停止定时计划 3 2 界面设计 打开 VC 6 0 New Poject MFC AppWizard EXE 界面选择对话框模式 然后在对主对话框右键选择右键菜单中 Insert ActiveX Controls 向下翻找到 Windows Media Player 的组件对该组件右键属性对组件属性进行修改 ID 设置为 IDC OCX1 在常规一栏下的控件布局选项中 把布局设置成 None 这样播放插件就只 提供显示功能而没有其他的功能 我们把功能按钮先布局好图 3 3 主界面所示 对应播放控制使用编组框圈起来内 十字排列分成上一个 暂停 播放 停止 下一个 播放模式使用下拉列表选择播放的模 式 音量设置单选按钮和滑动条 通过勾选单选键来开启或者关闭音量 通过滚动滑 动条调节音量大小 播放进度用法滑动条和静态文本来实现 左边的文本是当前的播 放时间 右边的文本是该媒体文件的最大时长 中间放有滑动条 根据时间的推移 滑条跟着向右滑动 直到媒体文件播放完毕 滑条也划到底部 在滑条右下方做了一 个快进和快退的旋转按钮 按左边的箭头的功能是快退 每次快退总进度的百分分一 按右边的箭头的功能是快进 每次按动前进总进度的百分之一 同时拖动进度条也有 调节播放进度的功能 右边一整块是用列表控件做的播放列表 把风格里的视图设置 为 报告 在列表下面添加 5 个管理列表的按钮 打开 添加 移除 清空 退出 图 3 3 播放器主界面 整体来看这个播放器界面已经比较完善了 就差把对应的功能实现了 所以我们所 设计的界面基本如一下图 3 4 所展示的那样子 以简洁为主要风格 功能按钮排布整齐 虽然于其他优秀的播放器的界面相比差之甚远 但是在 MFC 的界面算较好者 图 3 4 添加菜单栏后的播放器主界面 4 详细设计 4 1 功能模块详细设计 打开播放器后 播放器先初始化 然后打开文件 打开的文件加入了播放列表 播 放列表显示了媒体文件的相关信息 然后进行播放 导入和导出文件列表和一些对应 的列表管理的操作 清理和移动列表中文件 之后可以选择列表播放的模式 模式主 要有五种 也可以进行播放状态的控制 调整播放进度 改变音量的大小 切换当前 播放的内容等 具体见图 4 1 所示 图 4 1 系统顺序流程图 根据模块的划分 按文件 播放控制 播放列表 播放模式 音量的模块顺序逐步 完成功能 在此之前先做一个菜单栏 在 Resource view 资源视图对当前资源文件右键 插入 Menu 菜单栏 对对话框右键属性绑定 IDR MENU 或者是 CMyMediaPlayerDlg 的初始化函数中添加 对菜单栏创建按钮如下表 4 1 所示 表 4 1 Menu 按键信息表 完成图 4 2 的设置后 需要在资源视图里右键插入一个 Accelerator 在里面添加对 应菜单栏按键的 ID 和快捷键信息进行绑定 按键 ID名称热键快捷键 媒体文件 UINT flag LVIS SELECTED LVIS FOCUSED pos m list GetFirstSelectedItemPosition int iIndexNum m list GetNextSelectedItem pos 获取当前的列表中已经存在的文件数目 下面会使用到 char szFileFilter All File Mp3 File mp3 mp3 Wma File wma wma Video File dat dat Wave File wav wav AVI File avi avi Movie File mov mov Media File mmm mmm Mid File mid rmi mid rmi MPEG File mpeg mpeg CFileDialog filedlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter 非模态显示文件打开的框 设置显示的类型 if IDOK filedlg DoModal CString PathName filedlg GetPathName for int i 0 i m iListNum i CString PathNameCMP PathNameCMP m list GetItemText i 3 if 0 PathName CompareNoCase PathNameCMP m list SetItemState i flag flag PathName m list GetItemText i 3 m schedule SetRange 0 m time m player SetUrl PathName return 主要是查询当前打开的文件是否已经被打开且存在播放列表里了 如果有则直接从 列表里播放 跳过打开环节 m list SetFocus m media static cast m player newMedia PathName m playlist appendItem m media m list InsertItem m iListNum m media GetName m list SetItemText m iListNum 1 m media getItemInfo FileType m list SetItemText m iListNum 2 m media GetDurationString m list SetItemText m iListNum 3 PathName m time ttol m media getItemInfo Duration m player SetUrl m list GetItemText m iListNum 3 m list SetItemState m iListNum flag flag m iListNum m schedule SetRange 0 m time m PlayState 0 获取打开媒体文件的基本信息 以及将其加入 list 列表中 按照表格的显示方现象出来 设置进度条滑动的最大刻度为文件的播放时长 打开 显示文件兼容的类型 符合类型的文件可以显示出来 不符合的隐藏 打开后 进行播放 4 1 2 播放控制模块设计 表 4 3 文件模块 1 播放 暂停和停止使用 CWMPControls 的类函数 对象实例化 m controls 直接使 用用实例调用对应函数 play 实现播放 实现起来简单方便 无需对更低层的媒体 接口进行调用就可以完成相应功能 见表 4 3 所示 播放 设置 int 型成员变量 playstate 为 0 控件 ID类型对应函数对象作用 IDC PLAYButtonvoid CMyMediaPlayerDlg OnPlay 播放 IDC PAUSEButtonvoid CMyMediaPlayerDlg OnPause 暂停 IDC STOPButtonvoid CMyMediaPlayerDlg OnStop 停止 IDC LASTButtonvoid CMyMediaPlayerDlg OnLast 上一个 IDC NEXTButtonvoid CMyMediaPlayerDlg OnNext 下一个 IDC PLAY SL IDER Slidervoid CMyMediaPlayerDlg OnCustomdrawPlaySlider UINT nIDEvent m schedule 播放进度 IDC EDIT TI MENOW Edit Boxvoid CMyMediaPlayerDlg OnTimer UINT nIDEvent 当前进度 时间 IDC EDIT TI MEALL Edit Boxvoid CMyMediaPlayerDlg OnTimer UINT nIDEvent 总进度 时间 m controls play m PlayState 0 暂停 设置 int 型成员变量 playstate 为 1 m controls pause m PlayState 1 停止 设置 int 型成员变量 playstate 为 2 m controls stop m PlayState 1 2 上一个和下一个使用 Button 控件 在对应的响应函数中实现具体功能如下 上一个切换功能 if iItem 0 m list SetItemState m iListNum 1 flag1 flag1 strName m list GetItemText m iListNum 1 3 如果位置等于 0 则表示列表已经到顶了 它的上一个为空 设置它的上一个在列表的 最底端 就是列表最后 也就是最大列表数 1 的 else m list SetItemState iItem 1 flag1 flag1 strName m list GetItemText iItem 1 3 如果不为 0 则切换在上个 item m player SetUrl strName 下一个切换功能 if iItem m list GetItemCount 1 m list SetItemState 0 flag1 flag1 strName m list GetItemText 0 3 如果 item 等于当前列表最大个数 1 的话 说明当前 item 在最底端 它的下个为空 我 设置它的下个为第一个 也是 item 0 else m list SetItemState iItem 1 flag1 flag1 strName m list GetItemText iItem 1 3 如果不等于最大列表个数 1 下个为 item 1 m player SetUrl strName 4 播放进度 获取播放状态 如果当前未播放任何文件 则在进度条的左右双边显示 00 00 如果已经打开播放了文件 获取当前播放的进度时间 Cstring 和 long 型的时间 计算当前进度条的位置 设置当前显示时间和最大时间 进度条位置 调节进度条控制进度 下面是实现播放时间的获取和显示 if m list GetItemCount 0 if m controls GetCurrentPosition 0 SetDlgItemText IDC EDIT TIMENOW 00 00 SetDlgItemText IDC EDIT TIMEALL 00 00 如果播放文件为 0 时 设置显示 text 控件的初始化 00 00 POSITION pos int iItem timepos sPos pos m list GetFirstSelectedItemPosition iItem m list GetNextSelectedItem pos timepos int m controls GetCurrentPosition SetDlgItemText IDC EDIT TIMEALL m list GetItemText iItem 2 SetDlgItemText IDC EDIT TIMENOW m controls GetCurrentPositionString 如果不为 0 显示播放文件最大分钟数 根据每秒刷新一下当前播放时间 为了使用改变进

温馨提示

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

评论

0/150

提交评论