采用照相手机作为计算机摄像头获取视频数据的方法

文档序号:6446237阅读:249来源:国知局
专利名称:采用照相手机作为计算机摄像头获取视频数据的方法
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种采用照相手机作为计算机摄像头获取视频数据的方法。
背景技术
当前,在采用计算机的各项实际应用中,摄像头已经被越来越多的应用的诸多领域之中。例如,可以通过摄像头实时获取图像,从而利用计算机实现视频聊天以及视频会议,还可通过摄像头在计算机上实现对周围环境的实时监控。
在现有技术中,摄像头作为一个单独的视频捕获设备,需要通过USB线插入到计算机的USB接口中,从而使得计算机能够从摄像头获取视频图像。由此,摄像头需要单独占用计算机的一个USB接口,从而使得本就十分有限的接口资源更加紧张;另外,由于必须通过USB线实现计算机与摄像头之间的连接,从而使得在利用摄像头设备进行实际应用时,必须随同摄像头同时携带USB线,从而增加了对视频捕获设备的要求并且对连接造成了一定的限制;再次,摄像头作为一个独立的硬件设备,需要使用者单独购买,从而增加了使用者的实际开销,不利于迅速推广采用摄像头设备的各种计算机实际应用。
同时,手机作为一种通信工具,其功能也随着通信技术的不断发展而日益丰富,不但越来越多的手机能够实现拍照功能,而且,一些手机的像素和分辨率已经越来越高,甚至超过了普通的计算机摄像头。但是,由于手机存储卡容量有限,会限制使用者拍摄视频文件的长度和相片数量,从而使得手机在作为视频捕获设备应用时受到一定的容量限制。

发明内容
有鉴于此,本发明的主要目的在于提供一种采用照相手机作为计算机摄像头获取视频数据的方法,从而能够利用手机作为视频捕获设备实现获取视频数据,并通过无线通信传输给计算机,从而节省计算机的接口资源,降低对视频捕获设备的要求以及对连接的限制,节省用户的实际开销;并且,能够使得具有照相功能的手机突破容量上的限制,能够更好地进行视频数据获取操作。
为实现上述目的,本发明提供了一种采用照相手机作为计算机摄像头获取视频数据的方法,该方法包括步骤A将照相手机虚拟成计算机中的视频捕获设备;步骤B将步骤A中已经虚拟为视频捕获设备的手机选择作为计算机的当前视频捕获设备;步骤C计算机向作为当前视频捕获设备的手机发送获取视频数据命令,所述手机根据接收到的命令,获取视频数据并通过无线连接传输给计算机;步骤D计算机接收手机传输来的视频数据。
其中,步骤A包括步骤A1设置一个虚拟摄像头驱动程序,该驱动程序中至少包括用于进行摄像头设备注册的功能函数、用于进行摄像头设备属性设置和读取的功能函数、用于实现添加/卸载摄像头设备的功能函数、用于从手机获取视频数据的功能函数;步骤A2运行步骤A1所述的虚拟驱动程序,利用该程序中所提供的函数,向操作系统注册照相功能手机,并设置该照相功能手机所支持的属性。
其中,所述虚拟驱动程序为视频微端口驱动程序,该微端口驱动程序为视频类驱动程序提供回调例程;其中,视频类驱动程序封装了不同类型流设备的一般特征,供应用程序控制和操作视频捕获设备。
其中,步骤A2所述设置手机所支持的属性包括调用用于进行摄像头设备属性设置的功能函数,为所述该手机设置所支持的图像分辨率、图像格式、图像压缩格式、视频编码格式、和/或捕获视频数据的频率。
其中,步骤B包括调用所述用于实现添加摄像头设备的功能函数,将该虚拟驱动程序所对应的手机添加到计算机中,然后,通过应用程序选择该手机作为计算机的当前视频捕获设备。
其中,步骤C包括步骤C1计算机的应用程序通过操作系统,向虚拟驱动程序发送获取视频数据命令,和,调用所述用于进行摄像头设备属性读取的功能函数,从手机所支持的属性中读取特定属性作为获取当前视频数据的设备属性;步骤C2虚拟驱动程序根据所读取的获取当前视频数据的设备属性,将获取视频数据命令转换为对手机的相应控制命令,然后,通过计算机与手机之间的无线通信,将该转换后的命令发送给手机;其中,所述控制命令中体现了获取当前视频数据的设备属性;步骤C3手机根据接收到的所述控制命令,执行获取视频数据的操作;步骤C4虚拟驱动程序利用计算机和手机之间的无线通信,通过调用所述用于从手机获取视频数据的功能函数,从手机获取视频数据,并传输给计算机的应用程序。
其中,该方法进一步包括预先为各个视频捕获设备分别分配一个独立的内存块,步骤C4所述虚拟驱动程序将视频数据传输给应用程序包括虚拟驱动程序将保存在所述独立内存块中的视频数据,通过虚拟驱动程序自身具有的读设备例程,上传给应用程序。
其中,虚拟驱动程序将视频数据上传给应用程序之前,该方法进一步包括对视频数据的格式进行包括格式和/或尺寸在内的变换。
其中,步骤C中所述将视频数据传输给计算机之前,该方法进一步包括对待传输的视频数据进行压缩,然后,将压缩后的视频数据传输给计算机;步骤D进一步包括计算机将接收到的压缩视频数据还原为原始的视频数据。
其中,步骤D进一步包括计算机中的应用程序以所述接收到的视频数据作为数据源,播放或保存该视频数据。
其中,所述应用程序为视频聊天应用程序或网络会议应用程序。
其中,该方法进一步包括调用所述用于实现卸载摄像头设备的功能函数,将该虚拟驱动程序所对应的手机从计算机中卸载下来。
可见,本发明具有如下有益效果(1)在本发明中,可以通过手机和计算机之间的无线通信,将手机所获取的视频数据传输给计算机,从而节省了计算机的端口资源;(2)在本发明中,采用手机作为摄像头设备,可以省去购买一个专用的摄像头设备的费用开销,另外,手机也比专用摄像头使用更加方便,无需必备USB线来连接手机和计算机,通过无线通信方式即可实现视频数据的传输,从而使得连接方式更加自由;(3)在本发明中,由于可以将手机所获取的视频数据保存到计算机中,因此,可以弥补手机拍照或摄像时存储卡容量少的不足,突破手机在进行有关视频的应用时所受到的容量上的限制。


图1为实现本发明的流程图。
图2为本发明一实施例的模块结构图。
图3为本发明一实施例的流程图。
具体实施例方式
本发明为一种采用照相手机作为计算机摄像头获取视频数据的方法,该方法将具有照相功能的手机虚拟为一个摄像头设备注册到计算机中,并对该手机设置与获取视频数据相关的属性,然后,选择该已经注册的手机作为摄像头设备,利用虚拟的结果以及设置的相关属性,控制和操作该手机进行视频获取操作,并将所获取的视频数据通过无线通信传输给计算机,计算机对该数据进行处理后,保存或显示接收到的视频数据,从而实现通过手机虚拟摄像头设备功能,以便完成相应的操作。
下面结合附图对本发明进行详细描述。
参见图1,实现本发明需要以下步骤步骤101将照相功能手机虚拟成计算机中的视频捕获设备;步骤102将步骤101中已经虚拟为视频捕获设备的手机选择作为计算机的当前视频捕获设备;步骤103计算机向作为当前视频捕获设备的手机发送获取视频数据命令,该手机根据接收到的命令,获取视频数据并通过无线连接传输给计算机;步骤104计算机接收来自手机的视频数据,将该视频数据作为数据源提供给应用程序保存或播放。
下面结合具体实例,并参照附图对以上步骤的具体实现进行详细描述。
图2所示为一实施例中,采用照相功能手机进行具体应用的模块结构图,在该具体应用中,在计算机一侧,通常包括应用程序、操作系统和虚拟摄像头驱动程序,在本实施例中,虚拟摄像头驱动程序用于向操作系统提供与摄像头设备有关的各种属性和操作,在初始化时,该虚拟摄像头驱动程序向操作系统进行注册并完成摄像头设备的属性设置,从而实现将照相功能手机虚拟成为摄像头设备,在实际运行过程中,应用程序通过操作系统选择已经虚拟为摄像头设备的手机作为当前摄像头设备,然后,利用虚拟摄像头驱动程序所提供的各个操作功能,通过无线通信模块向手机一侧发送相应的控制命令,以实现对手机获取视频数据的控制,并且,还利用虚拟摄像头驱动程序所提供的操作功能,通过无线通信模块从手机一侧接收视频数据,在对该视频数据进行例如压缩、格式转换的处理之后,传输给应用程序进行实际应用;同时,在拍照功能手机一侧,通常包括无线通信模块、控制操作模块和拍照手机设备本身,通过无线通信模块实现与计算机之间的双向通信,从而接收计算机发送的控制命令,并向计算机发送手机所获取的视频数据;控制操作模块用于根据接收到的控制命令,控制拍照手机执行获取视频数据的操作,拍照手机则用于实际获取视频数据。
下面,以图2所示的模块结构为例,结合一个具体实施例,说明实现本发明的具体流程,参见图3,在该具体实施例中,包括以下步骤步骤301设置一个虚拟摄像头驱动程序,该驱动程序中至少包括用于进行摄像头设备注册的功能函数、用于进行摄像头设备属性设置和读取的功能函数、用于实现添加/卸载摄像头设备的功能函数、用于从手机获取视频数据的功能函数;其中,在Windows操作系统中,各种视频捕获设备都是流设备,操作系统为这些流设备提供了一个通用的视频类驱动程序,并将该程序保存在Stream.sys文件中,以在该程序中封装这些流设备的一般特征,供应用程序控制和操作视频捕获设备;并且,针对各个类型的视频捕获设备,分别具有各自具体的视频微端口驱动程序,该微端口驱动程序为所述的类驱动程序提供回调例程,以实现各自类型视频捕获设备的特性操作。因此,在本发明实施例中,只需为照相功能的手机设计一个微端口驱动程序,并在该程序中包括以上所述的各个功能函数,即可实现虚拟摄像头驱动程序的设置;在本实施例中,该微端口驱动程序包括如下功能函数(1)驱动入口函数,用于向视频类驱动程序注册该视频微端口驱动程序,以便视频类驱动程序能够调用该微端口程序,从而,使得该入口函数能够作为视频类驱动程序调用视频微端口驱动程序的入口点,对该函数的具体描述为函数名DriverEntry输入参数DriverObjectRegistryPath输出参数返回注册结果。
在该函数中,申明一个硬件初始化数据结构HW_INITIALIZATION_DATA HwInitData;在该HwInitData中填写有关处理请求的函数的地址和与硬件有关的一些参数,然后用HwInitData作为参数,调用视频类驱动程序的StreamClassRegisterAdapter()函数进行注册,以便其调用。
说明驱动入口函数通过填写在HwInitData中的有关处理请求的函数的地址和与硬件有关的一些参数,再调用视频类驱动程序的StreamClassRegisterAdapter()函数实现注册功能。
(2)设备属性设置函数和设备属性读取函数,其中,设备属性设置函数用于在初始化时,设置视频捕获设备所支持的属性;设备属性读取函数则用于根据获取视频数据时的需要,从该视频捕获设备所支持的属性中读取特定的属性,作为该视频捕获设备当前获取视频数据时的属性;其中,所述的摄像头设备属性包括图像分辨率、图像格式、图像压缩格式、视频编码格式、和/或捕获视频数据的频率,在本发明其它实施例中,也可包括其它属性,并不影响本发明的实现;设备属性设置函数的具体描述为函数名VideoSetFormat描述设置一个视频流的格式,在流最初被打开时会进行这种操作;输入参数该设备所支持的视频图像宽度;
该设备所支持的视频图像高度;该设备所支持的视频图像像素字节数;该设备所支持的视频大小,该参数可以从320×240、640×480、1024×768中选择,默认值为320×240;该设备所支持的像素位数,其中,利用参数1代表8位像素,2代表16位像素,3代表24位像素,该参数的默认值为3;输出参数如果该视频格式可以设置则返回TRUE,否则返回FALSE通过该VideoSetFormat函数,可以将该视频捕获设备设置为最大尺寸为1024×768,最小尺寸为160×120,支持的像素位数有8bit、16bits、24bits;设备属性读取函数的具体描述为函数名VideoGetProperty描述处理视频属性请求的函数输入参数pSrb指向属性设置的视频请求包,结果存储在这个结构中返回输出参数成功或失败其中,函数VideoSetFormat的作用是设置设备属性,与此对应的函数VideoGetProperty用于获取设备的各种设备属性的取值范围;设置函数功能是从各种设备属性的取值范围中设定一个值,比如该设备所支持的视频大小的取值范围是320×240、640×480、1024×768,调用设备函数时可以用320×240作为参数,表示当前设备的视频大小这个属性取值为320×240。
(3)设备添加和卸载函数,该函数用于实现将摄像头设备从计算机中添加和卸载,该函数具体包括函数名VCamInit描述在初始化时,将摄像头设备添加到计算机中;输入参数无输出成功或失败代码还包括函数名VCamFinish描述从计算机中卸载功能摄像头设备;输入参数无输出成功或失败代码;(4)视频数据获取函数,该函数用于控制照相功能手机,按照设定的视频设备当前获取视频数据的属性,从手机获取视频数据,该函数的具体描述为函数名VideoCaptureRoutine描述获取一帧图像;输入参数pStrmEx指向视频流的扩展结构;输出参数无。
以上为步骤301所述设置一个虚拟摄像头驱动程序的具体实现,下面重新参照图3,对该具体实施例继续进行介绍步骤302~步骤303运行步骤301所述的虚拟驱动程序,向操作系统注册照相功能手机,然后,设置该照相功能手机所支持的属性;在本发明实施例中,通过在初始化时,调用DriverEntry函数,从而实现将视频微端口程序注册到视频类驱动程序,从而,可以实现步骤302,通过调用VideoSetFormat函数则可实现步骤303;步骤304利用该虚拟驱动程序所提供的功能函数,将该虚拟驱动程序所对应的照相手机添加到计算机中,然后,应用程序选择该手机作为计算机的当前视频捕获设备;其中,添加照相手机的步骤可以通过调用如上所述的VcamInit函数实现;步骤305应用程序通过操作系统,向虚拟驱动程序发送获取视频数据命令,并且,从手机所支持的属性中读取特定属性作为获取当前视频数据的设备属性;其中,应用程序可以通过调用上述VideoSetProperty函数,设置当前视频数据的设备属性;步骤306虚拟驱动程序收到应用程序发出的获取视频数据命令后,根据所读取的获取当前视频数据的设备属性,将获取视频数据命令转换为对手机的相应控制命令,然后,通过计算机与手机之间的无线通信,将该转换后的命令发送给手机;其中,该控制命令中体现了调用VideoSetProperty函数后所得到的设置结果;步骤307手机的控制操作模块从其无线通信模块接收到来自计算机的控制命令,根据该命令,执行获取视频数据的操作;步骤308虚拟驱动程序利用计算机和手机之间的无线通信,从手机获取视频数据;在本发明实施例中,通过调用上述VideoCaptureRoutine函数即可实现步骤308;步骤309虚拟驱动程序调用自身具有的读设备例程,将从手机所获取的视频数据传送给上层应用程序,以供该应用程序使用;其中,虚拟驱动程序从手机获得视频数据后,会将该数据存放在计算机内存中,为了存放从手机一侧传过来的视频数据,由类驱动程序为每个视频捕获设备分配一个独立的内存块,该内存块定义1024×768×3+sizeof(BITMAPINFOHEADER)大小的字节数组,由此可以使得各个视频捕获设备分别具有各自独立的内存单元;来自手机的视频数据将连同位图信息和位图数据一起拷贝入该内存区,虚拟驱动程序根据用户所要求的采集格式和该内存区中的位图格式,对该视频数据进行包括格式和/或尺寸在内的变换,然后将该适当格式和/或尺寸的视频数据提供给上层应用程序使用,上层应用程序可以播放该视频数据,也可将该视频数据保存在硬盘中。
以上所述为本发明的一个具体实施例,其中,在视频数据从手机通过无线通信传输到计算机的过程中,还可以先将视频数据压缩为例如MJPEG格式,然后再将压缩的视频数据通过无线通信传输给计算机,从而节省无线通信带宽消耗,有利于该技术的具体应用,计算机接收到压缩的视频数据后,对该数据进行解压缩,恢复为原始的视频数据。
在本发明中,上层应用程序可以为视频聊天应用程序或网络会议的应用程序,其它使用视频数据的应用程序也可以作为本发明中的应用程序,并不影响本发明的实现。
在本发明实施例中,在应用程序执行完毕之后,还可以通过调用虚拟驱动程序中的用于卸载摄像头设备的功能函数,将作为摄像头的手机从计算机上卸载下来。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种采用照相手机作为计算机摄像头获取视频数据的方法,其特征在于,该方法包括步骤A将照相手机虚拟成计算机中的视频捕获设备;步骤B将步骤A中已经虚拟为视频捕获设备的手机选择作为计算机的当前视频捕获设备;步骤C计算机向作为当前视频捕获设备的手机发送获取视频数据命令,所述手机根据接收到的命令,获取视频数据并通过无线连接传输给计算机;步骤D计算机接收手机传输来的视频数据。
2.根据权利要求1所述的方法,其特征在于,步骤A包括步骤A1设置一个虚拟摄像头驱动程序,该驱动程序中至少包括用于进行摄像头设备注册的功能函数、用于进行摄像头设备属性设置和读取的功能函数、用于实现添加/卸载摄像头设备的功能函数、用于从手机获取视频数据的功能函数;步骤A2运行步骤A1所述的虚拟驱动程序,利用该程序中所提供的函数,向操作系统注册照相功能手机,并设置该照相功能手机所支持的属性。
3.根据权利要求2所述的方法,其特征在于,所述虚拟驱动程序为视频微端口驱动程序,该微端口驱动程序为视频类驱动程序提供回调例程;其中,视频类驱动程序封装了不同类型流设备的一般特征,供应用程序控制和操作视频捕获设备。
4.根据权利要求2所述的方法,其特征在于,步骤A2所述设置手机所支持的属性包括调用用于进行摄像头设备属性设置的功能函数,为所述该手机设置所支持的图像分辨率、图像格式、图像压缩格式、视频编码格式、和/或捕获视频数据的频率。
5.根据权利要求2所述的方法,其特征在于,步骤B包括调用所述用于实现添加摄像头设备的功能函数,将该虚拟驱动程序所对应的手机添加到计算机中,然后,通过应用程序选择该手机作为计算机的当前视频捕获设备。
6.根据权利要求2所述的方法,其特征在于,步骤C包括步骤C1计算机的应用程序通过操作系统,向虚拟驱动程序发送获取视频数据命令,和,调用所述用于进行摄像头设备属性读取的功能函数,从手机所支持的属性中读取特定属性作为获取当前视频数据的设备属性;步骤C2虚拟驱动程序根据所读取的获取当前视频数据的设备属性,将获取视频数据命令转换为对手机的相应控制命令,然后,通过计算机与手机之间的无线通信,将该转换后的命令发送给手机;其中,所述控制命令中体现了获取当前视频数据的设备属性;步骤C3手机根据接收到的所述控制命令,执行获取视频数据的操作;步骤C4虚拟驱动程序利用计算机和手机之间的无线通信,通过调用所述用于从手机获取视频数据的功能函数,从手机获取视频数据,并传输给计算机的应用程序。
7.根据权利要求6所述的方法,其特征在于,该方法进一步包括预先为各个视频捕获设备分别分配一个独立的内存块,步骤C4所述虚拟驱动程序将视频数据传输给应用程序包括虚拟驱动程序将保存在所述独立内存块中的视频数据,通过虚拟驱动程序自身具有的读设备例程,上传给应用程序。
8.根据权利要求7所述的方法,其特征在于,虚拟驱动程序将视频数据上传给应用程序之前,该方法进一步包括对视频数据的格式进行包括格式和/或尺寸在内的变换。
9.根据权利要求1所述的方法,其特征在于,步骤C中所述将视频数据传输给计算机之前,该方法进一步包括对待传输的视频数据进行压缩,然后,将压缩后的视频数据传输给计算机;步骤D进一步包括计算机将接收到的压缩视频数据还原为原始的视频数据。
10.根据权利要求1所述的方法,其特征在于,步骤D进一步包括计算机中的应用程序以所述接收到的视频数据作为数据源,播放或保存该视频数据。
11.根据权利要求10所述的方法,其特征在于,所述应用程序为视频聊天应用程序或网络会议应用程序。
12.根据权利要求2所述的方法,其特征在于,步骤D之后,该方法进一步包括调用所述用于实现卸载摄像头设备的功能函数,将该虚拟驱动程序所对应的手机从计算机中卸载下来。
全文摘要
本发明为一种采用照相手机作为计算机摄像头获取视频数据的方法,该方法包括步骤A将照相手机虚拟成计算机中的视频捕获设备;步骤B将步骤A中已经虚拟为视频捕获设备的手机选择作为计算机的当前视频捕获设备;步骤C计算机向作为当前视频捕获设备的手机发送获取视频数据命令,所述手机根据接收到的命令,获取视频数据并通过无线连接传输给计算机;步骤D计算机接收手机传输来的视频数据。本发明可以实现手机和计算机的资源共享,充分利用两者的功能,节省计算机的接口资源,使得手机在获取视频数据时能够突破容量上的限制。
文档编号G06F13/10GK1801124SQ20041010311
公开日2006年7月12日 申请日期2004年12月31日 优先权日2004年12月31日
发明者徐练, 刘向东, 徐超, 郑武 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1