Linux: 两个USB摄像头的数据采集问题

引子: 课题需要,同时采集两个摄像头数据,频率不高,但要同时。中间遇到的问题,唉一言难尽啊!

为了图省事使用UVC摄像头,但是板子是USB1.1接口的,故挑选兼容USB1.1的UVC驱动的摄像头,最终选定两个301V芯片的摄像头,先使用一个摄像头,因频率不高,将采集频率设到了最低5帧每秒,打开视频流,正常!视频缓冲出列,入列,正常!保存图像,正常!再添加一个摄像头,先使用VIDIOC_STREAMON打开一个摄像头,正常,再打开另一个,报错了!

出错代码:

uvcvideo: Failed to submit URB 0 (-28).

经查疑似带宽不足,

(摘自http://answerpot.com/showthread.php?272129-Stream+from+multimple+cameras)

The uvcvideo driver requests bandwidth based on values reported by the camera.

There are two settings involved there. The first one is the alternate settings
for the video streaming interface. The video streaming interface has an
isochronous endpoint for video streaming, and each alternate setting has a
different maximum packet size for the endpoint, resulting in different
bandwidth requirements.

The second one is the dwMaxPayloadTransferSize value reported by the camera
when querying its video streaming control. The driver selects the alternate
setting with the lowest bandwidth that fulfills the dwMaxPayloadTransferSize
requirements.

If your camera has a single alternate setting (this can be checked using
lsusb) you're probably screwed, as the bandwidth is fixed. If it has multiple
alternate settings, it might be requesting a bandwidth higher than what it
really needs. In that case you could try to hardcode a lower bandwidth (see
the uvc_init_video function in uvc_video.c), or let the driver compute a
bandwidth estimation on its own by setting the UVC_QUIRK_FIX_BANDWIDTH quirk.

It's also possible to play with URB submission order to use higher bandwidths
and alternate capture between the different webcams. Dennis Muhlestein
investigated that and got interesting results. Search the list archives for a
thread called "Multiple camera framerate".

郁闷数日,度日如年啊!一头雾水,未解,唉,菜鸟吗!难道吃菜的鸟真的飞不高吗?或许天生就不是搞代码的料。

后来的后来,试了试另外的两个摄像头,301PL的,USB1.1接口,Linux2.6.28中包含了该类型摄像头的驱动(gspca,据说是位法国学者编的),同时打开两个摄像头,意想不到的是,报了3次错后,打开了

zc3xx: probe 2wr ov vga 0x0000
zc3xx: probe 2wr ov vga 0x0000
gspca: usb_submit_urb [0] err -28
s3c2410-ohci s3c2410-ohci: leak ed ff1d2140 (#81) state 2
zc3xx: probe 2wr ov vga 0x0000
gspca: usb_submit_urb [0] err -28
s3c2410-ohci s3c2410-ohci: leak ed ff1d2180 (#81) state 2
zc3xx: probe 2wr ov vga 0x0000
gspca: usb_submit_urb [0] err -28
s3c2410-ohci s3c2410-ohci: leak ed ff1d21c0 (#81) state 2
zc3xx: probe 2wr ov vga 0x0000
this is vidCapture_thread of Left
the 1 of Left
state at:978442537 719669
this is vidCapture_thread of right
the 1 of right
state at:978442537 823039

不知为什么,但是对比UVC和gspca驱动的源代码,发现对于usb_submit_urb () 函数的返回值的处理是不同的,gspca中加了对错误代码的判断,将28号错误(ENOSPC)同其他的区别对待了

/* submit the URBs */
 614                for (n = 0; n < gspca_dev->nurbs; n++) {
 615                        ret = usb_submit_urb(gspca_dev->urb[n], GFP_KERNEL);
 616                        if (ret < 0) {
 617                                PDEBUG(D_ERR|D_STREAM,
 618                                        "usb_submit_urb [%d] err %d", n, ret);
 619                                gspca_dev->streaming = 0;
 620                                destroy_urbs(gspca_dev);
 621                                if (ret == -ENOSPC)
 622                                        break;  /* try the previous alt */
 623                                goto out;
 624                        }
 625                }

而UVC中只要是提交没成功就退出。

 

菜鸟只能将问题提出来,解决问题还要靠大侠们啊

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取指定日期的常用前后节点(月初月末周一周末等等)

获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09; 原文:获取指定日期的常用前后节点&#xff08;月初月末周一周末等等&#xff09;注&#xff1a;周节点方面是根据中国习惯&#xff0c;视周一为起&#xff0c;周日为末。 /*-------------------------…

DB2在linux安装

linux下安装DB2的详细步骤第一步下载db2v8.1数据包,IBM网站有了,但是要钱了,呵呵第二步把下载下来的包(名称有可能是:DB2_V81_PE_LNX_32_NLV.tar)放进opt目录第三步用命令解压DB2_V81_PE_LNX_32_NLV.tar如下:linux:~#cd /optlinux:/opt # tar -xvf DB2_V81_PE_LNX_32_NLV.tar第…

封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术

From: http://blog.csdn.net/zhoujianhei/article/details/1844319 摘要 您所选择的数据传输方式在分布式应用程序中是非常重要的。Windows 2000 提供了几种新的特性&#xff0c;可以更加高效地进行数据传输。轻量级的处理程序使得您能够编写智能代理&#xff0c;它们能够缓存结…

Linux:驱动程序直接编译到内核(源自国嵌的视频教学)

引子&#xff1a;前面的文章实现了可加载的内核模块&#xff0c;通过这个内核模块实现对PWM定时器的控制和中断处理程序的注册。这里讨论一下将内核模块直接编译进内核的过程&#xff0c;首先声明来源于国嵌的视频教学。 其实很简单&#xff0c;第一步把冰箱门打开...&#xf…

(转)mysql基础命令

Sql代码 asc 按升序排列 desc 按降序排列 下列语句部分是Mssql语句&#xff0c;不可以在access中使用。 SQL分类&#xff1a; DDL—数据定义语言(CREATE&#xff0c;ALTER&#xff0c;DROP&#xff0c;DECLARE) DML—数据操纵语言(SELECT&#xff0c;DELETE&#xff0c;UPDATE&…

JQuery 对控件的事件操作

JQuery是非常棒的js类库&#xff0c;有丰富的UI库和插件&#xff0c;不过我钟爱他的是他的选择器&#xff0c;感觉其他功能有时跟后台人员距离很远&#xff0c;所以一般我也只使用一下他的选择器。 今天突然对他的事件产生了兴趣&#xff0c;先前也碰到过&#xff0c;也没整理&…

搭建VS2008+OpenCV2.1开发环境

引子&#xff1a;如题&#xff08;非原创&#xff0c;非转载&#xff0c;非翻译&#xff09;。其实本菜鸟很纠结于CSDN博客文章的分类&#xff1a;原创&#xff1b;转载&#xff1b;翻译。菜鸟以博客备忘&#xff0c;首先Google&#xff0c;然后试&#xff0c;最后写博客&#…

repalce

1、replace基本用法 <script>/*要求将字符串中所有的a全部用A代替*/var str "javascript is great script language!";//只会将第一个匹配到的a替换成Aconsole.log(str.replace("a", "A")); // > jAvascript is great script language…

Win8环境下 IIS6部署MVC网站出现的无法显示此网页错误

在Win7环境下做好的网站&#xff0c;新的Win8环境发布出现如下图错误&#xff1a; 解决方法如下&#xff1a; 运行&#xff1a; 转载于:https://www.cnblogs.com/xiashenbin/p/4098274.html

软件质量管理之痛

相信不少软件开发公司都存在质量管理部门。而且&#xff0c;如果一个公司稍微正规的话,一定会使用一个缺陷跟踪软件系统&#xff0c;比如开源的Bugzilla&#xff0c;或是IBM的ClearQuest等等。那质量管理部门是如何跟踪和控制软件质量的呢&#xff1f;毫无疑问&#xff0c;需要…

COM、COM+和DCOM的定义和区别

From:http://zouyou1986.blog.163.com/blog/static/1772625920105461931335/ 解释COM、COM和DCOM的定义和区别&#xff1f; COM是组件对象模型,是实现3/N层应用的基础,它的目的就是组件化,应用程序分层.DCOM是分布式的COM,也就说可以远程的创建,最初它利用远程自动化来实现,用…

OpenCV:SURF算法浅析

引子&#xff1a; 课题需要SURF特征提取算法&#xff0c;在运动中提取摄像头图像中的特征点&#xff0c;并进行跟踪匹配&#xff0c;以此估计运动状态。开始找到了SIFT算法&#xff0c;SIFT特征提取具有极强的适应能力&#xff0c;但运算量稍大&#xff0c;后来就有了SURF特征提…

Codeforces Round #277(Div 2) A、B、C、D、E题解

转载请注明出处&#xff1a; http://www.cnblogs.com/fraud/ ——by fraud A. Calculating Function 水题&#xff0c;判个奇偶即可 1 #include <iostream>2 #include <sstream>3 #include <ios>4 #include <iomanip>5 #include <functio…

Vue 中使用watch监听$route 无效问题

Vue 中使用watch监听$route失效问题&#xff01; 今天在项目操作中发现一个问题&#xff0c;在watch里面监听$route变化&#xff0c;发现并没有监听到&#xff0c;查阅了一些资料最终解决&#xff0c;现写出与大家共同分享&#xff0c;也忘出现此问题的同学也能顺利解决 路由词…

oa 系统后期安装服务

http://www.didibabawu.com/oa.htm

.idl与.odl的区别

From: http://hi.baidu.com/%CD%E6%CA%AF%CD%B7%B5%C4%D0%A1%BA%A2/blog/item/1b9a942fe8cfcf594ec22629.html 1. .odl和.idl在com中的功能相同. 前者是ActiveX中的 后者是ATL中. 可在前者的文件中 用 #import "XXXXX.idl" 的方式包含后者. 反过来没有试过. 2. …