基于虚拟设备的摄像头映射方法
【专利摘要】一种基于虚拟设备的摄像头映射方法:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动,按照Windows系统通用驱动框架,创建一虚拟设备总线驱动;在云终端上创建摄像头操作插件,创建一客户端通信模块;虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时创建与所述物理信息相同的虚拟摄像头;Windows系统为虚拟摄像头自动加载所述虚拟摄像头驱动,虚拟摄像头即可通过虚拟摄像头驱动与Windows?DirectShow中间件通信,实现虚拟摄像头与Windows应用程序通信。本发明使得用户应用程序可以如本地操作摄像头一样操作虚拟摄像头。
【专利说明】基于虚拟设备的摄像头映射方法
【技术领域】
[0001]本发明具体涉及一种基于虚拟设备的摄像头映射方法。
【背景技术】
[0002]随着云计算技术的发展,云桌面技术被越来越广泛的使用。云桌面技术作为一种远程桌面使用技术,对外设的使用存在较多的问题,如USB外设,串并口外设等都需要通过专门的映射技术将设备映射到服务器上。现在我们常用的摄像头虽然作为一个USB设备,但是在实际应用中由于需要传输大量的图像数据,所以无法使用通用的USB映射技术在云桌面环境下使用该设备。
[0003]针对摄像头设备,现有的解决方案是基于Windows DirectShow框架,通过开发DirectShow摄像头中间件实现将终端摄像头中的数据传输到云桌面中的应用程序中使用,但是现有的技术存在以下缺点:
[0004]1、方法是依赖于Windows DirectShow框架,在该框架下实现的一个摄像头设备的中间件,在系统中无法找到实际设备
[0005]2、使用该方法实现的摄像头中间件始终为相同的一个名字,该名字在创建中间件时创建,后期无法修改
[0006]3、第三方开发的中间件与Windows系统自带的摄像头DirectShow中间件存在差异,用户应用程序一般都是在本地环境开发,使用微软标准DirectShow中间件,可能存在兼容性问题。
[0007]4、由于老的实现方法在系统中不存在硬件信息,部分应用程序在使用摄像头前会先枚举摄像头设备信息,并匹配自己公司产品,导致在很多环境下老的摄像头映射模式无法很好的配合业务系统使用。
【发明内容】
[0008]本发明所要解决的技术问题在于提供一种基于虚拟设备的摄像头映射方法,用户应用程序可以像操作实际摄像头一样操作虚拟摄像头。
[0009]本发明是通过以下技术方案解决上述技术问题的:一种基于虚拟设备的摄像头映射方法,包括虚拟摄像头的映射步骤,其操作方法如下:
[0010]步骤1:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头;
[0011]步骤2:按照Windows系统通用驱动框架,创建一虚拟设备总线驱动;所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头;
[0012]步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步;
[0013]步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头;
[0014]步骤5:ffindows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,从而实现所述虚拟摄像头与Windows应用程序的通信。
[0015]进一步地,还包括Windows应用程序调用本地摄像头的步骤,其具体操作方法如下:
[0016]步骤6:Windows应用程序通过Windows DirectShow中间件,枚举Windows系统中的虚拟摄像头,然后调用所述虚拟摄像头;
[0017]步骤7:所述虚拟摄像头驱动将Windows应用程序的调用转化成操作指令,发送给虚拟设备总线驱动,然后虚拟设备总线驱动将所述操作指令进行封装,得到数据包;
[0018]步骤8:客户端通信模块通过云桌面协议将所述数据包发给云终端上的客户端,客户端再将数据包和所述云桌面协议的解析算法一并发给摄像头操作插件;
[0019]步骤9:摄像头操作插件按照所述云桌面协议的解析算法解析数据包,获取操作指令,并按照所述操作指令操作本地摄像头,同时返回操作结果;所述操作结果依次经由摄像头操作插件、云终端上的客户端、客户端通信模块、虚拟设备总线驱动、虚拟摄像头、Windows DirectShow中间件,最后到达Windows应用程序。
[0020]进一步地,所述步骤2还包括:安装虚拟设备总线驱动,同时通过Windows命令创建虚拟设备总线节点,并指定节点加载虚拟设备总线驱动;
[0021]所述步骤5中的Windows系统为所述虚拟摄像头自动加载虚拟摄像头驱动,其具体操件方法如下:
[0022]A、虚拟设备总线驱动在创建所述虚拟摄像头时,同时在windows系统的注册表中创建虚拟摄像头节点信息;
[0023]B、虚拟设备总线驱动通过Windows即插即用设备框架,通知windows系统在所述虚拟设备总线节点下有新设备接入;
[0024]C、Windows系统在接收到所述通知后,枚举虚拟设备总线节点下所有虚拟摄像头信息,并会依据枚举到的虚拟摄像头信息到所述注册表中获取并加载虚拟摄像头驱动。
[0025]进一步地,所述步骤3中的本地摄像头的物理信息是指:本地摄像头的名称,本地摄像头的硬件ID,本地摄像头的支持分辨率,本地摄像头的图像数据。
[0026]本发明的有益效果在于:用户可以在云桌面中看到与客户端实际设备相同物理信息的虚拟摄像头;用户应用程序可以如本地操作摄像头一样操作虚拟摄像头,大大提高对用户程序的兼容性。
【专利附图】
【附图说明】
[0027]下面参照附图结合实施例对本发明作进一步的描述。
[0028]图1为本发明中的基于虚拟设备的摄像头映射系统框图。
【具体实施方式】
[0029]请参阅图1,图1为本发明中的基于虚拟设备的摄像头映射系统框图。
[0030]一种基于虚拟设备的摄像头映射方法,包括虚拟摄像头的映射步骤和Windows应用程序调用本地摄像头的步骤,所述虚拟摄像头的映射步骤的操作方法如下:
[0031]步骤1:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头;
[0032]所述虚拟摄像头驱动依照Windows系统WDM摄像头驱动框架开发,该WDM摄像头驱动框架规定摄像头驱动分为类驱动及小驱动2部分内容,本发明的虚拟摄像头驱动为小驱动部分,通过小驱动即虚拟摄像头驱动实现与Windows自带类驱动对接。小驱动即虚拟摄像头驱动的实现方法可以参照Windows DDK说明文档实现,Windows的类驱动规定了某一类型设备对Windows系统上层的固定接口及对小驱动的固定接口。
[0033]步骤2:按照Windows系统通用驱动框架,创建一虚拟设备总线驱动,安装虚拟设备总线驱动,同时通过Windows命令(即Windows命令drvin.exe,该命令为windows系统提供,用于向windows系统添加设备节点,并为设备节点指定驱动的命令)创建虚拟设备总线节点,并指定节点加载虚拟设备总线驱动;
[0034]所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头;
[0035]步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步;
[0036]本地摄像头是指实际的物理设备摄像头;本地摄像头的物理信息包括本地摄像头的名称,本地摄像头的硬件ID,本地摄像头的支持分辨率,本地摄像头的图像数据。各摄像头操作插件为各种云桌面协议的插件。
[0037]步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头;
[0038]步骤5:ffindows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,从而实现所述虚拟摄像头与Windows应用程序的通信。
[0039]所述Windows应用程序泛指所有Windows系统上操作摄像头的应用程序,如QQ,MSN,摄像头数据采集软件等需要使用到摄像头的应用程序。
[0040]所述Windows应用程序调用本地摄像头的步骤,其具体操作方法如下:
[0041]步骤6:Windows应用程序通过Windows DirectShow中间件,枚举Windows系统中的虚拟摄像头,然后调用所述虚拟摄像头;
[0042]步骤7:所述虚拟摄像头驱动将Windows应用程序的调用转化成操作指令,发送给虚拟设备总线驱动,然后虚拟设备总线驱动将所述操作指令进行封装,得到数据包;
[0043]步骤8:客户端通信模块通过云桌面协议(如RDP,ICA, PCoIP等)将所述数据包发给云终端上的客户端,客户端再将数据包和所述云桌面协议的解析算法一并发给摄像头操作插件;
[0044]步骤9:摄像头操作插件按照所述云桌面协议的解析算法解析数据包,获取操作指令,并按照所述操作指令操作本地摄像头,同时返回操作结果;所述操作结果依次经由摄像头操作插件、云终端上的客户端、客户端通信模块、虚拟设备总线驱动、虚拟摄像头、Windows DirectShow中间件,最后到达Windows应用程序。
[0045]所述步骤5中的Windows系统为所述虚拟摄像头自动加载虚拟摄像头驱动,其具体操件方法如下:
[0046]A、虚拟设备总线驱动在创建所述虚拟摄像头时,同时在windows系统的注册表中创建虚拟摄像头节点信息;
[0047]节点信息包括以下内容:
[0048](I)在USB设备枚举节点
[0049]HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\Usb 节点下创建设备对应PID,VID的节点(即设备标识id,PID, VID和起来是一个设备的唯一标识)
[0050](2)设置节点各主要信息,其中最主要为Service信息,设置该Service信息为本方法中创建的虚拟摄像头驱动服务;
[0051]其中,节点各主要信息包括:当前创建的虚拟摄像头的名字(FriendlyName),虚拟摄像头在Windows系统中的设备实例路径(WinXP下叫做设备范例ID)和设备对应的操作类CLSID。以上3个信息是Windows系统中摄像头设备必须设置的信息。
[0052](3)创建设备节点符号连接,便于上层程序通过该符号连接操作设备。
[0053](4)在注册表 HKEY_LOCA_MACHINE\System\CurrentCont;rolSet\Cont;rol\DeviceClasses 节点下{65E8773D-8F56-11D0-A3B9-00A0C9223196},及{6994ad05_93ef-lId0-a3cc-00a0c9223196}节点下创建相应的虚拟摄像头信息,在这2个节点下创建的信息用于让Windows系统自带DirectShow中间件能够发现并使用虚拟摄像头。在通常情况下该些信息由驱动inf (驱动描述文件)添加,本发明中为了自动安装虚拟设备总线驱动,所以该些数据由虚拟设备总线驱动添加。
[0054]B、虚拟设备总线驱动通过Windows即插即用设备框架,通知windows系统在所述虚拟设备总线节点下有新设备接入;
[0055]C、Windows系统在接收到所述通知后,枚举虚拟设备总线节点下所有虚拟摄像头信息,并会依据枚举到的虚拟摄像头信息到所述注册表中获取并加载虚拟摄像头驱动。
[0056]所述虚拟摄像头信息包括虚拟摄像头的硬件ID,虚拟摄像头的名子,虚拟摄像头与虚拟设备总线节点关系等,并会依据枚举到的虚拟摄像头信息到A-(I)的注册表中获取并加载虚拟摄像头驱动。
[0057]本发明具有以下优点:
[0058]1、用户可以在云桌面中看到与客户端实际设备相同物理信息的虚拟摄像头;
[0059]2、用户应用程序可以如本地操作一样操作虚拟摄像头,并对虚拟摄像头物理信息进行验证;
[0060]3、本发明可以提供具体的硬件信息,用户应用程序完全可以在Windows设备管理器中获取到与原设备相同的设备信息,对于部分设备绑定的应用程序,本发明可以提供现有技术无法提供的兼容性。
[0061]4、本发明可以动态映射多个虚拟设备,且虚拟设备名字信息与远程设备名字保持一致,现有技术只能在安装时固定创建指定个数的设备,且无法同步远程设备名字。
[0062]5、用户应用程序在使用本发明映射的虚拟摄像头时,使用Windows标准Directshow中间件,操作方法与用户应用程序原始操作方法保持一致,大大提高对用户程序的兼容性。
【权利要求】
1.一种基于虚拟设备的摄像头映射方法,其特征在于:包括虚拟摄像头的映射步骤,其操作方法如下: 步骤1:创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头; 步骤2:创建一虚拟设备总线驱动;所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头; 步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步; 步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头; 步骤5:ffindows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,从而实现所述虚拟摄像头与Windows应用程序的通信。
2.如权利要求1所述的基于虚拟设备的摄像头映射方法,其特征在于:还包括Windows应用程序调用本地摄像头的步骤,其具体操作方法如下: 步骤6:Windows应用程序通过Windows DirectShow中间件,枚举Windows系统中的虚拟摄像头,然后调用所述虚拟摄像头; 步骤7:所述虚拟摄像头驱动将Windows应用程序的调用转化成操作指令,发送给虚拟设备总线驱动,然后虚拟设备总线驱动将所述操作指令进行封装,得到数据包; 步骤8:客户端通信模块通过云桌面协议将所述数据包发给云终端上的客户端,客户端再将数据包和所述云桌面协议的解析算法一并发给摄像头操作插件; 步骤9:摄像头操作插件按照所述云桌面协议的解析算法解析数据包,获取操作指令,并按照所述操作指令操作本地摄像头,同时返回操作结果;所述操作结果依次经由摄像头操作插件、云终端上的客户端、客户端通信模块、虚拟设备总线驱动、虚拟摄像头、WindowsDirectShow中间件,最后到达Windows应用程序。
3.如权利要求1所述的基于虚拟设备的摄像头映射方法,其特征在于:所述步骤2还包括:安装虚拟设备总线驱动,同时通过Windows命令创建虚拟设备总线节点,并指定节点加载虚拟设备总线驱动; 所述步骤5中的Windows系统为所述虚拟摄像头自动加载虚拟摄像头驱动,其具体操件方法如下: A、虚拟设备总线驱动在创建所述虚拟摄像头时,同时在windows系统的注册表中创建虚拟摄像头节点信息; B、虚拟设备总线驱动通过Windows即插即用设备框架,通知windows系统在所述虚拟设备总线节点下有新设备接入; C、WindowS系统在接收到所述通知后,枚举虚拟设备总线节点下所有虚拟摄像头信息,并会依据枚举到的虚拟摄像头信息到所述注册表中获取并加载虚拟摄像头驱动。
4.如权利要求1所述的基于虚拟设备的摄像头映射方法,其特征在于:所述步骤3中的本地摄像头的物理信息是指:本地摄像头的名称,本地摄像头的硬件ID,本地摄像头的支持分辨率,本地摄像头的图像数据。
【文档编号】G06F9/455GK104199723SQ201410454849
【公开日】2014年12月10日 申请日期:2014年9月9日 优先权日:2014年9月9日
【发明者】张辉, 魏良晨 申请人:福建升腾资讯有限公司