欢迎来到天天文库
浏览记录
ID:41033024
大小:66.00 KB
页数:11页
时间:2019-08-14
《DirectShow编程实现摄像头视频捕捉》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、DirectShow编程实现摄像头视频捕捉前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。 DirectShow是基于COM的,为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。Directshow提供了
2、大量的接口,但在编程中发现还是不够方便,如果能构建一个视频捕捉类把常用的一些动作封装起来,那么就更方便了。 编程思路#W+K9@7M(u'z5U2P2g 为了更加容易建立视频捕捉应用程序,DirectShow提供了一个叫做CaptureGraphBuilder的对象,CaptureGraphBuilder提供IcaptureGraphBuilder2接口,该接口可以建立和控制CaptureGraph。 建立视频捕捉程序,必须首先获取并初始化IcaptureGraphBuilder2接口,然后选择
3、一个适当的视频捕捉设备。选择好设备后,为该设备创建Capturefilter,然后调用AddFilter把Capturefilter添加到FilterGraph。 如果仅仅希望用摄像头来进行实时监控的话,只需要在上面的基础上调用ICaptureGraphBuilder2::RenderStream就可以了:ICaptureGraphBuilder2*pBuild;//CaptureGraphBuilder$N/
4、3v%Z-R.E#m//省略初始化部分代码IBaseFilter*pCap;//Vid
5、eocapturefilter.:p#y!Ds;@#v+Q//省略初始化和添加到FilterGraph部分代码pBuild->RenderStream(&PIN_CATEGORY_PREVIEW,&MEDIATYPE_Video,pCap,NULL,NULL); DirectShow提供了一个捕捉静态图像的方法:使用SampleGrabberfilter。依次按照以下三个步骤就可以了::g;?)m:X&]:L#v 第一步,定义一个类实现SampleGrabber的回调接口IsampleGrabb
6、erCB::V&{'u'w.G5xn:NclassCSampleGrabberCB:publicISampleGrabberCB{k*a$K2s+y"R5cO1` //在后面提供的类中具体完成}CSampleGrabberCBmCB; 第二步、调用RenderStream依次把Stillpin、SampleGrabber和系统默认RendererFilter连接起来。!NQ7c/O5g/?,c"p 第三步、配置SampleGrabber以捕获数据。0U3a3L'H0X 视频捕捉类CCaptur
7、eVideo的具体实现//CCaptureVideo视频捕捉类头文件+`8e2@-a)n3a"r&Y#}/////////////////////////////////////////////////////////////////////#if!defined(AFX_CAPTUREVIDEO_H__F5345AA4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_)(^7C!Y6e#k$H!l"o/B#defineAFX_CAPTUREVIDEO_H__F5345A
8、A4_A39F_4B07_B843_3D87C4287AA0__INCLUDED_*q5q1K8G:n///////////////////////////////////////////////////////////////////////CaptureVideo.h:headerfile/////////////////////////////////////////////////////////////////////DirectShow编程实现摄像头视频捕捉前言 DirectShow是
9、微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectShow为多媒体流的捕捉和回放提供了强有力的支持。用DirectShow开发应用程序,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。 DirectShow是基于COM的,为了编写DirectShow应用程序,需要了解COM客户程序编写的基础知识。Directshow提供了大量的接口,但在编程中发现还是不够方便,
此文档下载收益归作者所有