DirectShow是基于COM技术的,有着较强的编程规范和重用性。运用DirectShow,可以方便地从采集设备上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包...
DirectShow是基于COM技术的,有着较强的编程规范和重用性。运用DirectShow,可以方便地从采集设备上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格式,包括ASF、MPEG、AV I、DV、MP3和WAVE等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其他部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。更值得一提的是,DirectShow提供了一种开放的开发环境,开发人员可以根据自己的需要定制组件。DirectShow系统使用一种叫滤波器图表(filter graph)的模型来管理整个数据流的处理过程,它基于模块化,每个功能模块都采取COM组件方式,参与数据的处理,称为滤波器。各个滤波器在滤波器图表中按一定的顺序连成一条“流水线”来协同工作,依次对数据流进行处理。DirectShow提供了一系列标准的滤波器模块来用于应用开发,开发者也可以根据实际需要开发自己的功能滤波器来扩展DirectShow的应用。滤波器可以大致分为3类:源滤波器、转换滤波器和表现滤波器。源滤波器主要负责获取数据,数据源可以是文件、因特网计算机里的采集卡(WDM驱动VFW驱动的)和数字摄象机等,然后将数据往下传输;转换滤波器负责数据的格式转换,例如数据流分离/合成、解码/编码等,处理过后再将数据继续往下传输;表现滤波器则负责数据的最终去向——将数据送给显卡、声卡进行多媒体的演示,或者输出到文件进行存储 。滤波器一般由一个或多个引脚组成,滤波器之间通过引脚相互连接,构成一条顺序的链路。一般来说,源滤波器仅含有输出引脚;转换滤波器既有输入引脚又有输出引脚;而表现滤波器仅有输入引脚。DirectShow对数据的处理实际上就是把不同功能的滤波器连接起来,依次对数据进行相应的处理,然后再传递给下一级的滤波器。