Directshow 捕捉视频入门篇

一、关于视频捕捉(About Video Capture in Dshow)

1) 视频捕捉Graph的构建

这里要重点了解捕捉Graph图和一般回放Graph图的定义。

一个能够捕捉音频或者视频的graph图都称之为 捕捉graph图 。捕捉graph图比一般的文件回放graph图要复杂许多,Directshow提供了一个Capture Graph Builder COM组件使得捕捉graph图的生成更加简单。Capture Graph Builder提供了一个 ICaptureGraphBuilder2 接口,这个接口提供了一些方法用来构建和控制捕捉graph图

首先创建一个Capture Graph Builder对象和一个graph manger对象(图对象的管理器),然后用filter graph manager 作参数,调用ICaptureGraphBuilder2::SetFiltergraph来初始化Capture Graph Builder。看下面的代码吧:

HRESULT InitCaptureGraphBuilder(IGraphBuilder **ppGraph,			//Receives the pointer
								ICaptureGraphBuilder2 **ppBuilder)						//Receives the pointer
{
	if(!ppGraph || !ppBuilder)
	{
		return E_POINTER;
	}

	IGraphBuilder *pGraph = NULL;
	ICaptureGraphBuilder2 *pBuild = NULL;
	//Create the Capture Graph Builder
	HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, 
										CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, 
										(void**)&pBuild );

	if(SECCEEDED(hr))
	{
		//Create the Filter Graph Manager
		hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER, 
										IID_IGraphBuilder, (void**)&pGraph);
		if(SECCEEDED(hr))
		{
			//Initialize the Capture Graph Builder
			pBuild->SetFiltergraph(pGraph);
			//Return both interface pointers to the caller
			*ppBuild = pBuild;
			*ppGraph = pGraph;		//The caller must release both interface
			return S_OK;
		}
		else 
		{
			pBuild->Release();
		}
	}
	return hr;			//Failed
}

未完,待续。。。。。哈哈,如有问题可以联系我:QQ:1906733710,我是从事电子签到软件、电子白板、互动投影软件、查询软件开发的,现在要开发视频录制的功能,在对Directshow 研究的过程当中。希望一起研究提高。有需要软件的也可以联系我。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值