关于DirectShow在Video视频处理方面的的一些基本应用.doc

关于DirectShow在Video视频处理方面的的一些基本应用.doc

ID:59362923

大小:79.00 KB

页数:14页

时间:2020-09-04

关于DirectShow在Video视频处理方面的的一些基本应用.doc_第1页
关于DirectShow在Video视频处理方面的的一些基本应用.doc_第2页
关于DirectShow在Video视频处理方面的的一些基本应用.doc_第3页
关于DirectShow在Video视频处理方面的的一些基本应用.doc_第4页
关于DirectShow在Video视频处理方面的的一些基本应用.doc_第5页
资源描述:

《关于DirectShow在Video视频处理方面的的一些基本应用.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、关于DirectShow在Video视频处理方面的的一些基本应用作者:佚名文章来源:不详点击数:8017更新时间:2005-10-6关于DirectShow在Video视频处理方面的的一些基本应用DirectShow是微软提供的DirectX软件开发包中的一员,主要以处理流媒体数据为重点开发的一套windows下的编程接口,为了高效地处理音视频数据,它向应用提供了直接访问系统底层功能的接口,可以使应用直接控制从数据采集到数据演播的各个中间环节,如数据压缩和解压缩格式等。DirectShow是以一种比较新的概念来操作媒体

2、流运行的,他有点类似于计算机硬件的管脚Pin的概念,并且引进了滤波器Filter和流图Graph等原理。媒体流通过流图中的各个滤波器,最后到达输出界面,期间经过各个滤波器的转化和控制使最终数据达到一定的要求。通过DirectShow的基本接口,应用可以自行设计自己的各种滤波器完成数据在流动中的特殊处理需求,比如视频数据流的格式从MPEG到RGB的变换(解压缩)或象素格式从YUV到RGB的变换等。DirectShow本身是一个比较复杂的系统,其中包含了许多的概念,对于一个初涉的编程人员,需要学习许多新的知识,特别是对于使

3、用非VC进行应用开发的人员,想要实际使用DirectShow的功能其困难程度是可想而知的。为此,我这里提供一个折中的解决方案,使得非VC的开发人员也能方便的使用DirectShow提供的各种功能,同时也为所有希望进入视频编程领域的开发人员提供一个DirectShow的入门级引导。这篇文章和相关源码或许能对感兴趣的读者提供一些帮助。 一、          DirectShow的graph原理Graph实际上是一个filters的容器,Dshow提供一个Graph控件(Com),应用可以用CoCreateInstance

4、来建立一个graph对象。在Dshow中还有一个用于创建和操作Graph,这就是Builder对象,一般来讲,应用应该首先创建Builder对象,它是Dshow流控制的关键,Builder接口提供的方法包含了智能创建Graph中filters的能力,当未知媒体流格式时,使用Builder连接Filter时,将智能添加系统中的格式转换Filter到Graph的Filters链中产生目标格式的最佳转换链。建立Builder和Graph后,将Graph加入到Builder中,便可以往Graph中添加指定的Filter了,一般

5、系统中的Video设备是由设备枚举过程获得的,系统中的每一种视频驱动,都定义为一个视频设备(音频设备也是如此)。函数:CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC_SERVER,IID_ICreateDevEnum,(void**)&pCreateDevEnum);建立系统设备枚举器对象,其中:ICreateDevEnum*pCreateDevEnum;//设备枚举器对象指针GUIDIID_IcreateDevEnum//设备枚举器接口的GUIDC

6、onstCLSCTX_INPROC_SERVER//被建立对象的进程特征GUIDCLSID_SystemDeviceEnum//枚举器对象类的GUID注意:GUID包含在Dshow头文件UUID.h中。利用设备枚举对象列出系统中已经安装的设备,每一个设备类形成一个IenumMoniker对象然后枚举该类设备在系统中的安装个数://建立视频输入设备枚举器IEnumMoniker*pEm;pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory

7、,&pEm,0);pEm是已经建立的视频设备每举器,通过该对象枚举系统的视频设备。IMoniker*pM;//枚举视频设备pEm->Next(1,&pM,&cFetched),hr==S_OK)//获得一个Imoniker接口Dshow通过设备的Imoniker接口操作系统中的设备。同样步骤可以获得系统中的音频设备,它们统称为系统的输入设备。(关于函数的参数定义可以查看VC的帮助,非VC开发人员,只需了解基本原理就可以了)Imoniker对象通过提供的BindToObject方法可以获得输入设备的Filter对象 pM

8、–>BindToObject(0,0,IID_IBaseFilter,(void**)&pVCap); pVCap就是视频输入设备对象,利用QueryInterface函数可以获得特殊输入设备的接口对象(因为pVCap仅反映出一个基本的滤波器对象,因此不能反映一些特殊的方法,查询特殊接口需要知道接口的GUID,这可以通过设备购买时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。