当前位置:文档之家› 用VC++实现多媒体播放器

用VC++实现多媒体播放器

摘要目前常见的多媒体软件应该说各有特色,但是几乎每一个都存在着不如人意的地方。

我的课题是“基于VC++开发工具的媒体播放器软件设计”,首先是初步介绍一些当前的媒体及媒体播放器,然后是详细介绍一个由本人设计的多媒体播放器———mediaplayer。

该播放器是基于MFC集成开发环境,利用系统的MCI(media controller interface)命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑、支持各种视频格式等功能优势。

关键词媒体播放器;MCI;播放列表;音频;视频AbstractThe common multimedia software should have their characteristics, but almost each one there is no satisfactory manner. My topic is "based on VC + + development tools for media player software design", the first is an introduction to some of the current media and media player, then the detailed design of a multimedia player himself - mediaplayer. The player is based on MFC integrated development environment, using the system MCI (media controller interface) command interface to programming, is small,support multi-format playback, occupy less system resources to support the play list editing, support various video formats such as functional advantages.Keywordsmedia player; MCI; play list; audio; video目录一、引言1课题研究的目的和技术发展的现状1.1研究本课题的目的1.2技术应用的基本现状2论文完成的主要工作3本课题中的重点二、媒体格式简介.1什么是WMF SDK2 WMF SDK体系结构2.1 生成器结构2.2 读取器结构3 WMF SDK编程开发环境配置三、软件开发与设计.1操作方法2具体步骤四、系统测试1测试目的2测试环境3测试方法3.1白盒法3.2黑盒法4测试结果五、结束语参考文献基于VC++开发工具的媒体播放器软件设计一、引言多媒体技术的概念和应用出现于20世纪80年代初期,经过十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。

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公司的王牌产品,编程功能强大而赢得广大程序的偏爱。

多媒体技术已经在如下若干方面开展了有效的应用:①多媒体管理信息系统、展示系统;②多媒体电子出版物(Title);③计算机辅助教学、教育培训;④计算机艺术制作、设计;⑤计算机娱乐-游戏、双向电影;⑥协同工作。

有发下三大发展趋势:进一步完善计算机支持的协同工作环境;智能多媒体技术;把多媒体信息实时处理和压缩编码算法集成到CPU中。

2论文完成的主要工作根据学习研究,本媒体播放器的开发基于VC++MFC的对话框,利用Windows MCI(Media Control Interface)控件和VC++6.0自带的ActiveX控件――ActiveMovieControl Object来实现各类媒体格式的播放及程序界面处理。

首先确定要解决的问题是弄清楚MCI函数与命令消息的名称类型和功能;其次是通过分析媒体播放的具体过程,在打开媒体设备的过程中应用程序需要做哪些事情,以便在应用程序中加入对这些过程支持的代码;在对应用程序的流程有了大致的轮廓以后(最好画出流程图),在开始考虑程序框架的设计,应用程序外观的设计;最后也是最关键的就是编写实现播放媒体的代码将播放器的基本功能实现,紧接着就是程序的调试和完善3本课题中的重点本课题中的重点是对ActiveMovie控件的应用,Ac tiv eM ovie控件是微软公司推出的用于多媒休程序设计的控件它提供了非常完善的音频和视频媒体文件的回放功能,能支持多种文件格式,从最常见的WAV文件和AVI文件到使用MPEG压缩格式的VCD视频文件,都可以正常地进行播放。

控件能根据文件后缀进行自动判别设备类型,并完成相应的控制。

因此,若正在编写的应用程序需要提供多媒体支持,那么使用ActiveMovie 控件是一个很好的主意。

事实上,很多优秀的多媒体应用程序,其内部的多媒体回放就是利用ActiveMovie控件来实现只要精心地设计应用程序的用户界面,我们一样可以开发出功能齐全、外观漂亮、具有相当水准的多媒体播放器。

使用 A ctiveMovie控件开发多媒体应用程序可以大大提高多媒体开发效率,只要设置控件的Fil,.Name属性,确定该控件要打开的媒体文件名称,然后执行RUN方法就可以对该媒体文件进行播放;通过设置Selectio.End和SelectionSlart的值,可以实现播放某一段媒体流;还能用鼠标Click相应的按钮完成播放、停止、暂停、快进、快退等功能。

二、媒体格式简介.1什么是WMF SDKWMF SDK是微软Windows Media技术的重要组成部分,它基于COM技术,可以方便地开发具有高性能要求的多媒体应用程序。

对WMF SDK关键技术作了概括介绍,并给出了采用Visual C++编程语言开发视频播放器的软件实现过程。

WMF SDK采用了面向对象的设计,是一套完全基于COM组件模型的高级开发包。

它引入的生成器,读取器,器等对象屏蔽了ASF数据格式、传输控制等较为底层的流媒体技术实现细节,留下比较上层的编程接口给开发者使用。

2 WMF SDK体系结构Windows Media Format SDK 具有许多处理ASF 文件的功能,但其核心功能是读写文件。

2.1 生成器结构使用Windows Media Format SDK 构建的应用程序将源媒体样本传递给生成器。

生成器使用配置文件对象中指定的设置对文件进行编码。

配置文件对象定义已编码文件的格式,包括每个流的详细信息以及应如何处理流的信息。

大多数音频和视频流由一种Windows Media 编码解码器来处理。

但是,编码管理器首先用一种转换器来处理数据,为压缩做准备。

当样本可以放入文件时,先传递给多路复用器,多路复用器根据演示时间从所有流中隔行扫描样本并将数据打包。

多路复用器创建的位流被传送到一个接收器,接收器为最终目的地处理I/O,不管它是磁盘上的文件还是Internet 或其他网络广播。

2.2 读取器结构读取过程与数据写入过程基本上相同,不过顺序是相反的。

读取器连接到源,源可以是文件、网络连接或自定义源。

拆分器处理文件的数据部分,将数据分成单个流样本,然后将样本解压缩(如果启用了DRM 保护),并通过相应的Windows Media 编码解码器来处理。

默认情况下,读取器内部会自动选择合适的解码器对ASF流数据进行解压缩。

3 WMF SDK编程开发环境配置WMF SDK仅适合C/C++编程语言,开发平台可以是VC++6.0或Visual .本文介绍VC6.0的设置方法。

打开VC++6.0,选择菜单命令的Tools→Options,单击Directories,在Show directories for下拉菜单中选择Include files,然后将SDK的安装路径放在VC标准路径之前。

在开发应用程序项目时,对VC6.0 Debug版本还需要如下设置:选择菜单命令Project 中的settings,进入标签link,在Category下拉列表中选择General,把winmm.lib和wmvcore.lib文件添加到Object/library modules中,并选中Ignore all default libraries。

三、软件开发与设计1操作方法①用VC++6.0应用程序向导建立一个基于对话框的MFC程序,取名MediaPlayer,其它选项都基于默认设置。

②向对话框中添加控件,调整对话框布局。

③在Project菜单中选择Setting命令,选择Link选项卡,在Object/Library modules 输入winmm.lib,wmvcore.lib文件,这是编译使用MCI接口的多媒体程序所必须的。

④在编程时,要添加工程文件wmsdk.h。

wmsdk.h定义了SDK中的接口,常量,数据结构,枚举变量和GUID等。

⑤向该工程的各个成员函数添加代码。

主要有主程序类的初始化函数OnInitDialog(),功能按钮Open()(打开),OnPlay()(播放)、OnPause()(暂停)、OnStop()(停止)、和GetHeaderAttribute(),RetrieveAttributes()2具体步骤:①打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框(Dialog Based)的运用程序。

相关主题