基于DirectShow媒体播放器系统毕业论文.docx

上传人:b****7 文档编号:11158567 上传时间:2023-02-25 格式:DOCX 页数:46 大小:775.87KB
下载 相关 举报
基于DirectShow媒体播放器系统毕业论文.docx_第1页
第1页 / 共46页
基于DirectShow媒体播放器系统毕业论文.docx_第2页
第2页 / 共46页
基于DirectShow媒体播放器系统毕业论文.docx_第3页
第3页 / 共46页
基于DirectShow媒体播放器系统毕业论文.docx_第4页
第4页 / 共46页
基于DirectShow媒体播放器系统毕业论文.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

基于DirectShow媒体播放器系统毕业论文.docx

《基于DirectShow媒体播放器系统毕业论文.docx》由会员分享,可在线阅读,更多相关《基于DirectShow媒体播放器系统毕业论文.docx(46页珍藏版)》请在冰豆网上搜索。

基于DirectShow媒体播放器系统毕业论文.docx

基于DirectShow媒体播放器系统毕业论文

摘要

随着数字音视频处理、数字信息存储技术的不断发展,基于数字编解码的多媒体应用已经越来越深入到人们的日常生活中,而如何高效处理声音、视频数据以及支持媒体格式则成为主要的问题。

DirectShowSDK是微软公司提供的一套在Windows平台上进行媒体处理的开发包,它支持高品质的数码视频、高保真的音频及其它特殊效果,广泛应用于流媒体播放器的开发、多媒体流的高质量捕捉和回放、视频点播技术等。

论文概括性的阐述了DirectShow的体系结构和工作原理,以及应用DirectShow开发流媒体播放器的具体过程。

重点介绍了构建流媒体播放器的关键技术——智能连接。

通过对系统的需求分析,得到了基于DirectShow媒体播放系统结构,实现了对常见媒体格式的支持,完成了基于DirectShow媒体播放器系统,并给出了关键代码。

基于COM(ComponentObjectModel)组件规范的DirectShow,简化了流媒体应用系统的开发,缩短了开发周期,提高了系统的可扩展性和通用性。

熟悉这些基本知识对于DirectShow应用的开发者都会有所帮助,而COM组件技术在从软件复用的角度看,定会有长足的使用价值,这项技术必将在今后有更广泛的应用。

关键词:

DirectShow;智能连接;COM;流媒体

Abstract

Asdigitalaudioandvideoprocessing,digitaldatastoragetechnologycontinuestodevelop,basedondigitalencodinganddecodingofmultimediaapplicationshasbecomeincreasinglypenetratedintopeople'sdailylives,andhowtohandlevoice,video,data,andsupportmoremediaformatswillbecomeamajorproblem.MicrosoftDirectShowSDKisasetofavailablemediaprocessingontheWindowsplatform,thedevelopmentpackage,whichsupportshighqualitydigitalvideo,high-fidelityaudio,andotherspecialeffects,widelyusedinthedevelopmentofstreamingmediaplayer,multimediastreaminghigh-qualitycaptureandplayback,videoondemandtechnology.

PaperdescribesthegeneralCOM(ComponentObjectModel)technology-basedDirectShowarchitectureandworkingprinciple,describeshowtouseDirectShowstreamingmediaplayerdevelopedaspecificprocess.Describesthestreamingmediaplayerbuiltkeytechnologies:

intelligentconnection.RequirementsanalysisthroughsystemwasbasedonDirectShowstreamingmediasystemarchitecture,intelligentconnectionmethodtoachieveamediaplayeronthecommonmediaformats.ImplementedbasedonDirectShowstreamingmediaplayersystem,andgivesthekeytoachievingDirectShowcode.

BasedonCOM(ComponentObjectModel)DirectShowcomponentspecificationsimplifiesthedevelopmentofstreamingmediaapplicationsandshortenthedevelopmentcycle,improvethesystemscalabilityandversatility.FamiliarwiththebasicknowledgeofapplicationdevelopmentforDirectShowdeveloperswillbehelpful,whiletheCOMcomponenttechnologyfromtheperspectiveofsoftwarereuse,therewillbeconsiderablevalueinuse.Thistechnologywillinthefuturemorewidelyused.

Keywords:

DirectShow;intelligentconnection;COM;streamingmedia

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

目录

AbstractII

1.引言1

1.1研究的背景与意义1

1.2系统基本达到的目标2

1.3论文的主要内容及工作安排2

2.相关开发技术及平台简介3

2.1MicrosoftVisualC++6.0概述3

2.1.1MicrosoftVisualC++6.0特点3

2.2DirectXSDK9.03

2.2.1DirectXSDK9.0体系结构的特点4

2.2.2GraphEdit测试4

2.2.4DirectXSDK9.0支持平台4

3.DirectShow基本原理5

3.1DirectShow的体系结构5

3.1.1COM(ComponentObjectModel)组件6

3.1.2Filter概述以及连接7

3.1.3过滤器图(FilterGraph)8

3.1.4过滤器图管理器(FilterGraphManager)9

3.1.5过滤器图的数据传送10

4.媒体播放器的设计11

4.1播放器主要功能设计11

4.2播放器过滤器结构设计11

4.3缓存区设置12

4.4DirectShow智能连接13

4.4.1为什么采用智能连接14

4.4.2智能连接原理15

5.媒体播放器的实现17

5.1DirectShow中接口17

5.2基于DirectShow播放器的三个步骤17

5.2.1初始化COM库18

5.2.2创建过滤器图管理器18

5.2.3RenderFile构建过滤器图原理19

5.3智能连接的实现20

5.4构建获取网络数据的SourceFilter21

5.5控制功能实现23

5.5.1定位24

5.5.2暂停、停止实现24

5.5.3全屏实现25

5.5.4截图功能实现26

6.播放器运行实例及结论28

6.1系统界面展示28

6.1.1播放器的主题界面28

6.2系统运行结论31

结束语32

致谢33

参考文献34

 

1.引言

随着信息技术的发展,流媒体播放器迎来新的挑战。

在流媒体应用技术中,对多媒体大量的数据传输、高效的数据处理、音视频流的同步、媒体流的格式转换,一直是需要解决的主要问题,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。

而选择一种合适的应用方案,将事半功倍。

DirectShow正是为了适应以上的挑战而设计的多媒体开发工具。

Microsoft设计它的意图就是为了简化多媒体应用程序的开发,使开发者不必考虑复杂的数据流格式,终端设备以及音视频同步的问题。

运用DirectShow,我们可以很方便地从支持WDM(Win32DriverModel)驱动模型的采集卡上捕获数据,并且进行相应的后期处理,如将数据存储到文件中或者通过网络发送。

1.1研究的背景与意义

目前DirectShow技术是建立在DirectX的DirectDraw和DirectSound的基础之上的,它使得多媒体数据的回放变得简单,提供了高质量的多媒体流的录制和播放,支持各种媒体格式,包括ASF(AdvancedSystemsFormat)、MPEG(MotionPictureExpertsGroup)、AVI(AudioVideoInterleaved)和WAV声音文件等几乎所有当前流行的媒体格式。

运用DirectShow,我们可以很方便地从支持WDM(Win32DriverModel)驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。

Microsoft通过DirectShow给多媒体程序开发员提供了标准的、统一的、高效的API接口。

DirectShow是基于COM(ComponentObjectModel)组件技术的流媒体开发工具,而COM组件的调用协议是二进制代码级的协议(语言无关的协议),因此不同的对象可以有不同的接口,对于日后DirectShow开发的程序存在的兼容问题,提供良好的解决方案。

它也为需要定制解决方案的应用提供底层流的控制结构,将应用与复杂的数据传输、硬件差异和同步隔离出来。

DirectShow中智能连接机制开发的视频播放器,使开发人员无需再为冗余的代码耗费过多的精力,大大简化了多媒体程序的设计。

而基于组件技术编写,有利于提高系统的扩展性和重用性。

同时DirectShow本身具有开发性,允许开发者实现自己的过滤器,这使得基于DirectShow的应用程序可以充分满足不同用户的需求。

在未来几年中,DirectShow技术的发展前景将是非常广阔的。

1.2系统基本达到的目标

根据对媒体播放器的分析得到系统的功能,主要完成对播放器的控制界面的基本开发(播放、暂停、上下首、音量控制),支持常见音乐格式的播放(支持MP3、WMA),支持常见视频格式的播放(如AVI、RMVB等),对于音乐播放,支持删除、清空播放列表文件操作。

支持播放模式的选择(单曲循环/全部循环),支持换肤,控制播放进度。

1.3论文的主要内容及工作安排

论文阐述了基于DirectShow的视频播放程序开发的具体过程,如何运用DirectShow提供的COM(ComponentObjectModel)组件技术和FilterGraphManager的智能连接机制对多媒体应用程序的开发。

论文的各章内容安排如下:

第一章:

引言,对流媒体播放器系统的背景作简单介绍,分析了基于DirectShow组件制作的播放器研究的意义与特点,并对DirectShow技术的应用发展进行总结。

最后介绍了本文的研究内容及论文组织以及系统达到的基本目标。

第二章:

开发技术简介,介绍了系统所使用的VisualC++6.0集成开发环境和DirectXSDK9.0开发包的结构特点以及所支持的平台。

第三章:

DirectShow基本原理,分析了DirectShow的体系结构,介绍各个组件的功能特点。

第四章:

基于DirectShow媒体播放器的设计,介绍了媒体播放器所应具备的功能和效果,对播放器的功能和结构进行设计,并对本文采用的关键技术智能连接的介绍。

第五章:

基于DirectShow的媒体播放器的实现,根据模块功能设计的要求,对每一部分进行实现,并列出部分关键代码。

第六章:

播放器运行实例及结论。

演示系统运行后的界面,包括打开文件、截图、声频调控等重点部分,并对播放器系统的存在的不足之处进行总结。

第七章:

结束语,全面总结了DirectShow的组件技术的优势,并对定制组件开发技术了的未来发展趋势进行了展望。

2.相关开发技术及平台简介

本系统是基于MicrosoftVisualC++6.0平台,采用DirectShow技术开发的媒体播放器。

目前DirectShow技术包含在DirectXSDK中,本文采用的是DirectXSDK9.0。

由于DirectShow是微软推出的一套基于COM组件的开发包,因此用它所编写的应用程序对编译环境有一定的特殊要求,需要首先对现有的编译环境进行重新配置。

在系统总体分析和功能模块分析之前,先对VisualC++开发环境以及DirectShow开发工具进行介绍,将系统开发中所用到的关键技术一一阐明。

2.1MicrosoftVisualC++6.0概述

MicrosoftVisualC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。

MFC中封装了大部分WindowsAPI函数和Windows控件,它包含的功能涉及到整个Windows操作系统。

MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。

另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。

因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

2.1.1MicrosoftVisualC++6.0特点

MicrosoftVisualC++以拥有“语法高亮”和自动编译功能以及高级纠错功能而著称。

比如,它允许用户进行远程调试,单步执行等,还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。

其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。

这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。

2.2DirectXSDK9.0

DirectX是Microsoft公司为游戏和其他高性能多媒体应用所提供的一套底层应用程序编程接口,这些接口包括对二维和三维图形,声效和音乐,输入设备以及多玩家网络游戏等的支持。

DirectShow是微软公司在ActiveMovie和VideoforWindows的基础上推出的新一代基于COM的流媒体处理的开发包,与DirectX开发包一起发布。

2.2.1DirectXSDK9.0体系结构的特点

DirectX是一项卓越的技术。

微软将DirectX定义为“硬件设备无关性”,即DirectX可以提供与设备无关的方法,从而提高使用设备的性能。

DirectX为了最大限度提高效率而允许用户直接访问硬件,如允许用户直接读写显存。

因此DirectShow也同样具有快速的优势。

DirectX为应用程序开发人员和硬件厂商之间的关系“解耦”,通过使用DirectX所提供的接口,开发人员可以无需关心硬件的具体执行细节而进行开发。

除此之外,DirectX还采用了组件对象模型(COM)标准,因此不同的对象可以有不同的版本的接口,这使得DirectX开发的程序在未来也能得到完全的兼容和支持。

2.2.2GraphEdit测试

在DirectX的开发包中,为DirectShow提供了一个调试工具GraphEdit。

在GraphEdit中可以很方便的设计出过滤器图,验证过滤器图的可行性,也可在其中测试自己实现的过滤器,快速测试建立的FilterGraph是否达到预期的效果。

用GraphEdit显示应用程序中构建的FilterGraph,方便进行程序调试以及各种音视频处理,利用该工具给程序开发带来极大便利。

通过GraphEdit可以查看到系统中所有安装的Filter注册信息。

Filter的注册信息通常包括两部分:

COM服务器信息和Filter描述信息。

前者是必需的,它表明了Filter是一个COM组件;后者不是必需的,不注册也不会影响Filter功能的实现。

使用GraphEdit,还可以播放媒体文件。

在用GraphEdit显示应用程序中构建的FilterGraph之前,应用程序必须把它创建的FilterGraph进行注册。

2.2.4DirectXSDK9.0支持平台

DirectShow支持Windows9X、Windows2000、WindowsMe和WindowsXP。

3.DirectShow基本原理

DirectShow技术是建立在DirectX的DirectDraw和DirectSound的基础之上的,它通过DirectDraw对显卡进行控制以显示视频,通过DirectSound对声卡进行控制以播放声音。

DirectShow为多媒体流的捕捉和回放提供了强有力的支持。

与传统技术的制作的媒体播放器相比,DirectShow具有的特点是语法更简单,数据处理的高效性,简化了基于Windows平台的数字媒体的应用开发,它提供了高质量的多媒体流的录制和播放,支持各种媒体格式,它为需要定制应用解决方案提供底层流控制结构,将应用与复杂的数据传输、硬件差异和同步隔离开来,用户也可以创建自己的DirectShow组件以支持新的媒体格式。

3.1DirectShow的体系结构

DirectShow系统结构中的核心部分是过滤器图,它由过滤器图管理器(FilterGraphManager,简称FGM)进行管理。

它是由可组装的模块组成的一个模块系统,这种模块称为过滤器(Filter),在过滤器图中进行配置组装。

过滤器的组装和其中的数据流动是由过滤器图管理器来控制的。

如图3.1所示,图中央最大一块即是DirectShow系统,虚线以下是Ring0特权级别的硬件设备,虚线以上是Ring3特权级别的应用层。

DirectShow系统位于应用层中。

应用程序按照一定意图建立起相应的过滤器图(FilterGraph),它使用一种叫过滤器图管理器(FilterGraphManager)的模型来管理整个数据流的处理过程。

参与数据处理的各个功能模块叫做过滤器(Filter),各个过滤器(Filter)在过滤器图(FilterGraph)中按一定的顺序连接成一条“流水线”协同工作。

DirectShow能在FilterGraph运行的时候接收到各种事件,并通过消息的方式发送到我们的应用程序。

这样就实现了应用程序与DirectShow系统之间的交互。

如图3.1所示,应用程序有3种方式和过滤器图管理器(FilterGraphmanager)进行通信:

通过ActiveMovie控制、媒体控制接口和组件对象模型(COM)接口,而COM组件技术是Windows平台上的二进制组件模型。

实际上ActiveMovie控制和媒体控制接口都是通过COM接口来与过滤器图管理器进行通信。

为了满足流媒体所需要的数据流量,DirectShow尽可能地使用DirectDraw和DirectSound。

DirectShow通过以时间戳(TimeStamped)样本的形式封装媒体数据来使视、音频同步。

图3.1DirectShow系统

为了处理不同格式的媒体文件和各种硬件,在DirectShow模块结构中应用了混合和匹配不同软件组件称为过滤器(Filter)。

图3.1所示,DirectShow过滤器与各种不同的设备通信并控制他们,包括声卡、电视卡、VFW多媒体数字编码器,及视频显示及声卡。

因此DirectShow把应用程序与这些硬件设备内部细节隔离开来,为应用开发人员提供了便利。

DirectShow也为某些文件格式提供原有的压缩和解压缩。

3.1.1COM(ComponentObjectModel)组件

COM即组件对象模型(ComponentObjectMode1),是一种软件架构,它规定了不同的对象使用统一的协议来进行通讯的一套机制。

所有的COM对象都支持相同的接口规范,COM组件被设计为二进制形式,这使得COM对象可以不依赖于具体的语言和系统平台。

DirectShow是一套完全采用基于COM的应用系统。

DirectShow是建立在组件对象模型(COM)上的,因此对于DirectShow应用程序开发人员来说,对COM知识的了解并不要求很高。

因为DirectShow应用程序实际上是一种COM组件的客户程序,只是COM组件的使用,包括如何创建COM组件、如何得到组件对象上的接口以及调用接口方法、如何管理组件对象。

即需要熟悉COM组件的引用计数机制。

而对于Filter开发人员,需要掌握COM知识较多,因为Filter本身是COM组件,牵涉到COM组件实现的问题。

COM本身是一种规范,不是实现,是没有实现函数的C++类,即纯虚类。

COM规范规定,任何组件或是接口都必须从IUnknown接口中继承而来。

IUnknown定义了三个重要的函数,分别是QueryInterface、AddRef和Release。

其中QueryInterface负责组件对象上的接口查询,AddRef用于增加引用计数。

Release用于减少引用计数。

引用计数是COM中的一个非常重要的概念,它解决了COM组件对象的生命周期的问题:

COM组件在什么时候被销毁,以及由谁来销毁。

而COM组件是实现了COM规范的C++对象的组合。

每个COM组件都有与之相对应的类工厂,用于创建COM组件对象。

因为COM组件本身的类名对于外部使用者都不可知,因此由类工厂负责产生COM组件对象。

类工厂是实现了IClassFactory接口的COM组件。

COM组件有3种类型:

进程内组件、本地进程组件和远程组件。

每个COM有它自己的GUID(globallyuniqueID,全球唯一标识符),每个接口也有它自己的IID。

GUID由专门的程序产生,可以保证每个GUID的全球唯一性。

已知COM的CLSID和它的接口的IID,可以用CoCreateInstance函数来实例化该COM,得到一个该接口的指针。

3.1.2F

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1