DirectShow从静止图像pin中捕捉图片

DirectShow从静止图像pin中捕捉图片

ID:40748082

大小:124.50 KB

页数:22页

时间:2019-08-07

DirectShow从静止图像pin中捕捉图片_第1页
DirectShow从静止图像pin中捕捉图片_第2页
DirectShow从静止图像pin中捕捉图片_第3页
DirectShow从静止图像pin中捕捉图片_第4页
DirectShow从静止图像pin中捕捉图片_第5页
资源描述:

《DirectShow从静止图像pin中捕捉图片》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.     关于视频捕捉(AboutVideoCaptureinDshow)1视频捕捉Graph的构建一个能够捕捉音频或者视频的graph图都称之为捕捉graph图。捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个CaptureGraphBuilderCOM组件使得捕捉graph图的生成更加简单。CaptureGraphBuilder提供了一个ICaptureGraphBuilder2接口,这个接口提供了一些方法用来构建和控制捕捉graph。首先创建一个CaptureGraphBuilder对象和

2、一个graphmanger对象,然后用filtergraphmanager作参数,调用ICaptureGraphBuilder2::SetFiltergraph来初始化CaptureGraphBuilder。看下面的代码把HRESULTInitCaptureGraphBuilder(IGraphBuilder**ppGraph,//Receivesthepointer.ICaptureGraphBuilder2**ppBuild//Receivesthepointer.){if(!ppGraph

3、

4、!ppBuild){retu

5、rnE_POINTER;}IGraphBuilder*pGraph=NULL;ICaptureGraphBuilder2*pBuild=NULL;//CreatetheCaptureGraphBuilder.HRESULThr=CoCreateInstance(CLSID_CaptureGraphBuilder2,NULL,CLSCTX_INPROC_SERVER,IID_ICaptureGraphBuilder2,(void**)&pGraph);if(SUCCEEDED(hr)){而//CreatetheFilterGra

6、phManager.hr=CoCreateInstance(CLSID_FilterGraph,0,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&pGraph);if(SUCCEEDED(hr)){//InitializetheCaptureGraphBuilder.pBuild->SetFiltergraph(pGraph);//Returnbothinterfacepointerstothecaller.*ppBuild=pBuild;*ppGraph=pGraph;//T

7、hecallermustreleasebothinterfaces.returnS_OK;}Else{pBuild->Release();}}returnhr;//Failed}2.     Direcshow中视频捕捉的FilterPin的种类捕捉Filter一般都有两个或多个输出pin,他们输出的媒体类型都一样,比如预览pin和捕捉pin,因此根据媒体类型就不能很好的区别这些pin。此时就要根据pin的功能来区别每个pin了,每个pin都有一个GUID,称为pin的种类。如果想仔细的了解pin的种类,请看后面的相关内容Wo

8、rkingwithPinCategories。对于大多数的应用来说,ICaptureGraphBuilder2提供了一些函数可以自动确定pin的种类。预览pin和捕捉pin视频捕捉Filter都提供了预览和捕捉的输出pin,预览pin用来将视频流在屏幕上显示,捕捉pin用来将视频流写入文件。预览pin和输出pin有下面的区别:1为了保证捕捉pin对视频桢流量,预览pin必要的时候可以停止。2经过捕捉pin的视频桢都有时间戳,但是预览pin的视频流没有时间戳。预览pin的视频流之所以没有时间戳的原因在于filter图表管理器在视

9、频流里加一个很小的latency,如果捕捉时间被认为就是render时间的话,视频renderFilter就认为视频流有一个小小的延迟,如果此时renderfilter试图连续播放的时候,就会丢桢。去掉时间戳就保证了视频桢来了就可以播放,不用等待,也不丢桢。VideoPortpinVideoPort是一个介于视频设备(TV)和视频卡之间的硬件设备。同过VideoPort,视频数据可以直接发送到图像卡上,通过硬件的覆盖,视频可以直接在屏幕显示出来。VideoPort就是连接两个设备的。使用VideoPort的最大好处是,不用CP

10、U的任何工作,视频流直接写入内存中。如果捕捉设备使用了VideoPort,捕捉Filter就用一个videoportpin代替预览pin。预览pin的种类GUID为PIN_CATEGORY_PREVIEW捕捉pin的种类GUID为PIN_CATEGORY_CAPTUREvid

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

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

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