摄像头视频推流装置及方法与流程

文档序号:17008619发布日期:2019-03-02 02:08阅读:3497来源:国知局
摄像头视频推流装置及方法与流程

本发明涉及视频推流技术领域,尤其涉及一种摄像头视频推流装置及方法。



背景技术:

在机器人领域,usb摄像头使用范围很广泛。usb摄像头安装于机器人本体,其采集的视频流需要推送到上位机或者云端。

对于linux操作系统,在进行推流前首先需要知道当前usb摄像头的节点编号/dev/video*;但是,由于机器人本体控制板存在多个usb端口,当usb摄像头改变连接的usb端口时,对应的video编号就会发生改变,因此需要将usb摄像头与usb端口做固定关联,不能随意切换;当usb摄像头出现误插时,会产生连接错误进而造成推流失败。

目前,基于android系统的手机内置摄像头与外置usb摄像头切换时,需要首先关闭当前摄像头的活动,然后重启后再加载配置切换后摄像头的抽象硬件层,避免不良现象的发生。它实现的是不同摄像头之间的切换。

因此,针对以上不足,需要提供一种视频推送技术,来实现usb摄像头的热插拔功能,并可随意切换usb端口进行连接,从而降低操作人员的误操作,并实现多通路视频的自动推流。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术中usb摄像头在切换连接不同的usb端口使video编号改变时,系统由于无法实现热插拔功能会造成推流失败的缺陷,提供一种摄像头视频推流装置及方法。

为了解决上述技术问题,本发明提供了一种摄像头视频推流装置,包括:

标识读取模块,用于读取usb端口的摄像头标识信号;

配置调用模块,用于根据摄像头标识信号调取相应usb端口的推流配置;

视频流推送模块,用于读取摄像头的视频数据给所述推流配置,通过推流配置实现视频流推送。

在根据本发明所述的摄像头视频推流装置中,所述摄像头标识信号包括usb端口的id_path信号。

在根据本发明所述的摄像头视频推流装置中,所述id_path信号通过定时器监控线程的监测获得。

在根据本发明所述的摄像头视频推流装置中,所述id_path信号通过定时器监控线程对所有摄像头的video*定时依次扫描获得。

在根据本发明所述的摄像头视频推流装置中,所述定时器监控线程通过python脚本启动。

在根据本发明所述的摄像头视频推流装置中,所述定时器监控线程通过命令udevadminfo–name=/dev/video*检索获得摄像头的video*,再通过摄像头的video*确定相应usb端口的id_path信号;所述*表示摄像头的顺序编号。

在根据本发明所述的摄像头视频推流装置中,所述推流配置通过shell脚本完成视频流推送。

本发明还提供了一种摄像头视频推流方法,包括:

用于读取usb端口的摄像头标识信号的步骤;

用于根据摄像头标识信号调取相应usb端口的推流配置的步骤;

用于读取摄像头的视频数据给所述推流配置,通过推流配置实现视频流推送的步骤。

在根据本发明所述的摄像头视频推流方法中,所述摄像头标识信号包括usb端口的id_path信号,所述id_path信号通过定时器监控线程的监测获得。

本发明还提供了一种计算机可读存储介质,存储有程序代码,所述程序代码被处理器执行时实现所述摄像头视频推流方法的步骤。

实施本发明的摄像头视频推流装置及方法,具有以下有益效果:本发明通过对摄像头所在系统的usb端口进行监测,获得摄像头与usb端口的连接状态信息,然后对应连接有摄像头的usb端口进行推流配置,可实现摄像头与usb端口的热插拔和随意切换,而不影响视频推流的实现。

本发明装置及方法的实现避免了摄像头与usb端口误连接造成的推流失败,可以实现多路摄像头视频的自动推流。

附图说明

图1为根据本发明的摄像头视频推流装置的示例性框图;

图2为根据本发明的摄像头视频推流方法的示例性流程图;

图3为根据本发明的摄像头视频推流方法的一实施例的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

具体实施方式一、本发明的第一方面提供了一种摄像头视频推流装置,参见图1,该装置可以设置于终端设备中,例如,该装置可以设置于计算机中。本发明实施方式的装置100可以包括下述组成模块:

标识读取模块110,用于读取usb端口的摄像头标识信号;

配置调用模块120,用于根据摄像头标识信号调取相应usb端口的推流配置;

视频流推送模块130,用于读取摄像头的视频数据给所述推流配置,通过推流配置实现视频流推送。

首先,使摄像头连接本体,所述本体可以为机器人,使机器人的所有usb端口具有唯一标识;并使每个usb端口在连接摄像头后,可以被标识读取模块110读取到usb端口的摄像头标识信号,如果检测不到某个usb端口的摄像头标识信号,则表明该usb端口没有连接摄像头。

本实施方式用于视频流数据的推流,其中所述摄像头原则上可以是任何可以进行视频采集的装置,例如可以是数码相机,也可以是监控器。

作为示例,可以设置每读取到一次摄像头标识信号,进行一次推流上报。

在现有技术中,之所以在摄像头与usb端口误连接的情况下会发生视频推流失败,是因为usb摄像头与usb端口做固定关联,出现误插的情况时,本体无法识别摄像头,因此造成推流失败。本实施方式中,不将摄像头与usb端口作固定配置,而是通过标识读取模块110识别所有摄像头与usb端口连接的状态信息,然后对当前连接有摄像头的usb端口实时的调取推流配置,使推流与摄像头的连接变成了动态的匹配过程,当然也不必依赖于系统的重启来识别当前连接的摄像头,因此可避免操作人员的误插接造成的推流失败。

作为示例,对所述推流配置调取的过程可以通过python脚本实现。也就是说,本实施方式针对摄像头与不同usb端口的连接,可以动态的修改推流配置文件,因此,可实现摄像头与不同usb端口的热插拔。

将推流配置与摄像头标识信号进行匹配后,可以采用视频流推送模块130采集摄像头记录的视频数据,进行推流。

作为示例,标识读取模块110可以同时获得多个usb端口的摄像头标识信号,表示同时有多个usb端口连接有摄像头;例如在多场景实时监控的应用中,可实现多通路视频流的同步实时推送。

所述推流配置包括满足所有usb端口的视频流推送需求的软硬件配置的调用,因此可使得摄像头与usb端口的连接不再局限于固定的关联。

本实施方式适用于通过usb接口与本体进行连接的摄像头。

作为示例,所述摄像头标识信号包括usb端口的id_path信号。

本实施方式可以基于所述本体的linux系统实现,在linux设备上,每个usb端口具有唯一的id_path标识,标识读取模块110读取到的id_path标识表明了相应usb端口连接有摄像头,将读了到的id_path标识与usb端口做匹配,即可确定摄像头的连接状态。

所述摄像头标识信号可以是对每个usb端口预设置的人为编号,只要根据此编号能够唯一确定摄像头的连接端口即可。

作为示例,所述id_path信号通过定时器监控线程的监测获得。

本实施方式可通过定时器监控线程对usb端口与摄像头当前的连接状态进行自动检测,使当前连接摄像头的视频流能实现自动推流。

作为示例,所述id_path信号通过定时器监控线程对0-n个/dev/videon定时依次扫描获得。

本实施方式中,当摄像头与某个usb端口连接后,标识读取模块能够首先获取该摄像头的video号,获得video号即表明该usb端口有摄像头连接,进而再通过video号与相应usb端口的id_path进行匹配,确定id_path。

所述定时器监控线程可以定时扫描摄像头与每个usb端口连接后产生的video号,其中定时周期可以根据实际使用需求进行设定。

作为示例,所述定时器监控线程通过python脚本启动。

本实施方式可以通过python脚本控制定时器监控线程的工作,包括启动和停止。

作为示例,所述定时器监控线程通过命令udevadminfo–name=/dev/video*检索获得摄像头的video*,再通过摄像头的video*确定相应usb端口的id_path信号;所述*表示摄像头的顺序编号。

定时器监控线程可定时扫描所有usb端口的video*:

作为示例,如果摄像头的数目为11个,则video*中*=0,1,2,……10,定时器监控线程定时扫描每个usb端口是否产生video0到video10之间的video*,若检索到video*,则可进一步获得相应usb端口的id_path信号;检索到id_path信号的usb端口表示连接有摄像头,调用相应的推流配置,通过推流指令可实现视频流的推送;否则,该usb端口未连接摄像头。

所述定时器监控线程可以循环判断0-n,n=10的video是否对应连接了usb端口,基于此实现了摄像头的热插拔和随意切换;当多个摄像头在usb之间进行切换,播放端只需要对应端口后修改配置即可接收和播放视频流。

作为示例,所述推流配置通过shell脚本完成视频流推送。

本发明装置可以在自动检测usb摄像头的基础上实现推流;其各个模块功能的实现语言可以采用python+shell脚本实现;硬件可以采用基于linux系统的树莓派3b+,和h.264usb摄像头;包括通过python脚本完成推流配置的调取和定时器监控线程的启动,通过shell脚本完成usb视频推流。

本发明装置能够实现linux设备端口上usb摄像头的即时视频重连;对于usb摄像头在不同usb端口的插拔,只需修改推流配置文件。通过修改配置文件、usb摄像头和usb端口的映射关系来实现视频推流传输;经采用树莓派和h.264usb摄像头进行验证,本发明装置能够实现很好的实现视频自动推流。

此外,本公开的实施例还提供一种电子设备,该电子设备被配置成包括如上所述摄像头视频推流装置。所述电子设备可以是计算机。

具体实施方式二、本发明的另一方面还提供了一种摄像头视频推流方法,结合图2所示的示例性处理流程200,包括:

用于读取usb端口的摄像头标识信号的步骤210;

用于根据摄像头标识信号调取相应usb端口的推流配置的步骤220;以及

用于读取摄像头的视频数据给所述推流配置,通过推流配置实现视频流推送的步骤230。

首先,使摄像头连接本体,所述本体可以为机器人,使机器人的所有usb端口具有唯一标识;并使每个usb端口在连接摄像头后,可以被步骤210读取到usb端口的摄像头标识信号,如果检测不到某个usb端口的摄像头标识信号,则表明该usb端口没有连接摄像头。

本实施方式用于视频流数据的推流,其中所述摄像头原则上可以是任何可以进行视频采集的装置,例如可以是数码相机,或者为监控器。

作为示例,可以设置每读取到一次摄像头标识信号,进行一次推流上报。

在现有技术中,之所以在摄像头与usb端口误连接的情况下会发生视频推流失败,是因为usb摄像头与usb端口做固定关联,出现误插的情况时,本体无法识别摄像头,因此造成推流失败。本实施方式中,不将摄像头与usb端口作固定配置,而是通过步骤210识别所有摄像头与usb端口连接的状态信息,然后对当前连接有摄像头的usb端口实时的调取推流配置,使推流与摄像头的连接变成了动态的匹配过程,当然也不必依赖于系统的重启来识别当前连接的摄像头,因此可避免操作人员的误插接造成的推流失败。

作为示例,对所述推流配置调取的过程可以通过python脚本实现。也就是说,本实施方式针对摄像头与不同usb端口的连接,可以动态的修改推流配置文件,因此,可实现摄像头与不同usb端口的热插拔。

将推流配置与摄像头标识信号进行匹配后,可以采用步骤230采集摄像头记录的视频数据,进行推流。

作为示例,步骤210可以同时获得多个usb端口的摄像头标识信号,表示同时有多个usb端口连接有摄像头;例如在多场景实时监控的应用中,实现多通路视频流的实时推送。

所述推流配置包括满足所有usb端口的视频流推送需求的软硬件调用的配置,因此可使得摄像头与usb端口的连接不再局限于固定的关联。

本实施方式适用于通过usb接口与本体进行连接的摄像头。

作为示例,所述摄像头标识信号包括usb端口的id_path信号,所述id_path信号通过定时器监控线程的监测获得。

本实施方式可以基于所述本体的linux系统实现,在linux设备上,每个usb端口具有唯一的id_path标识,步骤210读取到的id_path标识表明了相应usb端口连接有摄像头,将读了到的id_path标识与usb端口做匹配,即可确定摄像头的连接状态。。

所述摄像头标识信号也可以是对每个usb端口预设置的人为编号,只要根据此编号能够唯一确定摄像头的连接端口即可。

本实施方式可通过定时器监控线程对usb端口与摄像头当前的连接状态进行自动检测,使当前连接摄像头的视频流能实现自动推流。

作为示例,所述id_path信号通过定时器监控线程对0-n个/dev/videon定时依次扫描获得。

所述定时器监控线程可以定时扫描摄像头与每个usb端口连接后产生的video号,其中定时周期可以根据实际使用需求进行设定。

作为示例,所述定时器监控线程通过python脚本启动。

本实施方式可以通过python脚本控制定时器监控线程的工作,包括启动和停止。

作为示例,所述定时器监控线程通过命令udevadminfo–name=/dev/video*检索获得摄像头的video*,再通过摄像头的video*确定相应usb端口的id_path信号;所述*表示摄像头的顺序编号。

定时器监控线程可定时扫描所有usb端口的video*:

作为示例,如果摄像头的数目为11个,则video*中*=0,1,2,……10,定时器监控线程定时扫描每个usb端口是否产生video0到video10之间的video*,若检索到video*,则可进一步获得相应usb端口的id_path信号;检索到id_path信号的usb端口表示连接有摄像头,调用相应的推流配置,通过推流指令可实现视频流的推送;否则,该usb端口未连接摄像头。

所述定时器监控线程可以循环判断0-n,例如n=10的video是否对应连接了usb端口,进而实现摄像头的热插拔和随意切换,多个摄像头在usb之间进行切换,播放端只需要对应端口后修改配置即可接收和播放视频流。

作为示例,所述推流配置可通过shell脚本完成视频流推送。

下面结合图3对本发明方法进一步说明:

首先,使设备处于步骤210和步骤220可实施状态,并启动定时器监控线程;

定时器监控线程对所述本体的n个/dev/video*进行扫描,首先对进行第一个video号的扫描,此时n=0;检索此端口是否有摄像头连接,如果有,则执行步骤210,然后进行下一个video号的扫描;否则直接进行下一个video号扫描,直到完成全部video号的扫描;然后根据定时器的定时时长,再进入下一轮的video号(id_path)扫描。

此外,本公开的实施例还提供一种计算机可读存储介质,存储有程序代码,所述程序代码被处理器执行时实现上述方法实施方式中所记载的各步骤。

综上所述,本发明能够实现usb摄像头在linux设备上不同usb端口进行热插拔,而且可以实现多个usb摄像头同步的随意插拔,并不影响视频流的正常推送;将本发明使用于视频推流中,更便于用户对摄像头的管理。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1