深挖VB高手-->USB摄像头监控

yangxie5201314 2011-01-12 01:40:02
相同型号的两个(多个)USB摄像头,是不是不支持同时开启?如果可以,提供思路,谢谢。
VB版的英雄们,我永远爱你们。
不是我再次抱怨,Delphi版块太让人失望了,他们是不是都跳槽了啊。
...全文
807 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
feihudie2010 2012-07-15
  • 打赏
  • 举报
回复
难道VB 真的不能完成。
missingjing 2011-08-16
  • 打赏
  • 举报
回复
还是用VC吧,VB不适合做这些,不灵活。
yangxie5201314 2011-01-14
  • 打赏
  • 举报
回复
for i as int=1 to 摄像头列表.个数
dim vr as new video_renderer
图表s(i).连接filter(vr,摄像头(i))//问题就出现在这边,摄像头(0)一旦工作,摄像头(1)就会报错。
然后将这个vr弄到界面上来
next

我在上面提到了除了C++的还有Delphi的DSpack+DirectShow
lorl2 2011-01-14
  • 打赏
  • 举报
回复
我手头没有可以试验的条件。不过我想只是同一个APP里同时连接多个摄像头显示出来,应该没有难度。
我想大概流程就是这样

dim 摄像头列表 as 集合
dim 图表s() as Graph集合


'枚举所有
for each 摄像头 in 系统摄像头集合
摄像头列表.Add(摄像头)
next

//有多少个摄像头,就建立多少个图表
图表s=new 图表s(摄像头列表.个数)

//将取得的所有摄像逐一连接去显示出来
for i as int=1 to 摄像头列表.个数
dim vr as new video_renderer
图表s(i).连接filter(vr,摄像头(i))
然后将这个vr弄到界面上来
next









你也有弄过Ds的话,不知道有没有写filter方面的资料(c++以外的)。
我想做音视频传输通信,需要写两个源、截取的filter。
yangxie5201314 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 lorl2 的回复:]

应该是可以的。
你先枚举出所有的可用摄像头,然后每一个摄像头创建一个Graph
连接上video renderer。应该是可以看到图像的。
截取数据的话,就要自己写Filter了。要是你用VB实现得了Filter,能不能也发一份出来。让我们学习学习
[/Quote]
连接上没有问题,但是如果Graph1开始从源获取数据了的话,Camera2执行这步的时候就报错了.你讲的原理我懂的
yangxie5201314 2011-01-14
  • 打赏
  • 举报
回复
人呐...
lorl2 2011-01-14
  • 打赏
  • 举报
回复
应该是可以的。
你先枚举出所有的可用摄像头,然后每一个摄像头创建一个Graph
连接上video renderer。应该是可以看到图像的。
截取数据的话,就要自己写Filter了。要是你用VB实现得了Filter,能不能也发一份出来。让我们学习学习

未来式008 2011-01-14
  • 打赏
  • 举报
回复
SO easy 来我空间看看
yangxie5201314 2011-01-13
  • 打赏
  • 举报
回复
一定要是相同型号的USB,不同型号的测试就没意思,肯定是可行的。
yangxie5201314 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jennyvenus 的回复:]

刚找人试了试,在同一主机上开两个软件,每个软件选不同的摄像头,据那边的人说是可以的,可以分别看到图像,晚上回家试试。
[/Quote]
事实上,Win7可以,但是XP就不行,我用两个QQ分别在两个系统上测试了。
咸清 2011-01-13
  • 打赏
  • 举报
回复
关键是要了解USB驱动~~
里面有个枚举,给每一个USB设备分配了一个号,然后就可以用这个号跟相关的设备通信了。
用户 昵称 2011-01-13
  • 打赏
  • 举报
回复
刚找人试了试,在同一主机上开两个软件,每个软件选不同的摄像头,据那边的人说是可以的,可以分别看到图像,晚上回家试试。
yangxie5201314 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ybh37 的回复:]

引用 18 楼 lorl2 的回复:

技术上很简单,做起来有点麻烦
用directshow就行了,但是这方面的资料都是C++的。并且它对VB的支持不太友好。

只要枚举系统中的摄像头捕获源Filter就行了,directshow有现成的接口,几行代码就可列出所有的摄像头了。

一般摄像头数据仅仅是YUV格式的,不用directshow那么麻烦~~直接转换一下就可以了。
[/Quote]
要的不是转换,而是视频源的获取,关键字:相同型号USB摄像头 同时开启
yangxie5201314 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jennyvenus 的回复:]

引用 15 楼 yangxie5201314 的回复:
引用 13 楼 jennyvenus 的回复:

刚找人试了试,在同一主机上开两个软件,每个软件选不同的摄像头,据那边的人说是可以的,可以分别看到图像,晚上回家试试。

事实上,Win7可以,但是XP就不行,我用两个QQ分别在两个系统上测试了。

巧了,正好那人在笔记本上的win7试的。一个开的skype,另一个开的是那个视频……
[/Quote]
猜到是Win7,因为我反复的测试,能考虑的情况都考虑了。
yangxie5201314 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lorl2 的回复:]

技术上很简单,做起来有点麻烦
用directshow就行了,但是这方面的资料都是C++的。并且它对VB的支持不太友好。

只要枚举系统中的摄像头捕获源Filter就行了,directshow有现成的接口,几行代码就可列出所有的摄像头了。
[/Quote]有理,我用VC+Opencv+DS尝试了,也用Delphi+DSpack尝试了,结果都一样----徒劳。枚举出摄像头,第一个Camera可以开启,第二个就报错了。所以我怀疑真的是驱动在作祟,特回VB版,来找你们---我挚爱的战友们...
咸清 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lorl2 的回复:]

技术上很简单,做起来有点麻烦
用directshow就行了,但是这方面的资料都是C++的。并且它对VB的支持不太友好。

只要枚举系统中的摄像头捕获源Filter就行了,directshow有现成的接口,几行代码就可列出所有的摄像头了。
[/Quote]
一般摄像头数据仅仅是YUV格式的,不用directshow那么麻烦~~直接转换一下就可以了。
lorl2 2011-01-13
  • 打赏
  • 举报
回复
技术上很简单,做起来有点麻烦
用directshow就行了,但是这方面的资料都是C++的。并且它对VB的支持不太友好。

只要枚举系统中的摄像头捕获源Filter就行了,directshow有现成的接口,几行代码就可列出所有的摄像头了。
用户 昵称 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yangxie5201314 的回复:]
引用 13 楼 jennyvenus 的回复:

刚找人试了试,在同一主机上开两个软件,每个软件选不同的摄像头,据那边的人说是可以的,可以分别看到图像,晚上回家试试。

事实上,Win7可以,但是XP就不行,我用两个QQ分别在两个系统上测试了。
[/Quote]
巧了,正好那人在笔记本上的win7试的。一个开的skype,另一个开的是那个视频通用的软件。
贝隆 2011-01-12
  • 打赏
  • 举报
回复
我没有试验过同时开启两个,但我认为是可以的。手上到时有一个代码,但没有条件测试。。。
kaifadi 2011-01-12
  • 打赏
  • 举报
回复
我觉得应该和视频头自带的驱动有关系!
加载更多回复(9)

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧