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

下载本文档

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

文档简介

存档编号 基于 VC 的多媒体播 放器的设计与开发 教学学院 数学与计算机科学学院 届 别 2013 届 专 业 计算机科学与技术 学 号 姓 名 指导教师 完成日期 2013 5 3 目录目录 摘要 1 关键词 1 Abstract 2 Key words 2 1 引言 3 1 1 MFC 简介 3 1 2 ActiveX Control 介绍 4 2 需求分析 4 2 1 功能需求分析 4 2 2 性能需求分析 5 2 3 运行需求分析 5 3 系统总体设计 5 3 1 总体设计 5 3 2 总体设计层次图 7 4 详细设计 7 4 1 基本界面设置 8 4 2 打开文件与添加列表控制设置 8 4 3 播放控制控件设置 8 4 4 对列表的控制控件设置 8 4 5 菜单控件设置 9 4 6 程序设计的详细说明 9 5 编码实现 12 5 1 ActiveX 控件在播放器中应用 12 5 2 主要实现原理及程序 13 6 总结 26 参考文献 27 1 摘要 本毕业设计 多媒体播放软件设计 就是为了设计一个简单 实用的播放器 首先是利用 VC 系统的 ActiveX 控件来实现基础 的播放媒体功能 其次 是通过分析媒体播放的具体过程 在打 开媒体设备的过程中应用程序需要做哪些事情 在应用程序中加 入对这些过程支持的代码 再次 对应用程序的流程构造大致的 轮廓 再完善程序框架的设计 应用程序外观的设计 最后 也 是最关键的就是编写实现播放媒体的代码将播放器的基本功能实 现 本软件与其他同类型的多媒体播放器相比 具有体积小 支 持的播放格式多 系统资源占有少的优势 同时支持文件的打开 保存 删除等功能 虽然体积很小 但是基本完成了对常见音频 视频媒体的播放功能 此篇论文主要阐述的是系统设计时所做的一些工作 包括对 系统的需求分析 系统的总体设计以及系统的详细设计 详细说 明了系统的一些常用的功能及特性 以便用户使用 关键词 VCVC ActiveXActiveX 多媒体多媒体 系统设计系统设计 2 Abstract My design multimedia broadcast software design in order to design a practical player Have solved MCI function and ordered the name type of news and function problem at first Secondly it is through analyzing the concrete course that the media broadcasts what things application program needs doing during the process of turning on apparatus of media add the code supported to the course into application program Moreover to the procedure structure roughly outline of the application program and then improve the design of the procedure frame design of the appearance of the application program Finally a key one to write realize code to show the media realize the basic function of the player most too Compared to this software with other same type multimedia player have small form of broadcasting supported more systematic resources occupy few advantages Support the tabulation of broadcasting to edit support the function of opening save of the file at the same time Though the volume is very small the one that has finished to the common audio frequency video media basically has broadcast the function Mainly elaborates this thesis is of some work done while designing the system including the analysis of the demand of the system detailed design system design and system and explains some common functions and characteristics of the system so that the user use KeyKey words words VCVC ActiveXActiveX MultimediaMultimedia SystemSystem DesignDesign 3 1 引言 多媒体技术的概念和应用出现于 20 世纪 80 年代初期 经过 十余年的发展 随着计算机科学网络的普及和多媒体技术的发展 已成为计算机领域发展的热点技术 针对目前各种媒体格式 如 何简单方便的播放各类媒体已成为人们普遍关注的问题 而媒体 播放器的开发也变得十分重要 综合以上 我决定以 VC 为平台 C 为背景开发一款适合大众的小型多媒体播放器 1 1 MFC 简介 MFC Microsoft Foundation Classes 是一个微软公司提 供的类库 class libraries 以 C 类的形式封装了 Windows 的 API 并且包含一个应用程序框架 以减少应用程序开发人员 的工作量 其中包含的类包含大量 Windows 句柄封装类和很多 Windows 的内建控件和组件的封装类 MFC 是 Win API 与 C 的 结合 API 即微软提供的 Windows 下应用程序的编程语言接口 是 一种软件编程的规范 但不是一种程序开发语言本身 可以允 许用户使用各种各样的第三方 如我是一方 微软是一方 Borland 就是第三方 的编程语言来进行对 Windows 下应用程 序的开发 使这些被开发出来的应用程序能在Windows 下运行 这 种结合一方面让用户使用微软的专业C SDK 来进行 Windows 下应用程序的开发变得容易 因为 MFC 是对 API 的封 装 微软做了大量的工作 隐藏了好多程序开发人员在 Windows 下用 C 4 5 菜单控件设置 除去上述菜单控制之外 菜单中还包括音量控制 模式控制 和列表控制 音量控制 IDC LOWER 音量减小 IDC UPPER 音量增大 模式控制 IDC REPEAT 循环控制 IDC FULLSCREEN 全屏 列表控制 IDC OPENLIST 播放列表 4 64 6 程序设计的详细说明程序设计的详细说明 1 1 界面设置 界面设置 各个自定义类的声明 CButton 类 按钮类声明 CActiveMovie3 类 ActiveX 控件类声明 CDialog 类 对话框类声明 在主对话框的类定义中声明 public void MoveMovieWindow 界面初始化 在主对话框的初始化程序里调用该函数 具体定义请参 照程序中函数 BOOL isRepeat 循环控制标识 10 控制循环模式的标识 通过此标识识别系统状态 单曲 或重复 并在系统界面显示状态 2 2 打开文件函数设置 打开文件函数设置 由按钮的 BN CLICKED 消息函数控制 程序详见 void CMediaPlayerDlg OnOpen 打开文件 3 3 列表 列表函数函数设置设置 列表文件的程序主要写在按钮的 BN CLICKED 消息函数里 面 程序详见 void CMediaPlayerDlg OnAdd 添加列表 void CMediaPlayerDlg OnSavelist 保存列表 void CMediaPlayerDlg OnOpenlist 播放列表的打开与关闭 4 4 播放控制 播放控制函数设置函数设置 播放 void CMediaPlayerDlg OnPlay 暂停 void CMediaPlayerDlg OnPause 停止 void CMediaPlayerDlg OnStop 音量增大 void CMediaPlayerDlg OnUpper 音量减小 void CMediaPlayerDlg OnLower 循环 void CMediaPlayerDlg OnRepeat 循环控制 BOOL isRepeat 全屏 void CMediaPlayerDlg OnFullscreen 退出 BOOL CMediaPlayerApp InitInstance 5 5 列表控制 列表控制函数设置函数设置 添加文件 CButton IDC ADD 此函数同上述打开文 11 件 OnAdd 保存列表 CButton IDC SAVELIST 此函数同上 述保存文件列表 OnSavelist 列表的扩展 在 OnInitDialog 函数中添加如下代码 m list SetHorizontalExtent 1000 列表中的双击播放 LIST BOX 本身的 LBN DBLCLK 消 息函数 OnDblclkListP void CMediaPlayerDlg OnDblclkListP 列表的隐藏弹出 同上述列表函数的播放列表的打开 与关闭函数 OnOpenlist void CMediaPlayerDlg OnOpenlist 6 6 菜单控制函数设置 菜单控制函数设置 菜单是从按钮出来 而不是原来意义的直接添加在对话 框上 菜单按钮 void CMediaPlayerDlg OnMenu 音量控制 void CMediaPlayerDlg OnLower 音量减小 void CMediaPlayerDlg OnUpper 音量增大 模式控制 void CMediaPlayerDlg OnFullscreen 全屏 void CMediaPlayerDlg OnRepeat 单曲或重复 列表控制 void CMediaPlayerDlg OnOpenlist 12 5 编码实现 5 1 ActiveX 控件在播放器中应用 目前视频播放器很多 可以播放各种各样的文件和流 但大 多只支持一个文件或一个流播放 若要播放多个文件就需手工打 开多个播放器 在现实的应用中 为了实现多流播放 实际上是直接将媒体 流打包输入到计算机的通信接口上 由多个播放器进程进行播放 这样做只适应于播放无关联的媒体流 如多路视频监控 多人会 议系统等 而对于相关联的媒体流 目前市场上的视频播放器就不能实 现多个视频文件流的控制和同步 在对多流媒体同步播放技术研 究的基础上 通过对流媒体服务器的设置 进行了多流媒体播放 器的开发 多流媒体播放器可以接收多流媒体服务器的码流并对 其进行解码和控制 同时对相关流进行同步 改进了播放器的内 部结构和播放器的用户界面 将其移植成 ActiveX 控件后 通过 对 4 个媒体流的同步播放测试 证实用 ActiveX 控件设计的播放 器运行性能良好 ActiveX 是一种技术集合 利用 ActiveX 开发者几乎可以利 用任何熟悉的工具产生多媒体效果 交互式功能及复杂的应用程 序 其优点在于开放的跨平台支持 可以运行在 Macintosh Windows 和 UNIX 操作系统上 支持 Visual Basic Visual C Borland Delphi Borland C java and Java enabledtools 等各种工具 支持 HTML TCP IP Java COM 和其他工业标准 ActiveX 的技术包括用户能够在浏览器之中浏览非 HTML 文档 如 word 文档 能够被插入网页或任何称作控件容器库的应用 13 程序之中的对象 如按钮 直方图 可以在整个客户区域以框架 形式显示文档 能够定制来源于数据库或是一个在服务器上运行 的程序的网页内容 可以将处理过程从服务器方移至客户方 5 2 主要实现原理及程序 1 1 文件处理过程演示 文件处理过程演示 文件处理过程如图 5 1 所示 选 择 文 件 控制 控 制 选择文件 弹出 打开 文件对话框添加播放列表 OnPl ay 用 户 退出 播放 暂停 打开 停止 图 5 1 文件处理过程演示图 主要实现代码如下所示 void CMediaPlayerDlg OnOpen char szFileFilter 所有支持类型 mp3 wma dat wav avi mov rmvb mmm m id rmi mpeg Mp3 File mp3 mp3 Wma File wma wma Video File dat dat Wave File wav wav AVI File avi avi 14 Movie File mov mov Rmvb File rmvb rmvb Media File mmm mmm Mid File mid rmi mid rmi MPEG File mpeg mpeg All File 文件类型过滤 CFileDialog dlg TRUE NULL NULL OFN HIDEREADONLY szFileFilter if dlg DoModal IDOK CString PathName dlg GetPathName PathName MakeUpper m ActiveMovie SetFileName PathName m list AddString PathName OnPlay 2 2 主界面实现 主界面实现 主界面设计如图 5 2 所示 图 5 2 主界面设计对照图 15 根据上图设计主界面 主要实现代码如下 BOOL CMediaPlayerDlg OnInitDialog CDialog OnInitDialog ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu SetIcon m hIcon TRUE Set big icon SetIcon m hIcon FALSE Set small icon Volume m ActiveMovie GetVolume 652 CString str1 str1 Format T ld Volume SetDlgItemText IDC STATIC3 str1 SetWindowPos NULL 0 0 800 570 SWP NOMOVE m list SetHorizontalExtent 1000 CStdioFile fsp new CStdioFile list txt CFile modeRead CString str 16 while fsp ReadString str m list AddString str fsp Close delete fsp MoveMovieWindow return TRUE return TRUE unless you set the focus to a control 3 3 消息处理 消息处理 程序中各个按键及打开 保存 删除 添加等消息处理示意 如图 5 3 所示 消息队列 处理 默认窗口函数消息处理函数 返回 是 否 图 5 3 消息处理示意图 软件在运行中每个动作都要得到响应 也就是每个动作都会 17 有一个消息 通过对每个消息的处理才能保证软件正常的工作 也就是线程的控制代码如下 void CMediaPlayerDlg OnPlay TODO Add your control notification handler code here if p flag 0 m ActiveMovie SetFileName m pathname 播放列 表文件 else m ActiveMovie Run 播放文件 SetTimer 0 20 NULL 设置定时器 void CMediaPlayerDlg OnPause TODO Add your control notification handler code here p flag 1 m ActiveMovie Pause 暂停播放 void CMediaPlayerDlg OnStop TODO Add your control notification handler code here 18 p flag 0 m ActiveMovie Stop 停止播放文件 KillTimer 0 关掉定时器 void CMediaPlayerDlg OnCancel TODO Add extra cleanup here CDialog OnCancel void CMediaPlayerDlg OnLower j 0 if i 0 m n TODO Add your control notification handler code here Volume m ActiveMovie GetVolume if m 5 AfxMessageBox 音量最小了 i 1 else m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 19 m ActiveMovie Run Volume Volume 502 10 50 CString str str Format T ld Volume SetDlgItemText IDC STATIC3 str else AfxMessageBox 音量最小了 void CMediaPlayerDlg OnUpper i 0 if j 0 m n TODO Add your control notification handler code here Volume m ActiveMovie GetVolume if n 6 AfxMessageBox 音量最大了 j 1 n 0 else 20 m ActiveMovie Pause m ActiveMovie SetVolume Volume 100 m ActiveMovie Run Volume Volume 702 10 50 CString str str Format T ld Volume SetDlgItemText IDC STATIC3 str else AfxMessageBox 音量最大了 void CMediaPlayerDlg OnFullscreen TODO Add your control notification handler code here m ActiveMovie Pause m ActiveMovie SetFullScreenMode true m ActiveMovie SetMovieWindowSize SW SHOWMAXIMIZED m ActiveMovie Run void CMediaPlayerDlg OnRepeat TODO Add your control notification handler code here 21 if isRepeat isRepeat TRUE SetDlgItemText IDC STATIC2 模式 循环 else isRepeat FALSE SetDlgItemText IDC STATIC2 模式 单曲 void CMediaPlayerDlg OnTimer UINT nIDEvent TODO Add your message handler code here and or call default double CurrentPos m ActiveMovie GetCurrentPosition if CurrentPos 0 CDialog OnTimer nIDEvent void CMediaPlayerDlg MoveMovieWindow CRect rc1 rc2 rc3 得到 ActiveMovie 控件的大小 m ActiveMovie GetWindowRect rc1 22 保证对话框客户区的宽不小于 300 像素 高不小于 225 像素 if rc1 Width 300 rc1 Height 225 rc1 right rc1 left 300 rc1 bottom rc1 top 225 获得对话框的大小 GetWindowRect rc2 获得对话框客户区的大小 GetClientRect rc3 m ActiveMovie GetWindowRect rc1 GetClientRect rc3 使 ActiveMovie 控件在对话框的客户区居中 m ActiveMovie MoveWindow rc3 Width rc1 Width 2 23 rc3 Height rc1 Height 2 50 rc1 Width rc1 Height void CMediaPlayerDlg OnOpenlist TODO Add your control notification handler code here flag flag if flag SetWindowPos NULL 0 0 800 570 SWP NOMOVE else SetWindowPos NULL 0 0 1010 570 SWP NOMOVE void CMediaPlayerDlg OnAdd char szFileFilter 媒体文件 avi mp3 wma avi mp3 wma CFileDialog dlg true NULL NULL OFN HIDEREADONLY OFN ALLOWMULTISELECT OFN NOCHANGEDIR szFileFilter POSITION pos dlg GetStartPosition if dlg DoModal IDOK while pos NULL 24 m pathname dlg GetNextPathName pos m list AddString m pathname if r flag 1 OnSavelist void CMediaPlayerDlg OnDblclkListP CString str int index m list GetCurSel m list GetText index str m ActiveMovie SetFileName str OnPlay m pathname str void CMediaPlayerDlg OnSavelist CStdioFile file file Open list txt CFile modeCreate CFile modeReadWrite CFile typeText for int i 0 i m list GetCount i CString strtemp m list GetText i strtemp strtemp n 需要换行 file WriteString strtemp 25 file Close AfxMessageBox 保存成功 void CMediaPlayerDlg OnDel int index1 m list GetCurSel m list DeleteString index1 if r flag 1 OnSavelist void CMediaPlayerDlg OnRadio1 r flag 0 void CMediaPlayerDlg OnRadio2 r flag 1 void CMediaPlayerDlg OnOpenfile ShellExecute NULL T open T d MPlayer Debug list txt NULL NULL SW SHOW 26 void CMediaPlayerDlg OnSetfocusListP p flag 0 6 总结 通过对整个媒体播放器软件的设计 我不仅对播放器的开发 了有一定的了解 也认识了平常不常接触到的媒体类型及其发展 使我的编程能力了有了很大的提高 本软件实现在大多数的媒体 格式的播放 基本上 WindowsMediaPlayer 能播放的格式 本软 件都支持 还有其他一些格式 如 wma 格式 通过本次的设计 熟悉并深入了解了 MFC 对话框和 ActiveX 控件的一些知识和原理 使我本次的收获很大 编程能力也得到 了提高 虽然本软件看起来简单 但是在设计的过程中也遇到了不少 的困难 由最初的不知从何下手 到后来通过书籍 资料以及网 络编程者的经验之谈 在实践

温馨提示

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

评论

0/150

提交评论