求助,用directshow进行摄像头操作,提示连接到系统上的设备没有发挥作用

问题描述

用directshow操作摄像头,当摄像头数量超过5个的时候提示连接到系统上的设备没有发挥作用,4个的时候都可以正常工作代码是用的是directshow的samples改的如下inthr;ISampleGrabbersampGrabber=null;IBaseFiltercapFilter=null;IPinpCaptureOut=null;IPinpSampleIn=null;IPinpRenderIn=null;//Getthegraphbuilderobjectm_FilterGraph=newFilterGraph()asIFilterGraph2;try{#ifDEBUGm_rot=newDsROTEntry(m_FilterGraph);#endif//addthevideoinputdevicehr=m_FilterGraph.AddSourceFilterForMoniker(dev.Mon,null,dev.Name,outcapFilter);DsError.ThrowExceptionForHR(hr);//Findthestillpinm_pinStill=DsFindPin.ByCategory(capFilter,PinCategory.Still,0);//Didn'tfindone.Isthereapreviewpin?if(m_pinStill==null){m_pinStill=DsFindPin.ByCategory(capFilter,PinCategory.Preview,0);}//Stillhaven'tfoundone.Needtoputasplitterinsowehave//onestreamtocapturethebitmapfrom,andonetodisplay.Ok,we//don't*have*todoitthatway,butwearegoingtoanyway.if(m_pinStill==null){IPinpRaw=null;IPinpSmart=null;//Thereisnostillpinm_VidControl=null;//AddasplitterIBaseFilteriSmartTee=(IBaseFilter)newSmartTee();try{hr=m_FilterGraph.AddFilter(iSmartTee,"SmartTee");DsError.ThrowExceptionForHR(hr);//Findthefindthecapturepinfromthevideodeviceandthe//inputpinforthesplitter,andconnnectthempRaw=DsFindPin.ByCategory(capFilter,PinCategory.Capture,0);pSmart=DsFindPin.ByDirection(iSmartTee,PinDirection.Input,0);hr=m_FilterGraph.Connect(pRaw,pSmart);DsError.ThrowExceptionForHR(hr);//Nowsetthecaptureandstillpins(fromthesplitter)m_pinStill=DsFindPin.ByName(iSmartTee,"Preview");pCaptureOut=DsFindPin.ByName(iSmartTee,"Capture");//Ifanyofthedefaultconfigitemsareset,performtheconfig//ontheactualvideodevice(ratherthanthesplitter)if(iHeight+iWidth+iBPP>0){//SetConfigParms(pRaw,iWidth,iHeight,iBPP);}}finally{if(pRaw!=null){Marshal.ReleaseComObject(pRaw);}if(pRaw!=pSmart){Marshal.ReleaseComObject(pSmart);}if(pRaw!=iSmartTee){Marshal.ReleaseComObject(iSmartTee);}}}else{//Getacontrolpointer(usedinClick())m_VidControl=capFilterasIAMVideoControl;pCaptureOut=DsFindPin.ByCategory(capFilter,PinCategory.Capture,0);//Ifanyofthedefaultconfigitemsaresetif(iHeight+iWidth+iBPP>0){SetConfigParms(m_pinStill,iWidth,iHeight,iBPP);}}//GettheSampleGrabberinterfacesampGrabber=newSampleGrabber()asISampleGrabber;//ConfigurethesamplegrabberIBaseFilterbaseGrabFlt=sampGrabberasIBaseFilter;ConfigureSampleGrabber(sampGrabber);pSampleIn=DsFindPin.ByDirection(baseGrabFlt,PinDirection.Input,0);//GetthedefaultvideorendererIBaseFilterpRenderer=newVideoRendererDefault()asIBaseFilter;hr=m_FilterGraph.AddFilter(pRenderer,"Renderer");DsError.ThrowExceptionForHR(hr);pRenderIn=DsFindPin.ByDirection(pRenderer,PinDirection.Input,0);//Addthesamplegrabbertothegraphhr=m_FilterGraph.AddFilter(baseGrabFlt,"Ds.NETGrabber");DsError.ThrowExceptionForHR(hr);if(m_VidControl==null){//ConnecttheStillpintothesamplegrabberhr=m_FilterGraph.Connect(m_pinStill,pSampleIn);DsError.ThrowExceptionForHR(hr);//Connectthecapturepintotherendererhr=m_FilterGraph.Connect(pCaptureOut,pRenderIn);DsError.ThrowExceptionForHR(hr);}else{//Connectthecapturepintotherendererhr=m_FilterGraph.Connect(pCaptureOut,pRenderIn);DsError.ThrowExceptionForHR(hr);//ConnecttheStillpintothesamplegrabberhr=m_FilterGraph.Connect(m_pinStill,pSampleIn);DsError.ThrowExceptionForHR(hr);}//LearnthevideopropertiesSaveSizeInfo(sampGrabber);ConfigVideoWindow(hControl);//StartthegraphIMediaControlmediaCtrl=m_FilterGraphasIMediaControl;hr=mediaCtrl.Run();DsError.ThrowExceptionForHR(hr);}hr=mediaCtrl.Run();当跑到这步的时候就报示连接到系统上的设备没有发挥作用

解决方案

解决方案二:
自己顶一下,没人遇到过类似的问题么
解决方案三:
不会,帮顶
解决方案四:
本人项目3个高清USB启动也遇到这个问题,最后确定是硬件总线资源不足,无法启动摄像头。请尝试将摄像头连接到位于不同总线控制器的USB接口上,并避免使用USB3.0.如果依旧无法解决问题,则基本确定你需要更强劲的主板、扩展USB卡或视频监视卡以支持多摄像头。
解决方案五:
虽然不知道为什么,但3楼的说法有一定道理。
解决方案六:
问题解决了?本人也遇到类似的问题,但是在笔记本有自带摄像头时就没有这个问题

时间: 2024-07-31 07:55:58

求助,用directshow进行摄像头操作,提示连接到系统上的设备没有发挥作用的相关文章

电脑怎么解决连接到系统中的设备没有发挥作用的问题

  这是一个偶尔出现,但一出现就会导致共享访问不了,可能会导致某一个共享可以访问,其他不能访问,某一个共享不能访问,其他可以访问的怪现象.搜遍网上也没有一个有效的解决方法.今天碰到这个问题时偶然获得一种比较容易有效的解决方法,不用重装系统. 方法一: 1.先提供一个最为简单快捷的方法,先卸载网卡,偶尔能解决 2.卸载以后 ,选取图中的 扫描硬件改动,重装网卡驱动 方法二: 1.右键选择我的电脑,选择管理 2.根据红圈的提示选择,然后应用 方法三: 1.利用一键共享软件设置共享Share for

1、win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现)

1.win10下连接本地系统上的Linux操作系统(分别以Nat方式和桥接模式实现) 一.准备知识:win10下打开Administrator的方式 在win10操作系统中,Administrator默认是隐藏和关闭的,若想使用管理员权限,需要使用cmd(以管理员方式运行)执行如下命令: net user administrator /active:yes 截图:   在执行完成命令之后,进入"控制面板\用户帐户\用户帐户\管理帐户",会出现一下界面(多出了另一个Administrat

使用DirectShow驱动摄像头

对于小摄像头的驱动有几种方法,通过使用DirectShow来驱动摄像头灵活性比较好,有简单的方法也有比较复杂但更有效的方法,本文只介绍简单方法,希望与大家交流! 用DirectShow来使用摄像头,一般要求摄像头的驱动是WDM格式的,当然,一些比较老的驱动格式DirectShow也可支持.DirectShow通过图形过滤管理器(Filter Graph Manager)来与上层应用程序和下层的驱动进行联系.DirectShow通过一种叫作捕获过滤器(Capture Filter)的东东来支持对摄

萌新求助,windowbuilder安装总是出现提示

问题描述 萌新求助,windowbuilder安装总是出现提示 如图--我问了一个群里的,有人说什么之前没卸载干净,我也不知道咋回事--求助啊,快哭了,具体怎么操作

PHP跳转函数和一个通用的操作提示类的编写

PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能.这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等.下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中. <?php /** * 重定向浏览器到指定的 URL * * @param string $url 要重定向的 url * @param int $delay 等待多少秒以后跳转 * @param bool $js 指示是否返回用于跳转的 JavaScript 代码 * @p

迅雷7.9下载一直提示连接资源怎么回事

迅雷7.9下载一直提示连接资源怎么回事   迅雷7.9下载提示连接资源没反应!这是一个重大问题,看一看大神们是如何解决的: 1.下载一个迅雷7.9的安装包测试查看一下,是否有速度,进行判断是个别任务下载没速度.还是全部任务. 2.个别任务下载没速度则是资源原始地址失效导致的,建议更换下载链接进行下载. 3.全部任务下载没速度: ①退出杀毒软件等安全软件,避免无意中设置拦截流量导致的情况. ②如是今天突然出现的问题,建议重新启动电脑尝试. 4.上述皆无效,建议卸载原迅雷7.9安装包,重新下载迅雷7

securecrt-SSH本地端口转发,SecureCRT连接127.0.0.1:6000总提示“连接已复位”?

问题描述 SSH本地端口转发,SecureCRT连接127.0.0.1:6000总提示"连接已复位"? PC1:Windows(10.77.200.148) PC2:Windows(10.77.200.121) VM:CentOS(192.168.101.101)1.PC1和PC2在同一个局域网:2.VM搭建在PC2上(网卡是Host-Only模式),PC2可以SSH访问VM:3.PC2安装了FreeSSHDServer,PC1可以SSH登陆到PC2: 我的目的是:PC1可以直接SSH

mysql登陆总是错误,提示连接不上服务器

问题描述 mysql登陆总是错误,提示连接不上服务器 今天登陆mysql客户端的时候,总是提示这样的错误: "can't connect to MYSQL server on 'localhost' (10061)",尝试很多办法都不行,请问该怎么办?? 解决方案 看下你的mysql服务有没有启动起来. 如果有故障,参考:http://www.jb51.net/article/26505.htm 解决方案二: 贴一下连接语句 顺便确定连接的电脑的mysqld服务是开启的 解决方案三:

oracle 11g-关于Oracle11g数据库与pl/sql图形操作界面连接自己服务器和远程服务器的问题

问题描述 关于Oracle11g数据库与pl/sql图形操作界面连接自己服务器和远程服务器的问题 是这样的:公司有一个服务器专门管理项目的数据库,所以我们员工的电脑只装了服务端(今天重装我才知道Oracle有服务端跟客户端之分呀),因为我是新手 对这些不是很了解, 如果 我想把服务端的某个数据库整个弄下来到我自己电脑(本地) 运行项目的时候连接本地这个数据库(因为在开发完之后 测试的数据库会被清理掉 这样我用来学习的项目就连接不上了 我想保留这个数据库到本地 方便我学习),那么 我该怎么做?是不