一种动态虚拟摄像头映射方法和系统与流程

文档序号:12494758阅读:432来源:国知局
一种动态虚拟摄像头映射方法和系统与流程

本发明涉及计算机信息技术领域,特别涉及一种动态虚拟摄像头映射方法和系统。



背景技术:

随着计算机信息技术的发展,逐渐出现了一种使用远程摄像头设备的场景,就是通过一台本地终端设备,将连接在终端上的USB摄像头设备,映射给远程主机使用,远程主机中的摄像头应用软件能像使用本地设备一样,使用终端上的USB摄像头设备,这种应用方式被称为USB摄像头映射。

目前大多数虚拟摄像头技术,只会在远程主机中虚拟出永久的、具有固定属性的虚拟摄像头设备,不能动态的适应终端上实际安装的摄像头设备的属性参数,例如设备的名称、PID、VID等信息,导致和这些信息绑定的摄像头专用应用程序无法识别虚拟摄像头,从而无法兼容使用,在实际使用中很不方便。

例如,公开号为CN104199723A的专利,提供了一种基于虚拟设备的摄像头映射方法,使得用户应用程序可以如本地操作摄像头一样操作虚拟摄像头。但是其不能获取本地摄像头的物理属性信息,同时在Windows系统中创建与所述物理属性信息相该同的虚拟摄像头来实现映射;因此兼容性差,某些专用的摄像头应用软件不能使用。



技术实现要素:

针对以上问题,本发明专利目的在于设计了一种动态虚拟摄像头映射方法和系统,将USB摄像头设备以虚拟摄像头的方式动态地在映射到另一台主机上使用,一方面由于虚拟摄像头设备保持了和USB摄像头相同的设备名称、PID和VID等属性信息,从而确保了和应用模块的良好兼容性,另一方面可以根据网络带宽选择需要的视频转化格式,方便不同场景的使用。

本发明具体的技术方案如下:

一种动态虚拟摄像头映射方法,包括:

步骤S101,服务端和客户端建立通讯连接;

步骤S102,服务端检测其是否连接有USB摄像头设备,当检查到连接有USB摄像头设备时,向客户端发送摄像头设备的插入信息以及摄像头设备的属性信息,所述属性信息包括设备名称、设备PID和设备VID;

步骤S103,客户端在接收到服务端发送的摄像头设备的插入信息和属性信息后,将服务端支持的视频转化格式并添加到所述属性信息中,合并保存为设备描述信息;

步骤S104,客户端向USB虚拟总线模块发送所述摄像头设备的插入消息和所述设备描述信息,USB虚拟总线模块根据所述设备描述信息创建与所述摄像头设备对应的虚拟摄像头设备;

步骤S105,摄像头应用模块通过所述虚拟摄像头设备使用对应的USB摄像头设备;

步骤S106,当移除USB摄像头设备时,服务端将通知客户端和USB虚拟总线模块根据所述摄像头设备对应的属性信息自动删除对应的虚拟摄像头设备;具体包括:

当移除摄像头设备时,服务端将自动检查到USB摄像头设备的移除信息,并向所述客户端发送所述移除信息和所述摄像头设备对应的属性信息;

客户端接收到所述移除信息后,向USB虚拟总线模块发送所述移除信息和对应的所述属性信息;

USB虚拟总线模块在接收到所述移除信息和属性信息后,根据所述属性信息删除对应的虚拟摄像头设备。

进一步,本发明所述摄像头应用模块通过所述虚拟摄像头设备使用对应的USB摄像头设备,具体包括:

虚拟摄像头设备将请求视频数据的请求消息经USB虚拟设备总线发送给客户端,所述请求消息包括摄像头设备的属性信息和所请求的视频格式;

客户端将所述请求消息发送给服务端,服务端在收到所述请求消息后,获取对应的USB摄像头设备的视频数据;

服务端接收到USB摄像头设备的视频数据后将所述视频数据发送给客户端,客户端收到所述视频数据后,将视频数据经USB虚拟总线和虚拟摄像头设备发送给所述摄像头应用模块。

进一步,本发明所述服务端接收到USB摄像头设备的视频数据后将所述视频数据发送给客户端,进一步包括:

所述服务端根据客户端请求的视频格式,决定是否需要执行视频格式转换;如果服务端获取的视频数据的视频格式与客户端所请求的格式一致,服务端直接将所述视频数据发送到客户端;如果获取的视频数据的视频格式与请求的格式不一致,服务端将所述视频数据转化为客户端所请求的格式后,再发送给客户端。

进一步,本发明所述服务端和客户端建立通讯连接,具体包括:

客户端初始化运行,并根据配置的服务端的地址,发起连接请求,如果连接成功,客户端和服务端建立持久化的通讯连接;如果连接失败,客户端每隔一段时间尝试重复发起连接请求;

服务端初始化运行,并根据配置的客户端的地址,发起连接请求,如果连接成功,客户端和服务端建立持久化的通讯连接;如果连接失败,服务端进入侦听状态,等待客户端发起所述的连接请求。

一种动态虚拟摄像头映射系统,包括服务端模块、客户端模块、USB虚拟总线模块、虚拟摄像头设备模块;

所述服务端模块用于检测其是否连接有USB摄像头设备,当检查到连接有摄像头设备时,向客户端模块发送摄像头设备的插入信息以及摄像头设备的属性信息,所述属性信息包括设备名称、设备PID和设备VID;

所述客户端模块用于在接收到服务端发送的摄像头设备的插入信息和属性信息后,获取所述服务端支持的视频转化格式并添加到所述属性信息中,合并保存为设备描述信息;以及向USB虚拟总线模块发送所述摄像头设备的插入消息和所述设备描述信息;

所述USB虚拟总线模块用于根据所述设备描述信息创建与所述摄像头设备对应的虚拟摄像头设备模块。

进一步,本发明所述服务端模块和客户端模块进一步包括:当移除USB摄像头设备时,服务端模块将通知客户端模块和USB虚拟总线模块根据所述摄像头设备对应的属性信息自动删除对应的虚拟摄像头设备。

进一步,本发明所述摄像头应用模块进一步包括:

所述摄像头应用模块将请求视频数据的请求消息经USB虚拟总线模块发送给客户端模块,所述请求消息包括摄像头设备的属性信息和所请求的视频格式;

客户端模块将所述请求消息发送给服务端模块,服务端模块在收到所述请求消息后,获取对应的USB摄像头设备的视频数据;

服务端模块接收到USB摄像头设备的视频数据后将所述视频数据发送给客户端模块,客户端模块收到所述视频数据后,将视频数据发送给所述摄像头应用模块

本发明提供的动态虚拟摄像头映射方法实现了虚拟摄像头设备的动态创建和移除,同时保持和实际摄像头的设备名称、PID、VID一致;一方面可以最大限度的兼容USB摄像头专用的应用程序,另一方面可以根据网络质量选择合适的视频传输格式,适用范围广。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是本发明一种动态虚拟摄像头映射方法的流程图;

图2是本发明一种动态虚拟摄像头映射系统的模块图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步的详细说明。

本发明提出了一种动态虚拟摄像头映射方法,该方法将连接在A主机上的USB摄像头设备,通过网络映射到另一台B主机中作为虚拟摄像头使用,并保持虚拟摄像头与A主机上的USB摄像头设备的名称、PID、VID等基本设备属性不变。该方法具体包括:

A主机和B主机之间建立持久化的通讯消息传输通道;

B主机能动态发现A主机上摄像头设备插入和移除的事件;

当检测到A主机有摄像头设备插入事件,B主机通过A主机获取USB摄像头设备的属性,并且在B主机中创建一个设备名称、PID、VID相同的虚拟摄像头设备;

当B主机中的摄像头应用模块打开虚拟摄像头设备时,B主机向A主机发送视频流请求消息,其中包括视频编码格式参数;当A主机收到B主机的视频流请求消息时,将按照相应的视频编码格式要求,将对应的USB摄像头设备视频数据发送给B主机;

当A主机检测到有摄像头设备移除事件,A主机将通知B主机删除对应的虚拟摄像头设备。

请参阅图1,本实施例具体包括如下步骤:

步骤S101,A主机上的服务端和B主机上的客户端建立通讯连接。

具体包括:

客户端初始化运行,并根据配置的服务端的地址,发起连接请求,如果连接成功,客户端和服务端建立持久化的通讯连接;如果连接失败,客户端每隔一段时间尝试重复发起连接请求;

服务端初始化运行,并根据配置的客户端的地址,发起连接请求,如果连接成功,客户端和服务端建立持久化的通讯连接;如果连接失败,服务端进入侦听状态,等待客户端发起所述的连接请求。

步骤S102,服务端检测其是否连接有USB摄像头设备,当检查到连接有摄像头设备时,向客户端发送摄像头设备的插入信息以及摄像头设备的属性信息,所述属性信息包括设备名称、设备PID和设备VID。

步骤S103,客户端在接收到服务端发送的摄像头设备的插入信息和属性信息后,将所述服务端支持的视频转化格式,合并保存为设备描述信息。具体的,例如USB摄像头设备支持YUV的视频数据格式,但是服务端既支持YUV转H.264,也支持YUV转MJPG格式,客户端将把MJPG和H.264的视频格式属性添加到设备描述信息中保存,代表该虚拟摄像头设备可以提供YUV、H.264和MJPG的视频数据格式。

步骤S104,客户端向USB虚拟总线模块发送所述摄像头设备的设备描述信息,USB虚拟总线模块根据所述设备描述信息创建与所述摄像头设备对应的虚拟摄像头设备。

步骤S105,摄像头应用模块通过使用所述虚拟摄像头设备使用USB摄像头设备。

虚拟摄像头设备创建完成后,B主机上的摄像头应用模块就可以使用虚拟摄像头设备,具体包括:

运行在B主机上的摄像头应用模块通过USB设备读写接口打开虚拟摄像头设备,摄像头应用模块通过USB虚拟总线模块将请求视频数据的请求消息发送给客户端,所述请求消息包括摄像头设备的属性信息和所请求的视频格式;

客户端将所述请求消息发送给服务端,服务端在收到所述请求消息后,通过USB设备读写接口读取对应的USB摄像头设备的视频数据;

服务端接收到USB摄像头设备的视频数据后将所述视频数据发送给客户端,客户端收到所述视频数据后,将视频数据经USB虚拟总线模块和虚拟摄像头设备模块后,发送给所述摄像头应用模块。

所述服务端根据客户端请求的视频格式,决定是否需要执行视频格式转换;如果服务端获取的视频数据的视频格式与客户端所请求的格式一致,服务端直接将所述视频数据发送到客户端;如果获取的视频数据的视频格式与请求的格式不一致,服务端将所述视频数据转化为客户端所请求的格式后,再发送给客户端。

步骤S106,当移除摄像头设备时,服务端将通知客户端和USB虚拟总线模块根据所述摄像头设备对应的属性信息自动删除对应的虚拟摄像头设备。

具体的,当在A主机上移除USB摄像头设备时,服务端将自动检查到USB摄像头设备的移除信息,并向所述客户端发送所述移除信息和所述摄像头设备对应的属性信息,所述属性信息包括设备名称、设备PID和设备VID;

客户端接收到所述移除信息后,向USB虚拟总线模块发送所述移除信息和对应的所述属性信息;

USB虚拟总线模块在接收到所述移除信息和属性信息后,根据所述属性信息删除对应的虚拟摄像头设备。

一种动态虚拟摄像头映射系统,请参阅图2,本实施例包括服务端模块、客户端模块、USB虚拟总线模块、虚拟摄像头设备模块和摄像头应用模块。

服务端模块安装在A主机上,可以检测A主机上的USB摄像头设备的插入和移除事件,并且通过USB接口读写摄像头设备;

客户端模块安装在B主机上,与服务端模块建立通讯连接;

USB虚拟总线模块安装在B主机上,,可以模拟物理USB总线的运作机制,可以创建和移除虚拟摄像头设备;

所述虚拟摄像头模块安装在B主机,是指摄像头的设备程序,包含虚拟摄像头设备读写接口的驱动程序;

摄像头应用模块安装在B主机,是指使用所述USB摄像头设备的应用程序。

所述服务端模块用于检测其是否连接有USB摄像头设备,当检查到连接有摄像头设备时,向客户端模块发送摄像头设备的插入信息以及摄像头设备的属性信息,所述属性信息包括设备名称、设备PID和设备VID;

所述客户端模块用于在接收到服务端模块发送的USB摄像头设备的插入信息和属性信息后,将所述服务端模块支持的视频转化格式,合并保存为设备描述信息;以及向USB虚拟总线模块发送所述摄像头设备的插入信息和设备描述信息,

所述USB虚拟总线模块用于根据所述设备描述信息创建与所述USB摄像头设备对应的虚拟摄像头设备模块。

进一步,本发明所述服务端模块和客户端模块进一步包括:当移除USB摄像头设备时,服务端模块将通知客户端模块和USB虚拟总线模块根据所述摄像头设备对应的属性信息自动删除对应的虚拟摄像头设备。具体的,当在A主机上移除USB摄像头设备时,服务端模块将自动检查到USB摄像头设备的移除信息,并向所述客户端模块发送所述移除信息和所述摄像头设备对应的属性信息,所述属性信息包括设备名称、设备PID和设备VID;客户端模块接收到所述移除信息后,向USB虚拟总线模块发送所述移除信息和对应的所述属性信息;USB虚拟总线模块在接收到所述移除信息和属性信息后,根据所述属性信息删除对应的虚拟摄像头设备。

进一步,本发明所述虚拟摄像头设备模块在B主机上运行,提供包含USB摄像头设备读写接口的驱动程序,进一步包括:

所述摄像头应用模块将请求视频数据的请求消息经虚拟摄像头设备模块和USB虚拟总线模块发送给客户端模块,所述请求消息包括摄像头设备的属性信息和所请求的视频格式;

客户端模块将所述请求消息发送给服务端模块,服务端模块在收到所述请求消息后,获取对应的USB摄像头设备的视频数据;

服务端模块接收到USB摄像头设备的视频数据后将所述视频数据发送给客户端模块,客户端模块收到所述视频数据后,将视频数据经USB虚拟总线模块和虚拟摄像头设备模块发送给所述摄像头应用模块。

以上所述本发明的具体实施方式,并不构成对本发明保护范围的限定。任何根据本发明的技术构思所做出的各种其他相应的改变与变形,均应包含在本发明权利要求的保护范围内。

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