CN104199723B - 基于虚拟设备的摄像头映射方法 - Google Patents
基于虚拟设备的摄像头映射方法 Download PDFInfo
- Publication number
- CN104199723B CN104199723B CN201410454849.6A CN201410454849A CN104199723B CN 104199723 B CN104199723 B CN 104199723B CN 201410454849 A CN201410454849 A CN 201410454849A CN 104199723 B CN104199723 B CN 104199723B
- Authority
- CN
- China
- Prior art keywords
- softcam
- photographic head
- windows
- virtual
- virtual unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
一种基于虚拟设备的摄像头映射方法:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动,按照Windows系统通用驱动框架,创建一虚拟设备总线驱动;在云终端上创建摄像头操作插件,创建一客户端通信模块;虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时创建与所述物理信息相同的虚拟摄像头;Windows系统为虚拟摄像头自动加载所述虚拟摄像头驱动,虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,实现虚拟摄像头与Windows应用程序通信。本发明使得用户应用程序可以如本地操作摄像头一样操作虚拟摄像头。
Description
技术领域
本发明具体涉及一种基于虚拟设备的摄像头映射方法。
背景技术
随着云计算技术的发展,云桌面技术被越来越广泛的使用。云桌面技术作为一种远程桌面使用技术,对外设的使用存在较多的问题,如USB外设,串并口外设等都需要通过专门的映射技术将设备映射到服务器上。现在我们常用的摄像头虽然作为一个USB设备,但是在实际应用中由于需要传输大量的图像数据,所以无法使用通用的USB映射技术在云桌面环境下使用该设备。
针对摄像头设备,现有的解决方案是基于Windows DirectShow框架,通过开发DirectShow摄像头中间件实现将终端摄像头中的数据传输到云桌面中的应用程序中使用,但是现有的技术存在以下缺点:
1、方法是依赖于Windows DirectShow框架,在该框架下实现的一个摄像头设备的中间件,在系统中无法找到实际设备
2、使用该方法实现的摄像头中间件始终为相同的一个名字,该名字在创建中间件时创建,后期无法修改
3、第三方开发的中间件与Windows系统自带的摄像头DirectShow中间件存在差异,用户应用程序一般都是在本地环境开发,使用微软标准DirectShow中间件,可能存在兼容性问题。
4、由于老的实现方法在系统中不存在硬件信息,部分应用程序在使用摄像头前会先枚举摄像头设备信息,并匹配自己公司产品,导致在很多环境下老的摄像头映射模式无法很好的配合业务系统使用。
发明内容
本发明所要解决的技术问题在于提供一种基于虚拟设备的摄像头映射方法,用户应用程序可以像操作实际摄像头一样操作虚拟摄像头。
本发明是通过以下技术方案解决上述技术问题的:一种基于虚拟设备的摄像头映射方法,包括虚拟摄像头的映射步骤,其操作方法如下:
步骤1:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头;
步骤2:按照Windows系统通用驱动框架,创建一虚拟设备总线驱动;所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头;
步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步;
步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头;
步骤5:Windows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,从而实现所述虚拟摄像头与Windows应用程序的通信。
进一步地,还包括Windows应用程序调用本地摄像头的步骤,其具体操作方法如下:
步骤6:Windows应用程序通过Windows DirectShow中间件,枚举Windows系统中的虚拟摄像头,然后调用所述虚拟摄像头;
步骤7:所述虚拟摄像头驱动将Windows应用程序的调用转化成操作指令,发送给虚拟设备总线驱动,然后虚拟设备总线驱动将所述操作指令进行封装,得到数据包;
步骤8:客户端通信模块通过云桌面协议将所述数据包发给云终端上的客户端,客户端再将数据包和所述云桌面协议的解析算法一并发给摄像头操作插件;
步骤9:摄像头操作插件按照所述云桌面协议的解析算法解析数据包,获取操作指令,并按照所述操作指令操作本地摄像头,同时返回操作结果;所述操作结果依次经由摄像头操作插件、云终端上的客户端、客户端通信模块、虚拟设备总线驱动、虚拟摄像头、Windows DirectShow中间件,最后到达Windows应用程序。
进一步地,所述步骤2还包括:安装虚拟设备总线驱动,同时通过Windows命令创建虚拟设备总线节点,并指定节点加载虚拟设备总线驱动;
所述步骤5中的Windows系统为所述虚拟摄像头自动加载虚拟摄像头驱动,其具体操件方法如下:
A、虚拟设备总线驱动在创建所述虚拟摄像头时,同时在windows系统的注册表中创建虚拟摄像头节点信息;
B、虚拟设备总线驱动通过Windows即插即用设备框架,通知windows系统在所述虚拟设备总线节点下有新设备接入;
C、Windows系统在接收到所述通知后,枚举虚拟设备总线节点下所有虚拟摄像头节点信息,并会依据枚举到的虚拟摄像头节点信息到所述注册表中获取并加载虚拟摄像头驱动。
进一步地,所述步骤3中的本地摄像头的物理信息是指:本地摄像头的名称,本地摄像头的硬件ID,本地摄像头的支持分辨率,本地摄像头的图像数据。
本发明的有益效果在于:用户可以在云桌面中看到与客户端实际设备相同物理信息的虚拟摄像头;用户应用程序可以如本地操作摄像头一样操作虚拟摄像头,大大提高对用户程序的兼容性。
附图说明
下面参照附图结合实施例对本发明作进一步的描述。
图1为本发明中的基于虚拟设备的摄像头映射系统框图。
具体实施方式
请参阅图1,图1为本发明中的基于虚拟设备的摄像头映射系统框图。
一种基于虚拟设备的摄像头映射方法,包括虚拟摄像头的映射步骤和Windows应用程序调用本地摄像头的步骤,所述虚拟摄像头的映射步骤的操作方法如下:
步骤1:按照Windows系统WDM摄像头驱动框架,创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头;
所述虚拟摄像头驱动依照Windows系统WDM摄像头驱动框架开发,该WDM摄像头驱动框架规定摄像头驱动分为类驱动及小驱动2部分内容,本发明的虚拟摄像头驱动为小驱动部分,通过小驱动即虚拟摄像头驱动实现与Windows自带类驱动对接。小驱动即虚拟摄像头驱动的实现方法可以参照Windows DDK说明文档实现,Windows的类驱动规定了某一类型设备对Windows系统上层的固定接口及对小驱动的固定接口。
步骤2:按照Windows系统通用驱动框架,创建一虚拟设备总线驱动,安装虚拟设备总线驱动,同时通过Windows命令(即Windows命令drvin.exe,该命令为windows系统提供,用于向windows系统添加设备节点,并为设备节点指定驱动的命令)创建虚拟设备总线节点,并指定节点加载虚拟设备总线驱动;
所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头;
步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步;
本地摄像头是指实际的物理设备摄像头;本地摄像头的物理信息包括本地摄像头的名称,本地摄像头的硬件ID,本地摄像头的支持分辨率,本地摄像头的图像数据。各摄像头操作插件为各种云桌面协议的插件。
步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头;
步骤5:Windows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与Windows DirectShow中间件通信,从而实现所述虚拟摄像头与Windows应用程序的通信。
所述Windows应用程序泛指所有Windows系统上操作摄像头的应用程序,如QQ,MSN,摄像头数据采集软件等需要使用到摄像头的应用程序。
所述Windows应用程序调用本地摄像头的步骤,其具体操作方法如下:
步骤6:Windows应用程序通过Windows DirectShow中间件,枚举Windows系统中的虚拟摄像头,然后调用所述虚拟摄像头;
步骤7:所述虚拟摄像头驱动将Windows应用程序的调用转化成操作指令,发送给虚拟设备总线驱动,然后虚拟设备总线驱动将所述操作指令进行封装,得到数据包;
步骤8:客户端通信模块通过云桌面协议(如RDP,ICA,PCoIP等)将所述数据包发给云终端上的客户端,客户端再将数据包和所述云桌面协议的解析算法一并发给摄像头操作插件;
步骤9:摄像头操作插件按照所述云桌面协议的解析算法解析数据包,获取操作指令,并按照所述操作指令操作本地摄像头,同时返回操作结果;所述操作结果依次经由摄像头操作插件、云终端上的客户端、客户端通信模块、虚拟设备总线驱动、虚拟摄像头、Windows DirectShow中间件,最后到达Windows应用程序。
所述步骤5中的Windows系统为所述虚拟摄像头自动加载虚拟摄像头驱动,其具体操件方法如下:
A、虚拟设备总线驱动在创建所述虚拟摄像头时,同时在windows系统的注册表中创建虚拟摄像头节点信息;
节点信息包括以下内容:
(1)在USB设备枚举节点
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\Usb节点下创建设备对应PID,VID的节点(即设备标识id,PID,VID和起来是一个设备的唯一标识)
(2)设置节点各主要信息,其中最主要为Service信息,设置该Service信息为本方法中创建的虚拟摄像头驱动服务;
其中,节点各主要信息包括:当前创建的虚拟摄像头的名字(FriendlyName),虚拟摄像头在Windows系统中的设备实例路径(WinXP下叫做设备范例ID)和设备对应的操作类CLSID。以上3个信息是Windows系统中摄像头设备必须设置的信息。
(3)创建设备节点符号连接,便于上层程序通过该符号连接操作设备。
(4)在注册表HKEY_LOCA_MACHINE\System\CurrentControlSet\Control\DeviceClasses节点下{65E8773D-8F56-11D0-A3B9-00A0C9223196},及{6994ad05-93ef-11d0-a3cc-00a0c9223196}节点下创建相应的虚拟摄像头节点信息,在这2个节点下创建的信息用于让Windows系统自带DirectShow中间件能够发现并使用虚拟摄像头。在通常情况下该些信息由驱动inf(驱动描述文件)添加,本发明中为了自动安装虚拟设备总线驱动,所以该些数据由虚拟设备总线驱动添加。
B、虚拟设备总线驱动通过Windows即插即用设备框架,通知windows系统在所述虚拟设备总线节点下有新设备接入;
C、Windows系统在接收到所述通知后,枚举虚拟设备总线节点下所有虚拟摄像头节点信息,并会依据枚举到的虚拟摄像头节点信息到所述注册表中获取并加载虚拟摄像头驱动。
所述虚拟摄像头节点信息包括虚拟摄像头的硬件ID,虚拟摄像头的名字,虚拟摄像头与虚拟设备总线节点关系等,并会依据枚举到的虚拟摄像头节点信息到A-(1)的注册表中获取并加载虚拟摄像头驱动。
本发明具有以下优点:
1、用户可以在云桌面中看到与客户端实际设备相同物理信息的虚拟摄像头;
2、用户应用程序可以如本地操作一样操作虚拟摄像头,并对虚拟摄像头物理信息进行验证;
3、本发明可以提供具体的硬件信息,用户应用程序完全可以在Windows设备管理器中获取到与原设备相同的设备信息,对于部分设备绑定的应用程序,本发明可以提供现有技术无法提供的兼容性。
4、本发明可以动态映射多个虚拟设备,且虚拟设备名字信息与远程设备名字保持一致,现有技术只能在安装时固定创建指定个数的设备,且无法同步远程设备名字。
5、用户应用程序在使用本发明映射的虚拟摄像头时,使用Windows标准Directshow中间件,操作方法与用户应用程序原始操作方法保持一致,大大提高对用户程序的兼容性。
Claims (4)
1.一种基于虚拟设备的摄像头映射方法,其特征在于:包括虚拟摄像头的映射步骤,其操作方法如下:
步骤1:创建一虚拟摄像头驱动;所述虚拟摄像头驱动用于与Windows DirectShow中间件通信,实现Windows应用程序操作虚拟摄像头;
步骤2:创建一虚拟设备总线驱动;所述虚拟设备总线驱动用于实现在Windows系统中动态添加或删除虚拟摄像头;
步骤3:在云终端上创建摄像头操作插件,用于获取本地摄像头的物理信息和操作本地摄像头;在Windows系统内创建一客户端通信模块,用于实现虚拟设备总线驱动与摄像头操作插件之间的通信,从而实现虚拟摄像头与本地摄像头的数据通信及同步;
步骤4:所述虚拟设备总线驱动通过客户端通信模块、摄像头操作插件获取本地摄像头的物理信息,同时在Windows系统中创建与所述物理信息相同的虚拟摄像头;
步骤5:Windows系统为所述虚拟摄像头自动加载所述虚拟摄像头驱动,该虚拟摄像头即可通过虚拟摄像头驱动与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,本地摄像头的支持分辨率,本地摄像头的图像数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410454849.6A CN104199723B (zh) | 2014-09-09 | 2014-09-09 | 基于虚拟设备的摄像头映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410454849.6A CN104199723B (zh) | 2014-09-09 | 2014-09-09 | 基于虚拟设备的摄像头映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104199723A CN104199723A (zh) | 2014-12-10 |
CN104199723B true CN104199723B (zh) | 2017-04-12 |
Family
ID=52085020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410454849.6A Active CN104199723B (zh) | 2014-09-09 | 2014-09-09 | 基于虚拟设备的摄像头映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104199723B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027882A (zh) * | 2016-05-16 | 2016-10-12 | 深圳市青葡萄科技有限公司 | 摄像头外设在虚拟化环境下的重定向方法 |
CN106790612B (zh) * | 2016-12-30 | 2020-07-31 | 深圳市杰云科技有限公司 | 一种动态虚拟摄像头映射方法和系统 |
CN109240499B (zh) * | 2018-08-31 | 2022-02-08 | 云南师范大学 | 虚拟摄像机模拟交互控制系统及方法、信息数据处理终端 |
CN109756620B (zh) * | 2018-12-15 | 2021-07-23 | 深圳壹账通智能科技有限公司 | 基于手机的虚拟摄像头识别方法及相关设备 |
CN109510975B (zh) * | 2019-01-21 | 2021-01-05 | 恒信东方文化股份有限公司 | 一种视频图像的提取方法、设备及系统 |
CN110493203A (zh) * | 2019-07-31 | 2019-11-22 | 湖南微算互联信息技术有限公司 | 一种云手机摄像头控制方法、系统、装置和存储介质 |
CN112631471B (zh) * | 2020-11-19 | 2023-01-31 | 楷知信息科技(上海)有限公司 | 多应用切换并分享内容方法、装置、存储介质及终端设备 |
CN112839194A (zh) * | 2020-12-25 | 2021-05-25 | 广州朗国电子科技有限公司 | 双系统下共享摄像头的方法、装置、一体机及储存介质 |
CN113055597B (zh) * | 2021-03-25 | 2022-06-28 | 联想(北京)有限公司 | 摄像头调用实现方法、装置及电子设备 |
CN114237758B (zh) * | 2021-12-21 | 2024-02-02 | 元心信息科技集团有限公司 | 通信连接方法、装置、电子设备及计算机可读存储介质 |
CN115118719B (zh) * | 2022-06-20 | 2023-11-10 | 福建升腾资讯有限公司 | 一种云桌面的摄像头设备连接的方法及系统 |
CN115567518B (zh) * | 2022-12-06 | 2023-02-28 | 西安雷风电子科技有限公司成都分公司 | 一种用于云桌面的摄像头重定向的装置、系统和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179660A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 摄像头视频图像处理的系统及其方法 |
CN102611878A (zh) * | 2012-01-13 | 2012-07-25 | 福建升腾资讯有限公司 | 低带宽占用的高清摄像头映射方法 |
CN103533034A (zh) * | 2013-09-28 | 2014-01-22 | 福建星网锐捷软件有限公司 | Vdi虚拟桌面中无缝使用云终端本地摄像头的方法 |
-
2014
- 2014-09-09 CN CN201410454849.6A patent/CN104199723B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179660A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 摄像头视频图像处理的系统及其方法 |
CN102611878A (zh) * | 2012-01-13 | 2012-07-25 | 福建升腾资讯有限公司 | 低带宽占用的高清摄像头映射方法 |
CN103533034A (zh) * | 2013-09-28 | 2014-01-22 | 福建星网锐捷软件有限公司 | Vdi虚拟桌面中无缝使用云终端本地摄像头的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104199723A (zh) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104199723B (zh) | 基于虚拟设备的摄像头映射方法 | |
KR101413126B1 (ko) | 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처 | |
US7992132B2 (en) | Server side application integration framework | |
CN102567074B (zh) | 一种面向虚拟机的usb设备重定向方法 | |
US11509505B2 (en) | Method and apparatus for operating smart network interface card | |
US10303445B2 (en) | Network service providing method and network service station using same | |
CN103064738B (zh) | Linux下本地应用程序窗体嵌入浏览器的方法及系统 | |
US8549093B2 (en) | Updating a user session in a mach-derived system environment | |
CN103765403A (zh) | 应用和web服务之间元数据驱动的合作 | |
CN102323882A (zh) | 一种应用于Web3D的数据处理装置和方法 | |
CN102646031A (zh) | 一种移动终端控制大屏幕显示内容的方法 | |
CN105338048A (zh) | 一种虚拟桌面基础架构下的文件传输方法和系统 | |
CN103699635B (zh) | 信息处理方法和装置 | |
CN103312814A (zh) | 云管理平台和虚拟机终端用户间vnc隐通道的建立方法 | |
CN102932791A (zh) | 智能手机与电脑之间通过wifi无线网络协同处理信息的方法 | |
CN103077034A (zh) | 混合虚拟化平台java应用迁移方法与系统 | |
CN102546837B (zh) | 一种虚拟主机的输入输出重定向系统及其实现方法 | |
CN104717175A (zh) | 虚拟桌面的处理方法和系统 | |
CN102811241A (zh) | 远程管理方法及远程管理系统 | |
CN103425473A (zh) | 一种开放式微博的实现方法和系统 | |
CN116233209A (zh) | 一种gpu云渲染服务远程管理调度方法 | |
CN109086053A (zh) | 一种动态选择、加载app设备控制面板ui页面和方法 | |
WO2018205390A1 (zh) | 一种控件布局显示控制方法、系统、装置及计算机可读存储介质 | |
CN111736887B (zh) | 一种利旧设备的访问系统、方法、装置及存储介质 | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |