基于VC++媒体播放器的设计与实现含毕业设计源文件.docx
《基于VC++媒体播放器的设计与实现含毕业设计源文件.docx》由会员分享,可在线阅读,更多相关《基于VC++媒体播放器的设计与实现含毕业设计源文件.docx(22页珍藏版)》请在冰豆网上搜索。
基于VC++媒体播放器的设计与实现含毕业设计源文件
摘要
目前常见的多媒体软件应该说各有特色,但是几乎每一个都存在着不如人意的地方。
我的课题是“基于VC++开发工具的媒体播放器软件设计”,首先是初步介绍一些当前的媒体及媒体播放器,然后是详细介绍一个由本人设计的多媒体播放器――cnplayer。
该播放器是基于MFC集成开发环境,利用系统的MCI(mediacontrollerinterface)命令接口来编程,具有体积小,支持的播放格式多、系统资源占用少、支持播放列表编辑、支持各种视频格式等功能优势,还实现了CD抓轨。
关键词:
媒体播放器;MCI;播放列表;音频;视频
Abstract
Therearedifferentcharacteristicamongthenormalmultimediaplayeratpresent,butthereareshortcomingforallofthesesoftwarenearly.Mycenteris"ASoftwareOfMediaPlayerDesignedbyVC++ProgramLanguage".Firstly,letmeintroducethosemediaformatsandplayersatpresent,thenthereisaparticularpresentationforthemediaplayerthatdesignedbymyself--cnplayer.ThisplayerisbasedonMFC,referringtoMCI(mediacontrollerinterface)fromsystem,havingmanygoodfunctionssuchaslittlesize,supportingmanykindsofformatofmedia,takinguplesssystemresource,supportinglistcontrolforplayingitemandcatchtrackofCD.
Keywords:
mediaplayer;MCI;playlist;audio;video
1绪论
多媒体技术的概念和应用出现于20世纪80年代初期,经过十余年的发展,随着计算机科学网络的普及和多媒体技术的发展,已成为计算机领域发展的热点技术,针对目前各种媒体格式,如何简单方便的播放各类媒体已成为人们普遍关注的问题,而媒体播放器的开发也变得十分重要。
1.1课题研究的目的和技术发展的现状
1.1.1研究本课题的目的
随着技术的发展,多媒体素材类型也增多,包括音频、视频、图像、动画等,由于音视频、图像等的信息容量大,受硬件条件限制,以往多媒体应用并不广泛,随着硬件技术的不断提高,多媒体技术已为各类人员广泛使用,开发多媒体课件、网络课程、网站、应用软件、管理项目等均需利用多媒体素材,因此开发制作这一播放器具有备现实意义,与其它多媒体播放器比较,这一多媒体播放器具有功能强大、占用空间小的特点,它与现有多媒体资源应用状况紧密结合,既具有很强的直观感,又不失一般性。
1.1.2技术应用的基本现状
Microsoft公司1998年推出了VisualC++6.0,它是支持Win32平台应用程序(application)、服务(service)和控件(control)开发的可视化编程的集成环境。
与VC++5.0的最大不同之处是它的帮助功能更强大,MSDN(MicrosoftDeveloperNetworking)为包括VC++6.0在内的所有微软的程序产品提供在线帮助;另外,类的对象的可用成员函数、成员变量及函数的参数类型与个数都能动态显示在屏幕上,用户无须记住那些复杂而又枯燥乏味的函数名及复杂的参数,这无疑使得用VC++编程更加容易。
所以VC++6.0可谓是Microsoft公司的王牌产品,编程功能强大而赢得广大程序的偏爱。
多媒体技术已经在如下若干方面开展了有效的应用:
①多媒体管理信息系统、展示系统;②多媒体电子出版物(Title);③计算机辅助教学、教育培训;④计算机艺术制作、设计;⑤计算机娱乐-游戏、双向电影;⑥协同工作。
有发下三大发展趋势:
进一步完善计算机支持的协同工作环境;智能多媒体技术;把多媒体信息实时处理和压缩编码算法集成到CPU中。
1.2论文完成的主要工作与课题研究的难点所在
针对如上所述的研究方向,本课题“基于VC++开发工具的媒体播放器软件设计”的主要任务是深入理解各种媒体格式,开发出适用的播放器软件。
因此应解决的主要问题是如何把你了解的多媒体和VC知识应用到实际编程当中去及编制的应用软件的可用性、易用性、健壮性。
1.2.1论文完成的主要工作
根据学习研究,本媒体播放器的开发基于VC++ MFC的对话框,利用WindowsMCI(MediaControlInterface)控件和VC++6.0自带的ActiveX控件――ActiveMovieControlObject来实现各类媒体格式的播放及程序界面处理。
首先确定要解决的问题是弄清楚MCI函数与命令消息的名称类型和功能;其次是通过分析媒体播放的具体过程,在打开媒体设备的过程中应用程序需要做哪些事情,以便在应用程序中加入对这些过程支持的代码;在对应用程序的流程有了大致的轮廓以后(最好画出流程图),在开始考虑程序框架的设计,应用程序外观的设计;最后也是最关键的就是编写实现播放媒体的代码将播放器的基本功能实现,紧接着就是程序的调试和完善。
1.2.2本课题的研究难点
本课题的难点如下:
1、对于VC++集成开发工具的熟练使用,特别是MFC的使用,重点放在界面设计;
2、各类媒体设备的播放函数及相应的命令;
3、播放列表的生成及其操作(删除而不影响其他文件的播放等);
4、CD音轨的抓并转换格式。
以上各点构成了本软件的难点,在克难过程中,我的分析问题解决问题的能力有了很大的进步,经过努力,一个占用空间小、简单实用的小型媒体播放器终于完成了。
我开发的媒体播放器支持所有mediaplayer支持的媒体格式的播放及其他AVI视频的播放,实现了对播放列表的控制,CD抓轨等功能。
2媒体格式简介
2.1什么是媒体?
2.1.1媒体
一般来说,媒体(medium,复数形式为media)是一种信息发布和表现的方法,如正文、图形、语音、音乐等,可按不同的标准分类。
CCITT将媒体定义为以下五种:
①感觉媒体(Perceptionmedium):
能直接作用于人的感官,使人产生感觉的媒体。
如语言、音乐、图形、活动图像、文本等。
我们所讲的“多媒体”意义上的媒体,主要是指这一类媒体。
感知媒体帮助人们来感知环境。
要解决的问题是:
人在计算机环境中如何感知信息?
就目前而言,人类主要靠视觉和听觉来感知环境的信息,触觉作为一种感知方式也慢慢引入到计算机系统中。
②表示媒体(Representationmedium):
为传输感觉而研究出来的中间手段,以便更有效地将感觉从一地传往另一地。
表示媒体的特征用计算机内部表示来刻画。
要解决的主要问题是:
计算机信息如何编码?
例子有:
文本字符用ASCⅡ或EBCDIC码表示。
图像可以用JPEG格式BMP格式编码。
组合音频/视频序列可以用不同的TV标准格式(PAL、SECAM等)编码。
③表现媒体(Perceptionmedium):
用于信息传输中电信号和感觉媒体之间转换所用的媒体,意指信息输入/输出的工具和设备。
要解决的问题是:
信息通过何种媒体输入到计算机中或从计算机中输出?
输出媒体的例子有屏幕、纸和喇叭,而输入媒体的例子有键盘、鼠标、摄像机和麦克风等。
④存储媒体(Storagemedium):
用于存储表示媒体的载体。
数据存储并不局限于计算机的部件,因此,纸也是一种存储媒体。
要解决的问题是:
信息存储在什么地方?
存储媒体的例子有:
缩微胶片、磁盘等。
⑤传输媒体(Transmissionmedium):
用来将表示媒体从一地传输到另一地的物理实体。
要解决的问题是,在什么上面传输信息?
目前主要使用网络来进行信息传输,网络介质有同轴电缆、光纤等,无线方式进行通信正变得越来越广泛。
2.1.2多媒体
从字面上看,所谓多媒体multimedia,就是多种媒体的综合,多媒体处理技术涉及到以上五种媒体形式。
但这样的理解没有接触到多媒体概念的特定的内涵,是远远不够的。
为了辨析多媒体的含义,我们给出两个多媒体定义进行比较:
①多媒体是指这样的一个计算机系统:
交互式综合处理多种媒体信息-文本、图形、图像和声音等,使多种信息建立逻辑连接,集成为一个具有交互性的系统。
(Lippincatt,Byte1990年)
②多媒体是下面两种以上媒体组成的结合体:
文本、图形、动画、图像、视频、声音等。
(IBM,multimediaFoundation,1990年)
显然,定义②是有问题的,因为按这个定义,电视节目就可以看作是多媒体。
这是因为,这个定义没有体现出多媒体计算机技术的关键特性。
定义①较好地体现了这一点:
即多媒体的含义除多种媒体外,还包括集成性和交互性两个重要的特性。
2.2浅议数字音、视频格式
首先,我们来明确一下数字音、视频的概念,它是指一个用来表示声音强弱的数据序列,由模拟声音经抽样、量化和编码后得到的。
简单地说,数字音、视频的编码方式就是数字音、视频格式,我们所使用的不同的数字音、视频设备一般都对应着不同的音频文件格式。
常见的数字音、视频格式有:
2.2.1WAV格式
WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音、视频格式,被Windows平台及其应用程序广泛支持。
WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播。
2.2.2MIDI格式
MIDI是MusicalInstrumentDigitalInterface的缩写,又称作乐器数字接口,是数字音乐/电子合成乐器的统一国际标准。
它定义了计算机音乐程序、数字合成器及其它电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可以模拟多种乐器的声音。
MIDI文件就是MIDI格式的文件,在MIDI文件中存储的是一些指令。
把这些指令发送给声卡,由声卡按照指令将声音合成出来。
2.2.3CD格式
大家都很熟悉CD这种音乐格式了,扩展名CDA,其取样频率为44.1kHz,16位量化位数。
CD存储采用了音轨的形式,又叫“红皮书”格式,记录的是波形流,是一种近似无损的格式。
2.2.4MP3格式
MP3全称是MPEG-1AudioLayer3,它在1992年合并至MPEG规范中。
MP3能够以高音质、低采样率对数字音、视频文件进行压缩。
换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。
2.2.5WAV格式
WMA(WindowsMediaAudio)是微软在互联网音频、视频领域的力作。
WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:
18。
此外,WMA还可以通过DRM(DigitalRightsManagement)方案加入防止拷贝,或者加入限制播放时间和播放次数,甚至是播放机器的限制,可有力地防止盗版。
2.2.6MP4格式
MP4采用的是美国电话电报公司(AT&T)所研发的以“知觉编码”为关键技术的a2b音乐压缩技术,由美国网络技术公司(GMO)及RIAA联合公布的一种新的音乐格式。
MP4在文件中采用了保护版权的编码技术,只有特定的用户才可以播放,有效地保证了音乐版权的合法性。
另外MP4的压缩比达到了1:
15,体积较MP3更小,但音质却没有下降。
不过因为只有特定的用户才能播放这种文件,因此其流传与MP3相比差距甚远。
2.2.7QuickTime格式
QuickTime是苹果公司于1991年推出的一种数字流媒体,它面向视频编辑、Web网站创建和媒体技术平台,QuickTime支持几乎所有主流的个人计算平台,可以通过互联网提供实时的数字化信息流、工作流与文件回放功能。
Apple公司的QuickTime电影文件现已成为数字媒体领域的工业标准。
QuickTime电影文件格式定义了存储数字媒体内容的标准方法,使用这种文件格式不仅可以存储单个的媒体内容(如视频帧或音频采样),而且能保存对该媒体作品的完整描述;QuickTime文件格式被设计用来适应为数字化媒体一同工作需要存储的各种数据。
因为这种文件格式能用来描述几乎所有的媒体结构,所以它是应用程序间(不管运行平台如何)交换数据的理想格式。
QuickTime文件格式中媒体描述和媒体数据是分开存储的,媒体描述或元数据(Meta-Data)叫做电影(Movie),包含轨道数目、视频压缩格式和时间信息。
同时Movie包含媒体数据存储区域的索引。
媒体数据是所有的采样数据,如视频帧和音频采样,媒体数据可以与QuickTimeMovie存储在同一个文件中,也可以存储在一个单独的文件或者在几个文件中。
2.2.8DVD格式
DVDAudio是新一代的数字音、视频格式,与DVDVideo尺寸以及容量相同,为音乐格式的DVD光碟,取样频率为“48kHz/96kHz/192kHz”和“44.1kHz/88.2kHz/176.4kHz”可选择,量化位数可以为16、20或24比特,它们之间可自由地进行组合。
低采样率的192kHz、176.4kHz虽然是2声道重播专用,但它最多可收录到6声道。
而以2声道192kHz/24b或6声道96kHz/24b收录声音,可容纳74分钟以上的录音,动态范围达144dB,整体效果出类拔萃。
2.2.9RealAudio格式
RealAudio是由RealNetworks公司推出的一种文件格式,最大的特点就是可以实时传输音频信息,尤其是在网速较慢的情况下,仍然可以较为流畅地传送数据,因此RealAudio主要适用于网络上的在线播放。
现在的RealAudio文件格式主要有RA(RealAudio)、RM(RealMedia,RealAudioG2)、RMX(RealAudioSecured)等三种,这些文件的共同性在于随着网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较宽敞的听众获得较好的音质。
2.2.10AIFF格式
AIFF(.AIF)是苹果公司开发的声音文件格式,被Macintosh平台和应用程序所支持。
2.2.11 ASF格式
Microsoft公司的WindowsMedia的核心是ASF(AdvancedStreamFormat)。
微软将ASF定义为同步媒体的统一容器文件格式。
ASF是一种数据格式,音频、视频、图像以及控制命令脚本等多媒体信息通过这种格式以网络数据包的形式传输,实现流式多媒体内容发布。
ASF的最大优点是体积小,适合网络传输,用户可以将图形、声音和动画数据组合成一个ASF格式的文件,不仅可以将其他格式的视频和音频转换为ASF格式,而且用户还可以通过声卡和视频捕获卡将诸如传声器、录像机等外设的数据保存为ASF格式。
另外,ASF格式的视频中可以带有命令代码,用户指定在到达视频或音频的某个时间后触发某个事件或操作。
数字音、视频给我们的生活带来了前所未有的变化。
它以音质优秀、传播无损耗、可进行多种编辑和转换而成为主流,并且应用于各个方面。
例如我们常使用到的音响设备、IP电话、卫星电话、数字卫星电视以及专业录音、制作等。
展望未来,数字音、视频将会应用于更多的领域,而且会拥有更清晰、更真实的音质、更小巧的体积和更方便的传输和转换功能。
2.3常见播放器
2.3.1RealPlayer
RealNetworks推出的RealPlayer是目前最受欢迎的网络流媒体播放器,它几乎支持所有的媒体文件格式。
除了RealNetworks自己推出的流媒体格式ram、rmm、ra、rm、rp、rt外,还支持SMIL、SWF、MP3、WMA、AVI、MPEG、JPEG、GIF及PNG等格式,但不支持QuickTime的文件格式。
RealOnePlayer是RealNetworks公司最新推出的一种新型音-视频综合播放系统,以取代该公司现有的3种主打产品,即RealPlayer、RealJukebox和GoldPass。
RealOnePlayer的一大特点是多层画面功能,即当一个屏幕播放影碟或歌曲的时候,旁边有一个侧屏幕提供有关影碟或歌曲的信息或广告,可以将丰富多彩的Web页面、生动传神的画面及声音、相关背景的文字整合在同一个画面上,使用户得到一个完整的声、视、讯信息。
2.3.2WindowsPlayer
WindowsMediaPlayer是一个基于DirectShow体系结构的多媒体播放器。
微软借助自己在操作系统上的优势,将其作为操作系统默认的媒体播放器,目前最新的版本是11.0。
它几乎支持Windows下的所有媒体文件格式,包括CD音频曲目文件、ASF、MPEG-1、MPEG-2、WAV、AVI、MIDI、VOD、AU、MP3等,同时可以播放QuickTime文件。
2.3.3QuickTimePlayer
QuickTimePlayer是Apple公司的媒体播放器,现已推出了QuickTime7.0版,还有Windows版和Mac版,其特点是和Internet紧密结合,安装是在网上进行的。
QuickTimePlayer能够直接播放的格式有QuickTime电影、AVI、AIFF音频、SGI图像、MacromediaFlash等。
此外,QuickTimePlayer还能够输入各种格式的音频、视频和图像媒体文件,并能转换输出为其他格式。
QuickTimePlayer还支持基于HTTP、RTP、RTSP、FTP流格式的在线音频和视频。
3MCI命令接口编程
WindowsMCI(mediacontrolinterface)是控制多媒体设备的高层、通用的命令接口。
MCI可控制所有Windows能驱动的多媒体设备,包括CD音频(CD Audio)、数字视频、动画、数字化波形声音、MIDI音序器、录像机及影碟机等。
MCI包含在Windows系统的MMSYSTEM.DLL动态链接库中,有以协调多媒体事件和MCI设备驱动程序之间的通信。
一些MCI设备驱动程序,如影碟机设备驱动程序,可以直接控制目标设备;而另外一些MCI设备驱动程序,如Wave和MIDI设备驱动程序,可通过MMSYSTEM中的函数,间接控制目标设备;还有一些MCI设备驱动程序则提供与其他Windows动态链接库连接的高层接口。
3.1 MCI设备
使用MCI的应用程序通过指定MCI的设备来区分MCI设备,设备类型说明了设备的物理类型。
表1表出了可能用到的MCI设备类型。
表3-1 MCI设备类型
MCI设备
说 明
Cdaudio
激光唱机
Waveaudio
数字化波形声音设备
Sequencer
MIDI音序器
Overlay
视频叠加设备(窗口中的模拟视频)
Dat
数字化磁带音频播放机
Digitalvideo
窗口中的数字视频
Scanner
图像扫描仪
Vcr
磁带录像机或播放机
Videldisc
影碟机
Mmmovie
多媒体影片播放器
Other
示定义的MCI设备
3.2 MCI函数与命令
Microsoft提供的MMSYSTEM.H文件中定义了调用了MCI功能的数据类型和函数原型,在使用MCI功能的任何源模块中都应包含该文件。
3.2.1 MCI命令
应用程序能过MCI设备发送命令(命令消息或命令字符串)来控制MCI设备,MCI命令可以分为4类,如下所术。
1)系统命令:
直接由MCI解释并由系统处理,是不传送到MCI设备的命令。
2)通用命令:
所有MCI设备都支持的MCI命令。
3)可选命令:
MCI设备可选择使用的MCI命令。
4)专用命令:
针对某类MCI设备或集合的专有MCI命令。
MCI定义了两种接口方式,即命令消息方式和命令字符串方式。
相应地,MCI命令可分为命令消息和命令字符串。
主要的MCI命令及分类如表2所示,这些命令可能具有其相应的扩展形式。
表3-2MCI命令列表
MCI命令消息
MCI命令字符串
MCI命令说明
MCI命令类型
MCI_SYSINFO
SYSINFO
返回有关MCI设备的停息
系
统
命
令
MCI_BREAK
BREAK
为一个指定的MCI设备设置一个终止键
MCI_SOUND
SOUND
播放一段Windows指定的系统声音
MCI_CLOSE
CLOSE
关闭一个MCI
设备
通
用
命
令
MCI_GETDEVCAPS
GETDEVCAPS
获得一个MCI设备的性能参数
MCI_INFO
INFO
从一个MCI设备得到有关的信息
MCI_OPEN
OPEN
初始化一个MCI设备
MCI_STATUS
STATUS
从一个MCI设备返回有关的状态信息
MCI_LOAD
LOAD
从一个磁盘文件中加载数据
可
选
命
令
MCI_PAUSE
PAUSE
暂停播放数据
MCI_PLAY
PLAY
开始播放数据
MCI_RECORD
RECORD
开始记录数据
MCI_RESUME
RESUME
重新开始播放或记录
MCI_SAVE
SAVE
将数据存储到磁盘文件中
MCI_SEEK
SEEK
向前或向后检索
MCI_SET
SET
设置设备信息
MCI_STOP
STOP
停止播放或记录
MCI命令都可以带两个标志命令来控制命令的方式,即“wait”和“notify”。
它们在命令消息和命令字符串接口的形式和意思如表3所示。
表3-3 MCI标志命令
命令消息
命令字符串
功能
MCI_WAIT
wait
通知MCI设备等,MCI命令执行完后,才能将控制权还给应用程序
MCI_NOTIFY
notify
通知MCI设备等,立刻将控制权交给应用程序,但当命令执行完后,向应用程序发送MM_MCINOTIFY消息
所有MCI函数都以mci为前缀。
对应于MCI命令消息和命令字符串接口方式,MCI函数也分为两类,即命令消息函数和命令字符串函数。
在MMSYSTEM.H中定义了这些函数的原型。
MCI函数如表4所示。
表3-4 MCI函数
函数名
功能
类型
mciSendCommand
发送命令消息
命令消息接口函数
mciGetDeviceID
获取MCI设备的ID
mciSetYieldProc
设定一个回调函数,在结束带wait标志的命令时调用
mciGetYieldProc
获取当前的回调函数
mciSendString
发送命令字符串
命令字符串接口函数
mciGetErrorString
获取当前MCI错误的字符串描述
公用函数
3.2.2 MCI命令消息接