当进行多个USB视频捕捉时,不是每个USB插口都能插上一个USB摄像头。如果这样做的话,结果可能是屏幕一片空白,什么都没有,因为摄像头初始化会出错,导致程序不可正常运行。

这里首先涉及到USB的传输速度的问题。一个USB2.0的理论传输速度为480Mbps,也就是60MBps。当然,实际上不可能达到这个理论的最大值。一般只能达到这个值的70%左右,读入速度为30-42MBps,写入速度为25-30MBps。当我们用一个摄像头采集时,假设采集一帧的分辨率为 640*480(这个分辨率是大多数摄像头都支持的分辨率),图像是24位(3个字节表示一个像素点)的位图,采集帧率为30Fps,那么所需的带宽为 640*480*24*30bps,即640*480*24*30/8/1024/1024=26.37MBps。可见,当插上一个USB摄像头的时候,按照这种方式进行采集时,就已经占了读入的大半带宽,当插上两时,结果可想而知,要么很卡,要么程序就无法运行。

那这样的话,岂不是不能进行多个摄像头的同时采集?实际上,刚才说的传输速度,是针对一个USB Controller而言。在PC机上一般不可能只有一个USB Controller。所以,当多个摄像头插在不同的USB Controller上面时,就能进行流畅的视频采集了。在这里还有必要说下USB Controller的问题。一台电脑上面可能有多个USB插口,但是并不等同与有相同数目的USB Controller。以我的笔记本为例,上面有4个USB插口,而只有两个USB Controller。稍微查一下就能得知,一个USB Controller上面连了一个USB插口,另外一个USB Controller上面连了3个USB插口。为什么会这样呢,详细讲解下USB的结构。

我们知道,主板上的南桥是连接外设和北桥的。USB Controller就是接在了南桥上面。根据我的理解,一般是OHCI(OpenHost Controller Interface)或者UHCI(Universal HostController Interface)加上EHCI(Enhanced Host ControllerInterface)来作为一个USB Controller。OHCI或UHCI提供全速和低速的USB传输,而EHCI提供高速的USB传输。USB Controller会根据连接的设备来自动选取是OHCI(或UHCI)还是EHCI。然后一个USB Controller上面接Hub,Hub上面连了多个USB插口。我们电脑上面的USB插口就是Hub上面分出来的。

因此,不管有多少个USB插口在电脑上,只有连在了不同的USB Controller上面,才能保证视频的流畅性。这点可以借助驱动精灵来查看是否不同的摄像头接在了不同的USB Controller上面。驱动精灵的硬件检测选项单里面,点击详细信息,然后端口->USB,里面就有各种详细的连接情况。一般一个摄像头,名称为Composite Device,可是查看一个USB Controller上面是不是连接了多个Composite Device,以确保一对一的连接。这样才能保证连接端口没有出现问题。

回到zedboard,它只提供了一个USB Controller,因此使用两个摄像头时必须HUB分接。前面已经讲到一个USB摄像头如果采集的视频帧大小640*480,那么一个摄像头已经占据了USB Controller接口的大部分传输带宽,如果再开启一个摄像头,另一个摄像头肯定就不能正常打开了,程序当然就不能正常运行了。

要实现HUB分接两个摄像头,首先要解决的就是带宽不够的问题。解决的办法就是将两个摄像头采集的视频帧大小设置为320*240,这样带宽的问题就解决了。除了设置视频帧的采样大小,更重要的还是设置视频驱动的工作模式。由于项目中摄像头的驱动为UVC驱动的,因此,以UVC的驱动加载为例。

在内核编译过程中,如果将UVC驱动编译进入内核,摄像头采集视频时会默认申请USB接口的全部带宽。所以要将UVC驱动编译为模块,手动设置驱动的工作模式。关于内核的配置编译,参考上一篇参赛手记,这里不再详述。

将UVC驱动编译为模块后,生成uvcvideo.ko和videobuf2-vmalloc.ko,然后在zedboard控制台中输入

insmod videobuf2-vmalloc.ko

insmod uvcvideo.ko quirks=128

其中insmod uvcvideo.ko quirks=128将uvc视频驱动加载到内核中,并强制要求摄像头计算所需带宽,而不是申请USB接口的全部带宽。

通过以上限制,就解决zedboard的HUB分接两个摄像头的带宽矛盾。

linux 远程挂载摄像头_linux实现HUB分接两个摄像头读取视频相关推荐

  1. linux 远程挂载摄像头_Linux下学习摄像头使用

    刚接触Linux硬件驱动有关的项目,配置摄像头经历的一些操作 (这篇文章是刚接触Linux下V4L时作为记录记下的,感觉只有几个命令还有参考作用) 一 确定摄像头种类 确定是否符合UVC标准协议,一般 ...

  2. linux 远程挂载摄像头_基于Linux的嵌入式网络摄像机设计

    本嵌入式网络摄像机采用高性能ARM9芯片微处理器,内置嵌入式Web服务器. 通过嵌入式多任务操作系统采集摄像机视频数据:采集的视频信号数字化后经MJPEG算法压缩,再通过内部总线送到内置的Web服务器 ...

  3. linux 远程挂载摄像头_NFS在centos下的安装,摄像头挂载NFS

    什么是NFS NFS 是 Network File System 的缩写,即网络文件系统.功能是让客户端通过网络访问不同主机上磁盘里的数据.如果家里有一台Linux服务器,可以把很多服务安装在上面,这 ...

  4. linux 远程挂载摄像头_如何实现嵌入式Linux下USB摄像头视频采集

    展开全部 在linux下所e5a48de588b662616964757a686964616f31333337613134有设备都是文件.所以对摄像头的操作其实就是对文件的操作.USB摄像头的设备文件 ...

  5. linux 远程挂载目录,linux开机自动挂载远程主机文件目录

    linux开机自动挂载远程主机文件目录 2015-08-18 02:15 分享人:老牛 可以是远程到本地 也可以是两台远程之间 甚至一挂多 其他用途: 网站附件服务器空间不够用了,能否直接挂载另一台的 ...

  6. linux uuid挂载磁盘_linux下mount硬盘步骤,含UUID mount办法

    linux下mount步骤 一.建立分区 fdisk -l /dev/emcpowera fdisk /dev/emcpowera 输入n,p,default,default,建立一个主分区,分给全部 ...

  7. linux远程挂载磁盘

    linux挂载磁盘nfs 一.安装组件 yum install -y nfs-utils rpcbind 二.创建共享目录 mkdir -p /nfs/gerrit_git cd /nfs/gerri ...

  8. linux mint 屏保_Linux Mint 修复了两个孩子发现的屏保锁定绕过漏洞

    Linux Mint 修复了两个孩子发现的屏保锁定绕过漏洞 据 zdnet 报道,两个孩子在爸爸的电脑上玩耍时,意外发现了绕过屏保,进入锁定系统的方法.根据 bug 报告,这两个孩子在物理键盘和屏幕键 ...

  9. linux 映射远程文件夹,Linux远程映射磁盘的方法

    我用"Linux远程挂载磁盘的方法"做关键词在网上找了好久好久,都找不到,然后,用标题这个字,就找到了.算了,今天再次碰到,收藏下来,以免以后麻烦. 假定需要被映射的源目录所在的机 ...

最新文章

  1. python ssh模块有哪些_Python paramiko模块(实现ssh)
  2. Hibernate:hbm2ddl.auto =在生产中更新?
  3. 大数据的逆袭:传统数据库市场的变革
  4. 雅虎对提升网站性能的最佳实践(英文)
  5. P1377 [TJOI2011]树的序 笛卡尔树优化建树
  6. 6、Actor,Stage的学习
  7. Solr 新增、更新、删除索引
  8. NameError: name ‘List‘ is not defined
  9. C#多线程之线程池篇2
  10. 弹出菜单快捷键的使用方法
  11. 计算机中丢失jadec.dll,技能干货丨超实用,Jade各种安装问题完美解决方案!
  12. 学习weka(1):weka软件安装使用教程
  13. adb安装apk到智能TV上
  14. maven实现对js文件进行变量替换和文件压缩
  15. Docker 基础之Dockerfile命令详解
  16. Codeforces-1487 D. Pythagorean Triples(数学)
  17. 算法系列之十八:用天文方法计算二十四节气(下)
  18. 房天下二手交易平台房源数据采集
  19. 【LiteOS】小白进阶之系统移植配置解析
  20. python爬虫系列--lxml(etree/parse/xpath)的使用

热门文章

  1. 优秀的模糊测试代码是如何炼成的?
  2. 详解 C++ 的隐式类型转换与函数重载!
  3. 10 亿产业基金加持,让精准定位在物联网应用中实现无限可能!
  4. 京东排行第一,近 4 万好评,这本 Python 书究竟好在哪?
  5. Python 告诉你,情人节该送什么礼物?
  6. 「傻瓜」才能写出好代码!
  7. 三星电子通信撤出中国!
  8. html 三大标签,网站三大标签的正确书写
  9. eclipse14配置tomcat Server Locations
  10. PHP自定义查询,php – 实体字段类型自定义查询参数