基于delphi的directshow开发概述1

基于delphi的directshow开发概述1

ID:14005673

大小:86.50 KB

页数:34页

时间:2018-07-25

基于delphi的directshow开发概述1_第1页
基于delphi的directshow开发概述1_第2页
基于delphi的directshow开发概述1_第3页
基于delphi的directshow开发概述1_第4页
基于delphi的directshow开发概述1_第5页
资源描述:

《基于delphi的directshow开发概述1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Delphi的DirectShow开发概述1第一部分:背景知识DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。它经过DirectX6.0中的DirectXMedia发展而来,集成了DirectX家族中的其他成员(DirectDraw、DirectSound等),可以说是一位“集大成者”。DirectShow能做些什么?DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地

2、支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供的是一种开放式的开发环境,每个功能模块都采取COM组件方式,称为Filter,开发者也可以开发自己的功能Filter来扩展DirectShow的应用。按照功能来划分,Filter分为3类:SourceFilter,TransformFilter,RenderingFilter。前者负责获取数据,数据源可以是文件、数字摄像机等,然后将数据

3、往下传输;中间者负责数据的格式转换,比如数据流的分离与合成、编码解码等,然后把数据继续往下传输;后者负责数据的去向——给声卡、显卡进行播放或者输出到文件存储。第二部分核心技术DirectShow的开发实际就是Filter的开发,DirectShow自身提供了,下面就是Filter概述。1、DirectShow的FilterFilter一般分为下面几种类型。  (1)源过滤器(sourcefilter):源过滤器引入数据到过滤器图表中,数据来源可以是文件、网络、照相机等。不同的源过滤器处理不同类型的数据源。  (2)变换过滤器(transformfilter):变换过滤器的工作

4、是获取输入流,处理数据,并生成输出流。变换过滤器对数据的处理包括编解码、格式转换、压缩解压缩等。  (3)提交过滤器(rendererfilter):提交过滤器在过滤器图表里处于最后一级,它们接收数据并把数据提交给外设。  (4)分割过滤器(splitterfilter):分割过滤器把输入流分割成多个输出。例如,AVI分割过滤器把一个AVI格式的字节流分割成视频流和音频流。  (5)混合过滤器(muxfilter):混合过滤器把多个输入组合成一个单独的数据流。例如,AVI混合过滤器把视频流和音频流合成一个AVI格式的字节流。  过滤器的这些分类并不是绝对的,例如一个ASF读过

5、滤器(ASFReaderfilter)既是一个源过滤器又是一个分割过滤器。2、关于FilterGraphManager  FilterGraphManager也是一个com对象,用来控制Filtergraph中的所有的filter,主要有以下的功能:  1)用来协调filter之间的状态改变,从而使graph中的所有的filter的状态的改变应该一致。  2)建立一个参考时钟。  3)将filter的消息通知返回给应用程序  4)提供用来建立filtergraph的方法。简单描述,Graph就是各个Filter组成的一个流程图。SourceFilter----

6、-----Sp

7、literFilter-------------(Video-pin)>-----TransFormFilter--->VideoRender

8、---------------------(Audio-pin)->----ACMWraperFilter--->DirectSoundFilter程序启动过程,先创建各个filter的com对象,然后使用FilterGraph.Addfilter加入到Graph中,然后把每个Filter按照数据流把OutPin和inpuin连接起来。最好启动FilterGraph.play即可。  Directshow是基于模块化,每个功能模块都采

9、取COM组件方式,称为Filter。Directshow提供了一系列的标准的模块可用于应用开发,开发者也可以开发自己的功能Filter来扩展Directshow的应用。下面我们用一个例子来说明如何采取Filter来播放一个AVI的视频文件。  1)首先从一个文件中读取AVI数据,形成字节流。(这个工作由源Filter完成)  2)检查AVI数据流的头格式,然后通过AVI分割Filter将视频流和音频流分开。  3)解码视频流,根据压缩格式的不同,选取不同的decoderfilters。  4)通过Ren

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。