USB摄像头桥接方法和云终端转让专利

申请号 : CN202310639076.8

文献号 : CN116366928B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王海峰

申请人 : 南京美乐威电子科技有限公司

摘要 :

本发明公开了一种USB摄像头桥接方法,应用于云服务系统,通过在云终端的OTG端口实现虚拟摄像头驱动,将云终端所连接的物理摄像头采集的视频数据提供给虚拟摄像头驱动,将OTG端口作为虚拟摄像头通过USB端口连接至云终端,云终端将虚拟摄像头映射到云服务器,OTG端口通过bulk传输模式传送视频数据,利用bulk传输模式的握手机制保证了云终端对视频数据的获取,若因网络导致云服务器无法有效接收视频数据时,云终端可以重新发送视频数据以减少丢帧和卡顿情况。

权利要求 :

1.一种USB摄像头桥接方法,应用于云服务系统,所述云服务系统包括云服务器和云终端,所述云终端包括OTG端口、第一USB端口和第二USB端口,所述第一USB端口连接物理摄像头,其特征在于,所述OTG端口连接所述第二USB端口,该方法包括以下步骤:(1)所述云终端接收所述物理摄像头采集的视频数据;

(2)在所述OTG端口处实现虚拟摄像头驱动,形成虚拟摄像头;

(3)所述云终端将所述物理摄像头采集的视频数据写入所述虚拟摄像头,基于USB协议,所述虚拟摄像头通过所述OTG端口向所述第二USB端口发送视频数据;所述OTG端口与所述第二USB端口之间采用Bulk模式传输视频数据;

(4)基于USB/IP协议,所述云终端将所述第二USB端口映射到所述云服务器上,并将所述第二USB端口接收的视频数据发送至所述云服务器。

2.根据权利要求1所述的USB摄像头桥接方法,其特征在于,所述云终端根据所述云服务系统的实时网络状态,对所述物理摄像头采集的视频数据进行属性修改后再写入所述虚拟摄像头,所述属性修改包括传输帧率和/或分辨率。

3.根据权利要求1所述的USB摄像头桥接方法,其特征在于,在所述第二USB端口处实现USB主机驱动,则所述虚拟摄像头通过所述OTG端口向所述第二USB端口发送视频数据,包括以下步骤:所述USB主机驱动根据预设判断准则向所述虚拟摄像头驱动发送ACK握手信号;

所述虚拟摄像头驱动接收到所述ACK握手信号后,向所述USB主机驱动发送下一轮视频数据。

4.根据权利要求3所述的USB摄像头桥接方法,其特征在于,所述预设判断准则为所述云终端接收到所述云服务器发送的数据接收确认指令。

5.根据权利要求3所述的USB摄像头桥接方法,其特征在于,若所述虚拟摄像头驱动未接收到所述USB主机驱动发送的ACK握手信号,则重新发送本轮视频数据。

6.一种云终端,与云服务器配合使用,所述云终端包括OTG端口、第一USB端口和第二USB端口以及存储模块和控制模块;其特征在于,所述第一USB端口用于连接物理摄像头,所述OTG端口与所述第二USB端口连接;所述OTG端口处实现有虚拟摄像头驱动,形成虚拟摄像头;

所述存储模块内存储有控制程序,所述控制模块执行所述控制程序时,所述云终端将所述物理摄像头采集的视频数据写入所述虚拟摄像头,所述虚拟摄像头基于USB协议通过所述OTG端口向所述第二USB端口发送视频数据;基于USB/IP协议,所述云终端将所述第二USB端口映射到所述云服务器上,并将所述第二USB端口接收的视频数据发送至所述云服务器。

7.根据权利要求6所述的云终端,其特征在于,基于USB协议,所述控制模块控制所述OTG端口处运行虚拟摄像头驱动,控制所述第二USB端口运行USB主机驱动,所述虚拟摄像头驱动和所述USB主机驱动支持标准UVC接口。

8.根据权利要求6所述的云终端,其特征在于,所述云终端还包括网络模块,所述网络模块用于连接云服务器;所述控制模块控制所述网络模块基于USB/IP协议与所述云服务器通信,将所述第二USB端口接收的视频数据发送至所述云服务器。

9.根据权利要求8所述的云终端,其特征在于,若所述云服务器正确接收到所述云终端发送的视频数据,则向所述云终端的控制模块发送数据接收确认指令。

10.根据权利要求9所述的云终端,其特征在于,所述控制模块接收到所述数据接收确认指令后,控制所述OTG端口向所述第二USB端口发送下一轮视频数据;否则,控制所述OTG端口向所述第二USB端口重新发送本轮视频数据。

说明书 :

USB摄像头桥接方法和云终端

技术领域

[0001] 本发明涉及云终端上USB设备视频数据传输领域,尤其涉及一种USB摄像头桥接方法及相应的云终端。

背景技术

[0002] 虚拟云桌面凭借灵活性、可靠性、安全性、集中管理、综合成本等方面有诸多优点,在企业、教育、医疗等很多领域都有广泛的应用。虚拟云桌面应用场景下访问USB摄像头也是常见需求,例如通过USB摄像头采集证件图片等。云桌面是在云服务器上运行的虚拟桌面环境,云终端用户通过网络连接远程访问并使用云桌面中的应用程序、文件等资源,因而云终端用户想要通过云桌面访问本地的USB摄像头,需要将云终端所连接的USB摄像头映射到云桌面会话中。
[0003] 通常摄像头厂商为了保证视频画面的低延迟,会采用USB接口协议的等时传输模式(Isochronous mode)实现摄像头到云终端的数据传输,此时摄像头的角色为USB设备(USB device),云终端的角色为USB主机(USB host)。
[0004] 等时传输一般要求总线具有足够的带宽,且在数据传输时在实时性和低误码率之间牺牲了后者,此种传输方式适合某些对时间要求很高、数据量很大的应用场景,使用这种传输类型的设备有麦克风、调制解调器、音频设备等,在此类场景下,即使有少量数据出错,也不会对应用软件产生太大的影响(如音频软件)。
[0005] 在等时传输模式下,基于总线错误率较低,一般认为传送成功,USB接口协议中没有设置握手信号来指示中止,所以USB设备和USB主机在数据传输过程中从不中途停止,即使能够查到错误,实时管道也不会因此停下,USB主机也仍继续处理下一帧的数据。因此,由于实时传输的协议不支持每次事务处理都进行握手,所以错误检测的功能相对较弱。
[0006] 然而,在云终端通过互联网访问云桌面的场景下,云桌面通过USB设备映射的方式访问连接在云终端的USB摄像头时,由于网络带宽瓶颈以及网络丢包,采用等时传输方式容易导致画面丢帧和卡顿。

发明内容

[0007] 有鉴于此,针对现有云服务系统中在云桌面访问云终端连接的USB物理摄像头图像容易出现画面丢帧和卡顿的问题,本发明提供一种USB摄像头桥接方法,通过设置USB虚拟摄像头获取物理摄像头采集的视频数据,并将USB虚拟摄像头映射到云服务器,实现USB物理摄像头的桥接,提高云终端与云服务器之间视频数据传输的准确率。
[0008] 为了解决上述问题,本发明提供一种USB摄像头桥接方法,应用于云服务系统,所述云服务系统包括云服务器和云终端,所述云终端包括OTG端口、第一USB接口和第二USB端口,所述第一USB端口连接物理摄像头,所述OTG端口与所述第二USB端口连接,该方法包括以下步骤:
[0009] (1)所述云终端接收所述物理摄像头采集的视频数据;
[0010] (2)在所述OTG端口处实现虚拟摄像头驱动,形成虚拟摄像头;
[0011] (3)所述云终端将所述物理摄像头采集的视频数据写入所述虚拟摄像头,基于USB协议,所述虚拟摄像头通过所述OTG端口向所述第二USB端口发送视频数据;所述OTG端口与所述第二USB端口之间采用Bulk 传输模式;
[0012] (4)基于USB/IP协议,所述云终端将所述第二USB端口映射到所述云服务器上,并将所述第二USB端口接收的视频数据发送至所述云服务器。
[0013] 进一步,由于所述物理摄像头采集的视频数据经过云终端后才会发送给虚拟摄像头,因此所述云终端可根据所述云服务系统的实时网络状态修改视频数据的传输帧率、分辨率后再发送给所述虚拟摄像头回传至云终端的第二USB端口,可以有效降低网络带宽瓶颈对云终端与云服务器之间数据传输的影响。
[0014] 其中,在所述第二USB端口处实现USB主机驱动,则所述虚拟摄像头通过所述OTG端口向所述第二USB端口发送视频数据,包括以下步骤:
[0015] 所述USB 主机驱动根据预设判断准则向所述虚拟摄像头驱动发送ACK握手信号;
[0016] 所述虚拟摄像头驱动接收到所述ACK握手信号后,向所述USB主机驱动发送下一轮视频数据。
[0017] 其中,所述预设判断准则为所述云终端接收到所述云服务器发送的数据接收确认指令。
[0018] 其中,若所述USB设备驱动未接收到所述USB主机驱动发送的ACK握手信号,则重新发送本轮视频数据。
[0019] 相应的,本发明还公开了一种云终端,所述云终端包括OTG端口、第一USB端口和第二USB端口以及存储模块和控制模块;所述OTG端口与所述第二USB端口连接,所述第一USB端口用于连接物理摄像头;所述存储模块内存储有控制程序,所述控制模块执行所述控制程序,将从所述第一USB端口处获取的视频数据发送至所述OTG端口,再控制所述OTG端口基于USB协议将所述视频数据通过Bluk模式传输至所述第二USB端口。
[0020] 其中,基于USB协议,所述控制模块控制所述OTG端口处运行虚拟摄像头驱动,控制所述第二USB端口运行USB主机驱动,所述虚拟摄像头驱动和所述USB主机驱动支持标准UVC接口。
[0021] 进一步,所述云终端还包括网络模块,所述网络模块用于连接云服务器;所述控制模块控制所述网络模块基于USB/IP协议与所述云服务器通信,将所述第二USB端口接收的视频数据发送至所述云服务器。
[0022] 进一步,若所述云服务器正确接收到所述云终端发送的视频数据,则向所述云终端的控制模块发送数据接收确认指令。
[0023] 进一步,所述控制模块接收到所述数据接收确认指令后,控制所述OTG端口向所述第二USB端口发送下一轮视频数据;否则,控制所述OTG端口向所述第二USB端口重新发送本轮视频数据。
[0024] 与现有技术相比,本发明具有以下优势:
[0025] 本发明中USB摄像头桥接方法以及相应的云终端,通过在云终端的OTG端口实现虚拟摄像头驱动,将云终端所连接的物理摄像头采集的视频数据提供给虚拟摄像头驱动,将OTG端口作为虚拟摄像头通过Bulk传输模式将图像数回传至云终端,云终端将虚拟摄像头映射到云服务器,实现物理摄像头的桥接;通过设置虚拟摄像头,并利用Bulk传输模式的握手机制保证了云终端对视频数据的获取,若因网络导致云服务器无法有效接收视频数据时,云终端可以重新发送视频数据,在无需修改现有常见物理摄像头采用Isochronous模式传输视频数据的情况下,在网络带宽瓶颈以及网络丢包等网络状态不佳的情况下,云终端能够将视频数据有效地传输给云服务器,减少画面丢帧和卡顿现象。

附图说明

[0026] 图1是本发明云服务系统中云终端将本地物理摄像头桥接至云服务器的流程示意图;
[0027] 图2是本发明中云服务系统示意图;
[0028] 图3是USB协议中主机端与设备端的通信框架图。实施方式
[0029] 下面结合实施例对本发明作更进一步的说明。
[0030] 本发明中物理摄像头与虚拟摄像头为相对概念,二者均遵守USB协议规定,物理摄像头包含具有图像采集功能的硬件,虚拟摄像头不包含具有图像采集功能的硬件。本发明中第一USB端口和第二USB端口在功能上没有任何区别,第一、第二仅为了区别相同种类中的不同个体,并非对端口功能或级别的限定。
[0031] 结合图1和图2所示,云服务系统包括云终端和云服务器,云终端上设置有第一USB端口、第二USB端口和USB OTG端口,第一USB端口上连接有物理摄像头,OTG端口与第二USB端口连接;云终端还包括存储模块、控制模块和网络模块,存储模块用于存储控制程序,控制模块执行控制程序控制其余各模块、各接口实现相应功能,网络模块用于与云服务器之前进行网络通信。云终端可通过云桌面访问云服务器上运行的应用程序,云终端想要访问本地物理摄像头采集的视频数据,需要先将本地物理摄像头映射至云服务器,再通过云桌面进行访问。本发明中不是直接将物理摄像头映射至云服务器,而是通过USB OTG端口将物理摄像头桥接至云服务器。
[0032] 本发明中将支持USB协议的物理摄像头称为USB摄像头。具体的,本发明中的USB摄像头桥接方法包括以下步骤:
[0033] (1)云终端通过第一USB端口接收物理摄像头采集的视频数据;
[0034] (2)在OTG端口处实现虚拟摄像头驱动,形成虚拟摄像头;
[0035] (3)云终端将物理摄像头采集的视频数据data写入虚拟摄像头驱动,基于USB协议,虚拟摄像头通过OTG端口向第二USB端口发送视频数据data;OTG端口与第二USB端口之间采用Bulk 传输模式;
[0036] (4)基于USB/IP协议,云终端将第二USB端口映射到云服务器上,并将第二USB端口接收的视频数据data发送至云服务器。
[0037] 具体实现时,根据USB视频捕获设备定义的协议标准(UVC,USB Video Class)规定,在云终端的第一USB端口和第二USB端口实现UVC 驱动(UVC driver),以云终端作为(USB host),可获取连接在第一USB端口和第二USB端口处的设备发送的视频数据。
[0038] 根据UVC协议,UVC driver适用于符合USB视频类规范的摄像头设备,包括V4L2内核设备驱动,V4L2能够提供视频相关的一些应用程序编程接口(API,Application Programming Interface),API实际上就是一系列read、write、open、ioctl等函数。具体实现时,上述步骤(1)中,可在云终端实现应用程序(图示UVC Bridge)依次通过库、内核、驱动程序、硬件设备调用这些API来获取视频数据。物理摄像头作为USB设备(USB device),依据USB协议与第一USB端口之间传输数据,因为物理摄像头多应用在时间严格并具有较强容错性的流数据传输场景下,或者用于要求恒定的数据传输率的即时应用中,一般采用等时传输模式(Isochronous模式),传输模式在摄像头出厂时就已固定。
[0039] 根据USB OTG(USB On‑The‑Go )协议,OTG端口可以实现设备控制器和主机控制器,本发明用OTG端口实现设备控制器;如图3所示,根据USB协议,主机端主要包括:类设备驱动层(Class driver),包含标准接口协议,如mass sotrage、CDC、 HID、UVC等,USB 设备驱动层(USB device driver)和主机控制器驱动层(HDC)。相应的,设备端主要包括:设备功能驱动层(Function driver),对应主机端的类设备驱动层;Gadget设备驱动层(Gadget device driver),向下通过USB Gadget Interface直接和UDC通信,建立链接;向上通过Compsite Framwork提供通用接口,屏蔽USB请求以及传输细节;以及设备控制器驱动层(UDC,USB device controller),直接处理USB设备控制器,与主机控制器驱动层之间根据USB协议进行数据传输。设备功能驱动层具有整个Gedget设备驱动的入口legacy和各种USB子类设备功能驱动functions,其作用是配置USB子类协议的接口描述以及其他子类协议,比如UVC接口协议。
[0040] 根据USB协议,批量传输模式(Bulk模式)多应用于传输和接收数据量较大、没有带宽和间隔时间要求的情况下,采用此类传输方式的设备适合于传输非常慢和大量被延迟的传输,可以等到所有其它类型的数据的传输完成之后再传输和接收数据。总而言之,Bulk模式具有握手机制,可以保证数据传输。
[0041] 在具体实现时,本发明结合USB OTG协议和USB协议规定,在云终端的OTG端口实现USB设备驱动,根据功能称之为虚拟摄像头驱动(图示UVC Gadget driver),形成一个虚拟USB设备,即虚拟摄像头,在设备功能驱动层配置设备描述信息以及支持的协议,本发明中设备描述信息包括VID和HID,作为该虚拟摄像头的身份标识,支持的协议包括UVC;相应的,在第二USB端口,云终端作为USB主机,其类设备驱动层配置为UVC driver。
[0042] 在云终端实现应用程序(图示UVC Bridge),将从物理摄像头获取的视频数据进行缓存,再调用USB Gadget驱动的API从缓存中提取数据,结合图3所示,本发明中云终端作为USB主机,主机控制驱动层HDC与设备控制器驱动层UDC之间采用Bulk模式进行视频数据的传输。
[0043] 由于物理摄像头采集的视频数据data经过云终端后才会发送给虚拟摄像头,因此作为一种实施方式,云终端的应用程序(图示UVC Bridge)还可根据云服务系统的实时网络状态修改视频数据的传输帧率、分辨率等属性后再发送给虚拟摄像头回传至云终端的第二USB端口,可以有效降低网络带宽瓶颈对云终端与云服务器之间数据传输的影响,以保证在有限的带宽下,达到最佳传输效果。
[0044] 如图1所示,根据USB/IP协议,可以在网络上共享和传输USB设备,使远程计算机能够访问本地计算机上连接的USB设备。USB/IP方案包括两个组件:USB/IP服务器(USB/IP Server)和USB/IP客户端(USB/IP Client);USB/IP服务器运行在本地计算机上并负责将USB设备转换为TCP/IP流;USB/IP客户端运行在远程计算机上并负责接收TCP/IP流,并将其还原为原始的USB数据。
[0045] 本发明中依据USB/IP协议,将云终端作为USB/IP服务器,云服务器作为USB/IP客户端,将第二USB端口映射至云服务器,在云服务器端实现与云终端对应的USB主机驱动(图示UVC driver),如此云服务器端的应用程序便可获取到虚拟摄像头传递的视频数据,实现物理摄像头的桥接。
[0046] 上述云终端的各端口、网络模块的数据传输过程通过控制程序来实现,控制模块执行控制程序,控制OTG端口处运行虚拟摄像头驱动,第二USB端口运行USB主机驱动;将从第一USB端口处获取的视频数据发送至OTG端口,再控制OTG端口基于USB协议将视频数据通过Bluk模式传输至第二USB端口;并控制网络模块与云服务器基于USB/IP协议进行网络通信,实现第二USB端口的映射。
[0047] 作为一种实施方式,在云终端与云服务器之间设定数据接收确认指令,云服务器判断接收到的数据是否符合误码率要求,如果符合则向云终端的控制模块发送数据接收确认指令,控制模块接收到数据接收确认指令后,控制OTG端口向第二USB端口发送下一轮视频数据;否则,控制OTG端口向第二USB端口重新发送本轮视频数据。具体的,由运行在第二USB端口处的USB主机驱动的主机控制驱动层HDC与运行在OTG端口处的USB 设备驱动(即虚拟摄像头驱动)的设备控制器驱动层UDC通过ACK握手信号实现。USB 主机驱动将是否接收到数据接收确认指令作为判断准则,若接收到数据接收确认指令后,则向虚拟摄像头驱动发送ACK握手信号;虚拟摄像头驱动接收到USB主机驱动发送的ACK握手信号后再发送下一轮视频数据,若虚拟摄像头驱动未接收到USB主机驱动发送的ACK握手信号,则重新发送本轮视频数据,保证数据传输的可靠性。
[0048] 以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。