精通网络视频核心开发技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5.2 DirectShow

DirectShow是Microsoft公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM的流媒体处理的开发包,与DirectX开发包一起发布。目前,DirectX最新版本为9.0C。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。这样使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。

DirectShow广泛地支持各种媒体格式,包括ASF、MPEG、AVI、DV、MP3、WAVE等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX其他部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放、视频的非线性编辑,以及与数字摄像机的数据交换。

DirectShow使用了一种叫做Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连成一条“流水线”协同工作。大家可以看到,按照功能来分,Filter大致分为3类,分别是Source Filters、Transform Filters和Rendering Filters。Source Filters主要负责取得数据,数据源可以是文件、因特网或者计算机中的采集卡、数字摄像机等,然后将数据往下传输;Transform Fitlers主要负责数据的格式转换、传输;Rendering Filtes主要负责数据的最终去向,可以将数据发送给声卡、显卡进行多媒体的演示,也可以输出到文件进行存储。值得注意的是,3个部分并不是都只有一个Filter去完成功能。恰恰相反,每个部分往往是由几个Fitler协同工作的。比如,Transform Filters可能包含了一个MPEG的解码Filter,以及视频色彩空间的转换Filter、音频采样频率转换Filter等。除了系统提供的大量Filter外,还可以定制自己的Filter,以完成需要的功能。