关于Win7系统下使用capDriverConnect()连接失败的解决办法

最近在学习音频、视频处理编程技术,本人遇到的第一个问题就是用capDriverConnect函数捕获视频源时总是失败,弹出一个捕获源对话框,我点击确定后函数的返回值为0,捕获失败,我在网上也搜索了这方面的资料,发现好多人都遇到了这个问题,大家说需要多次连接才能成功,连接次数不确定,完全是碰运气,运气好的话能连上,但是大家都没有给出解决的方法,我经过多次实验找到了一种解决的方法与大家分享

我查看了VC++视频处理这方面的书籍,里面给出的连接代码全部是下面这种形式

if(capDriverConnect(m_hwnd,0)==TRUE)

{

.......//表示连接成功就可以执行其他的代码了

}

else

{

MessageBox("连接失败");

return false;

}

这样写的话我发现和大家遇到了同样的问题就是无法连接视频驱动。后来我就想既然多次连接可能能够连接上,那就放在While循环里看看情况怎么样

我就改了一下程序

While(capDriverConnect(m_hwnd,0)!=TRUE)

           continue;

这一改我发现只弹出一次捕获源对话框,你点击确定后即可以连接上,所以如果谁遇到这个问题的话建议大家把if换成While

具体的原因我还不清楚

文章内容转自http://www.2cto.com/os/201109/106443.html

======================================================

我的情况是,调试程序没有问题,可以正常启动摄像头,但直接运行就会连接不成功(debug和release效果一样)。

解决办法与原文差不多,只是加了一些控制。

//可能需要多次连接驱动才能成功
int i=0;
while(!capDriverConnect(m_hCameraWnd, 0))
{
	if(++i <= 10)
		continue;
}

另外,附上一个网上的例子,供需要的人使用(已修复以上问题)。

https://files.cnblogs.com/linmeng/Camera02.rar

原文地址:https://www.cnblogs.com/linmeng/p/2835982.html