最近在学习音频、视频处理编程技术,本人遇到的第一个问题就是用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