王 辉,陈浩明,王小英
(常熟理工学院 计算机科学与工程学院,江苏 常熟 215500)
DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM(Component Object Model)的流媒体处理的开发包[1].它采用流水线的工作思想,可以实时处理并输出采集到的数据流,具有很强的时效性和灵活性.DirectShow屏蔽了硬件设备的差异性,降低了流媒体处理软件的开发难度,支持多种媒体数据类型的解码播放、格式转化,同时还具有VFW(Video for Windows)视频采集方式所不支持的多路音视频数据同时采集的功能,可以轻松地应用于视频监视系统、视频会议、视频点播等系统的开发[2,3].
目前随着嵌入式系统的普及,DirectShow被成功地移植到了Windows CE嵌入式系统之中[4],为Windows CE系统中的多媒体应用的开发提供了有力的支持.通过DirectShow技术,可以基于Windows CE嵌入式系统高效的开发OCR(Optical Character Recognition)(光学字符识别)产品,网络视频监视产品,网络视频会议播放产品等一些具有广阔市场前景的流媒体应用产品.
DirectShow是一个开放性的应用架构,如图1所示.应用程序在使用DirectShow时将按照一定的意图建立起相应的Filter Graph,通过Filter Graph Manager来控制整个数据处理过程.DirectShow在Filter Graph运行的时候接收各种事件,通过消息的方式发送到应用程序,实现应用程序与DirectShow系统之间的交互.
DirectShow中有三种Filter,分别是Source Filter,Transform Filter和Rendering Filter.Source Filters主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等,然后将数据向下传输;Transform Filers主要负责数据的格式转换、传输;Rendering Filters主要负责数据的最终去向,可以将数据传送至声卡、显卡进行多媒体的演示……