2024年5月1日发(作者:)
第一部分:背景知识
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与
DirectX开发包一起发布。它经过DirectX 6.0中的DirectX Media发展而来,集成了
DirectX家族中的其他成员(DirectDraw、DirectSound等),可以说是一位“集大成
者”。
DirectShow能做些什么? DirectShow为多媒体流的捕捉和回放提供了强有力的支
持。运用DirectShow,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且
进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括Asf、Mpeg、
Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow
直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提
的是,DirectShow提供的是一种开放式的开发环境,每个功能模块都采取COM组件方式,
称为Filter,开发者也可以开发自己的功能Filter来扩展DirectShow的应用。按照功能来
划分,Filter分为3类:Source Filter, Transform Filter, Rendering Filter。前者负责获取
数据,数据源可以是文件、数字摄像机等,然后将数据往下传输;中间者负责数据的格式
转换,比如数据流的分离与合成、编码解码等,然后把数据继续往下传输;后者负责数据
的去向——给声卡、显卡进行播放或者输出到文件存储。
第二部分 核心技术
DirectShow的开发实际就是Filter的开发,DirectShow自身提供了,下面就是Filter
概述。
1、DirectShow的 Filter
Filter 一般分为下面几种类型。
(1)源过滤器(source filter):源过滤器引入数据到过滤器图表中,数据来源可以
是文件、网络、照相机等。不同的源过滤器处理不同类型的数据源。
(2)变换过滤器(transform filter):变换过滤器的工作是获取输入流,处理数据,
并生成输出流。变换过滤器对数据的处理包括编解码、格式转换、压缩解压缩等。
(3)提交过滤器(renderer filter):提交过滤器在过滤器图表里处于最后一级,它
们接收数据并把数据提交给外设。
(4)分割过滤器(splitter filter):分割过滤器把输入流分割成多个输出。例如,AVI
分割过滤器把一个AVI格式的字节流分割成视频流和音频流。
(5)混合过滤器(mux filter):混合过滤器把多个输入组合成一个单独的数据流。例
如,AVI混合过滤器把视频流和音频流合成一个AVI格式的字节流。
过滤器的这些分类并不是绝对的,例如一个ASF读过滤器(ASF Reader filter)既是
一个源过滤器又是一个分割过滤器。
2、关于Filter Graph Manager
Filter Graph Manager也是一个com对象,用来控制Filter graph中的所有的filter,
主要有以下的功能:
1) 用来协调filter之间的状态改变,从而使graph 中的所有的filter的状态的改变应
发布评论