原创 windows directshow学习一
DirectShow为windows上各种媒体文件的采集、音视频采集等高性能要求的多媒体应用提供完整的应用方案。
Windows操作系统只用了CPU中的两个特权级(0和3)。0是内核模式,它可以直接访问硬件;3是用户模式,它不能直接访问硬件。
DirectShow的基本工作单元是Filter(过滤器),而Filter Graph就是filter的容器,它有一个或多个引脚。而DirectShow中的过滤器一般分为下列3类:
(1)Source Filter (用于提供原始的多媒体数据,比如视频文件、采集卡、数字摄像机)
(2)Transform Filter(用于处理从Source Filter 传过来的多媒体数据,比如数据流分离和合成、编码和解码)
(3)Rendering Filter(用于显示、回放和存储多媒体数据给用户,比如文件写入器、显卡和声卡多媒体演示)
source filter只有一个输出引脚,rendering filter只有一个输入引脚,transform filter既有输入引脚也有输出引脚
要完成特定的多媒体功能,必须用相应的Filter组成特定的Filter Graph。多媒体数据在Graph中流动,到达Rendering Filter时回放给用户。
用户应用程序怎么样控制Filter Graph呢?他必须创建一个相应的Filter Graph Manager,应用程序向Manager发送相应的命令(Command),然后从Manager那接收相应的Event,最后做出相应的响应。
每个Filter都有操作硬件的能力,这就是为什么DirectShow能如此高效的使用多媒体了。
DirectShow的结构原理图如下:
Directshow的编程四部曲:
(1)DirectShow是基于COM(组件对象模型)的,所以在编写Filter前必须初始化COM库,调用CoInitialize()
(2)根据系统完成的功能构建相应的Filter Graph
(3)构建Graph中的每个Filter,并将它们连接起来
(4)创建Filter Graph Manager,运用Application控制Manager,从而控制整个的流程
(5)释放COM库,调用CoUninitialize()
对了还要说一句,现在xp dirextX 中已经移除了directshow,而且directshow的下载地址很多网上说的链接已经失效了,别急,但是在新浪爱问中可以找到directshow
浙公网安备 33010602011771号