CN108845861A - 虚拟摄像头的实现方法及装置 - Google Patents
虚拟摄像头的实现方法及装置 Download PDFInfo
- Publication number
- CN108845861A CN108845861A CN201810472464.0A CN201810472464A CN108845861A CN 108845861 A CN108845861 A CN 108845861A CN 201810472464 A CN201810472464 A CN 201810472464A CN 108845861 A CN108845861 A CN 108845861A
- Authority
- CN
- China
- Prior art keywords
- camera
- softcam
- function
- image data
- data source
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Studio Devices (AREA)
Abstract
本发明涉及图像处理技术领域,尤其涉及虚拟摄像头的实现方法及装置,应用于安卓平台,包括:挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;当目标应用程序调用摄像头打开函数,生成虚拟摄像头对象,将虚拟摄像头对象发送给摄像头软件层;配置图像数据源给虚拟摄像头对象,建立虚拟摄像头对象与图像数据源之间的对应关系;当摄像头软件层调用摄像头回调函数,将摄像头回调函数保存到虚拟摄像头对象中;当摄像头软件层调用摄像头预览函数,从与虚拟摄像头对象对应的图像数据源中获取图像数据,调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对图像数据进行预览。本发明扩展了图像数据的来源。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及虚拟摄像头的实现方法及装置。
背景技术
摄像头是当今电子设备的标准硬件配置,摄像头的主要作用是为电子设备提供捕捉图像的功能,通过摄像头不仅能够采集得到静态图像,还能够采集得到动态图像。摄像头从上层到下层分别为软件层和硬件层,摄像头在软件层的使用方法通常包括以下步骤:首先打开摄像头,接着控制摄像头捕捉图像,最后关闭摄像头。然而,在现有技术中,电子设备的图像数据来源仅能由硬件摄像头提供,存在图像数据来源单一的问题,无法满足用户日益增长的使用需求。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的虚拟摄像头的实现方法及装置。
依据本发明的第一个方面,提供了一种虚拟摄像头的实现方法,应用在安卓平台中,所述方法包括:
挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层。
优选的,所述生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层,包括:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
优选的,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
优选的,所述配置图像数据源给所述虚拟摄像头对象,包括:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
优选的,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
优选的,所述摄像头打开函数为Camera.open函数。
优选的,所述摄像头预览函数为Camera.startPreview函数。
依据本发明的第二个方面,提供了一种虚拟摄像头的实现装置,应用在安卓平台中,所述装置包括:
挂钩模块,用于挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
生成模块,用于当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置模块,用于配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
保存模块,用于当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
获取模块,用于当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
优选的,所述生成模块,具体用于:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
优选的,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
优选的,所述配置模块,具体用于:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
优选的,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
优选的,所述摄像头打开函数为Camera.open函数。
优选的,所述摄像头预览函数为Camera.startPreview函数。
依据本发明的第三个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述第一个方面中的方法步骤。
依据本发明的第四个方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前述第一个方面中的方法步骤。
根据本发明的虚拟摄像头的实现方法及装置,在安卓平台中,首先挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数,从而,当目标应用程序调用摄像头打开函数时,生成虚拟摄像头对象,并将虚拟摄像头对象发送给摄像头软件层,接着,配置图像数据源给虚拟摄像头对象,建立虚拟摄像头对象与图像数据源之间的对应关,当摄像头软件层调用摄像头回调函数时,将摄像头回调函数保存到虚拟摄像头对象中,当摄像头软件层调用摄像头预览函数时,从与虚拟摄像头对象对应的图像数据源中获取图像数据,并调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对图像数据进行预览,本发明通过虚拟摄像头实现了对图像数据的预览,扩展了图像数据的来源,使得电子设备的图像数据来源不再仅依靠硬件摄像头提供,满了用户日益增长的使用需求。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:
图1示出了本发明实施例中虚拟摄像头的实现方法的流程图;
图2示出了本发明实施例中虚拟摄像头的实现装置的结构图;
图3示出了本发明实施例中计算机设备的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供一种虚拟摄像头的实现方法,应用在安卓平台中,具体地,该虚拟摄像头的实现方法可以应用于安装有安卓系统的电子设备中,该电子设备可以手机、平板电脑或计算机等,进一步,该电子设备可以包含硬件摄像头,也可以不包含硬件摄像头,另外,该安卓平台至少包含摄像头的上层,即摄像头软件层,当电子设备包含硬件摄像头时,该安卓平台还包含摄像头的下层,即摄像头硬件层,摄像头软件层和摄像头硬件层与安卓平台下的目标应用程序关联。本发明实施例中的虚拟摄像头的实现方法的执行主体可以为安卓平台,即电子设备中的安卓操作系统。
依据图1所示,本发明实施例中的虚拟摄像头的实现方法包括:
步骤101:挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数。
步骤102:当目标应用程序调用摄像头打开函数时,生成虚拟摄像头对象,并将虚拟摄像头对象发送给摄像头软件层;
步骤103:配置图像数据源给虚拟摄像头对象,建立虚拟摄像头对象与图像数据源之间的对应关系;
步骤104:当摄像头软件层调用摄像头回调函数时,将摄像头回调函数保存到虚拟摄像头对象中;
步骤105:当摄像头软件层调用摄像头预览函数时,从与虚拟摄像头对象对应的图像数据源中获取图像数据,并调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对图像数据进行预览。
本发明的虚拟摄像头的实现方法,在安卓平台中,首先挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数,从而,当目标应用程序调用摄像头打开函数时,生成虚拟摄像头对象,并将虚拟摄像头对象发送给摄像头软件层,接着,配置图像数据源给虚拟摄像头对象,建立虚拟摄像头对象与图像数据源之间的对应关,当摄像头软件层调用摄像头回调函数时,将摄像头回调函数保存到虚拟摄像头对象中,当摄像头软件层调用摄像头预览函数时,从与虚拟摄像头对象对应的图像数据源中获取图像数据,并调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对图像数据进行预览,本发明通过虚拟摄像头实现了对图像数据的预览,而由于虚拟摄像头的图像数据来源可以由用户自定义,因此,本发明扩展了图像数据的来源,使得电子设备的图像数据来源不再仅依靠硬件摄像头提供,满了用户日益增长的使用需求。
在本发明实施例中,摄像头打开函数、摄像头回调函数和摄像头预览函数均为摄像头应用程序编程接口函数。其中,摄像头打开函数为用于打开摄像头的函数,无论是硬件摄像头还是虚拟摄像头,在实现时均需要调用摄像头打开函数,在本发明实施例中,摄像头打开函数可以为Camera.open函数。其中,摄像头回调函数为通过函数指针调用的函数,具体地,若把函数的指针,也即函数的地址,作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,即成为回调函数,回调函数并非由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应,下文将会摄像头回调函数的应用进行详细描述,在本发明实施例中,摄像头回调函数可以为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。其中,摄像头预览函数为用于预览图像数据的函数,在本发明实施例中,摄像头预览函数可以为Camera.startPreview函数。
具体来讲,在步骤101中,通过Hook手段挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数。其中,挂钩机制是一种消息处理机制,应用程序可以在通过Hook设置子程以监视指定窗口的某种消息,当消息到达后,在目标窗口处理函数之前处理消息,挂钩机制允许应用程序截获处理消息或特定事件。具体来讲,在本发明实施例中,通过设置挂钩程序段,利用系统调用将挂钩程序段挂入安卓平台中,该挂钩程序段挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数,当涉及摄像头打开函数、摄像头回调函数和摄像头预览函数的消息发出且没有到达目的窗口前,挂钩程序先捕获该消息,以等待执行后续方法步骤。
具体来讲,在步骤102中,当挂钩住Camera.open函数后,在目标应用程序调用Camera.open函数时,生成虚拟摄像头对象,并将虚拟摄像头对象发送给摄像头软件层。在本发明优选的实施例中,在安卓平台中添加虚拟摄像头管理器,当目标应用程序调用Camera.open函数时,利用虚拟摄像头管理器生成虚拟摄像头对象,并利用虚拟摄像头管理器将虚拟摄像头对象发送给摄像头软件层。通过虚拟摄像头管理器能够实现对虚拟摄像头对象的有效管理。
具体来讲,在步骤103中,图像数据源可以为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种,视频播放数据源包含视频数据,图像美化数据源包含美化的图像数据,硬件摄像头数据源即为传统的由硬件摄像头采集图像或视频数据,当图像数据源为硬件摄像头数据源时,本发明实施例的方法所应用的电子设备应包含硬件摄像头。从而,可以配置视频播放数据源给虚拟摄像头对象,也可以配置图像美化数据源给虚拟摄像头对象,还可以配置硬件摄像头数据源给虚拟摄像头对象,对于配置给虚拟摄像头对象的图像数据源的类型可以预先定义。在本发明优选的实施例中,在安卓平台中添加数据源管理器,图像数据源对象寄存在数据源管理器中,利用数据源管理器配置图像数据源给虚拟摄像头对象。
具体来讲,在步骤104中,摄像头回调函数可以为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。其中,setPreviewCallback函数也被称为Camera.PreviewCallback函数,使用此函数注册一个Camera.PreviewCallback,将会确保屏幕上显示一个新的预览帧时调用onPreviewFrame方法,传递到onPreviewFrame方法中的数据字节数组可以采用YUV格式。对于setPreviewCallback函数的使用方法,具体来讲,在使用setPreviewCallback函数的过程中,首先定义一个类实现Camera.PreviewCallback接口,接着,在类的onPreviewFrame(byte[]data,Camera camera)方法中即可接收到每一帧的预览数据,然后使用setPreviewCallback()注册回调接口,对于setPreviewCallback函数而言,一旦使用该方法注册预览回调接口,onPreviewFrame()方法会一直被调用,直到camera preview销毁,onPreviewFrame()方法跟Camera.open()是运行于同一个线程,所以为了防止onPreviewFrame()阻塞UI线程,将Camera.open()放置在子线程中运行。其中,setPreviewCallbackWithBuffer函数也被称为Camera.PreviewCallback函数,setPreviewCallbackWithBuffer函数与setPreviewCallback函数的工作方式相同,但是,setPreviewCallbackWithBuffer函数要求指定一个字节数组作为缓冲区,用于预览图像数据,从而更好地管理处理预览图像时使用的内存。
进一步,在步骤104中,无论摄像头软件层调用setPreviewCallback函数还是setPreviewCallbackWithBuffer函数,在摄像头软件层调用摄像头回调函数后,都会将摄像头回调函数保存到虚拟摄像头对象中,即,若摄像头软件层调用setPreviewCallback函数,则将setPreviewCallback函数保存到虚拟摄像头对象中,若摄像头软件层调用setPreviewCallbackWithBuffer函数,则将setPreviewCallbackWithBuffer函数保存到虚拟摄像头对象中。通过将摄像头回调函数保存到虚拟摄像头对象中,以便后续对配置给摄像头对象的图像数据源进行回调预览。
具体来讲,在步骤105中,当摄像头软件层调用Camera.startPreview函数以进行预览时,首先,从与虚拟摄像头对象对应的图像数据源中获取图像数据,该图像数据可以为视频数据,也可以为美化的图像数据,还可以为由硬件摄像头采集图像或视频数据,接着,调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,最后,摄像头软件层将会对图像数据进行预览,从而,实现了对与虚拟摄像头对象对应的图像数据源的预览,扩展了电子设备预览的图像数据的来源,使得电子设备的图像数据来源不再仅依靠硬件摄像头提供,满足了用户日益增长的使用需求。
需要说明的是,本发明实施例中的虚拟摄像头的实现方法还可以实现多个图像数据的预览,具体来讲:
在步骤102中,当目标应用程序调用摄像头打开函数时,可以生成多个虚拟摄像头对象,其中,可以通过虚拟摄像头管理器生成多个虚拟摄像头对象,即,通过虚拟摄像头管理器生成第一虚拟摄像头对象、第二虚拟摄像头对象、第三虚拟摄像头对象……第N虚拟摄像头对象,N为正整数,在生成上述虚拟摄像头对象之后,虚拟摄像头管理器将第一虚拟摄像头对象、第二虚拟摄像头对象、第三虚拟摄像头对象……第N虚拟摄像头对象发送给摄像头软件层,虚拟摄像头管理器可以对生成的多个虚拟摄像头对象进行管理。
接着,在步骤103中,可以通过数据源管理器为每个虚拟摄像头对象配置一个图像数据源,例如,为第一虚拟摄像头对象配置视频播放数据源,建立第一虚拟摄像头对象与视频播放数据源之间的对应关系,为第二虚拟摄像头对象配置图像美化数据源,建立第二虚拟摄像头对象与图像美化数据源之间的对应关系,为第三虚拟摄像头对象配置硬件摄像头数据源,建立第三虚拟摄像头对象与硬件摄像头数据源之间的对应关系。其中,配置给不同虚拟摄像头对象的图像数据源的类型可以相同,也可以不同。
进一步,在步骤104中,当摄像头软件层调用摄像头回调函数时,将摄像头回调函数分别保存到各个虚拟摄像头对象中,例如,将摄像头回调函数分别保存到第一虚拟摄像头对象、第二虚拟摄像头对象和第三虚拟摄像头对象中。进一步,在步骤105中,当摄像头软件层调用摄像头预览函数时,从与各个虚拟摄像头对象对应的图像数据源中获取图像数据,并调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对各个图像数据进行预览。例如,当摄像头软件层调用摄像头预览函数时,从与第一虚拟摄像头对象对应的视频播放数据源中获取视频播放数据,调用第一虚拟摄像头对象中的摄像头回调函数将视频播放数据传递至摄像头软件层,以使目标应用程序对视频播放数据进行预览,以及,从与第二虚拟摄像头对象对应的图像美化数据源中获取图像美化数据,调用第二虚拟摄像头对象中的摄像头回调函数将图像美化数据传递至摄像头软件层,以使目标应用程序对图像美化数据进行预览,以及,从与第三虚拟摄像头对象对应的硬件摄像头数据源中获取硬件摄像头数据,调用第三虚拟摄像头对象中的摄像头回调函数将硬件摄像头数据传递至摄像头软件层,以使目标应用程序对硬件摄像头数据进行预览,从而实现了利用虚拟摄像头同时扩展出多种类型的图像数据源的技术效果。
基于同一发明构思,本发明实施例还提供一种虚拟摄像头的实现装置,如图2所示,应用在安卓平台中,所述装置包括:
挂钩模块201,用于挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
生成模块202,用于当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置模块203,用于配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
保存模块204,用于当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
获取模块205,用于当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
优选的,生成模块202,具体用于:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
优选的,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
优选的,配置模块203,具体用于:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
优选的,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
优选的,所述摄像头打开函数为Camera.open函数。
优选的,所述摄像头预览函数为Camera.startPreview函数。
基于同一发明构思,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述实施例所述的方法步骤。
基于同一发明构思,本发明实施例还提供了一种计算机设备,如图3所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以计算机设备为手机为例:
图3示出的是与本发明实施例提供的计算机设备相关的部分结构的框图。参考图3,该计算机设备包括:存储器301和处理器302。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
存储器301可用于存储软件程序以及模块,处理器302通过运行存储在存储器301的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储数据(比如音频数据、电话本等)等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器302是计算机设备的控制中心,通过运行或执行存储在存储器301内的软件程序和/或模块,以及调用存储在存储器301内的数据,执行各种功能和处理数据。可选的,处理器302可包括一个或多个处理单元;优选的,处理器302可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
在本发明实施例中,该计算机设备所包括的处理器302可以具有前述实施例中任一方法步骤所对应的功能。
总之,根据本发明的虚拟摄像头的实现方法及装置,在安卓平台中,首先挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数,从而,当目标应用程序调用摄像头打开函数时,生成虚拟摄像头对象,并将虚拟摄像头对象发送给摄像头软件层,接着,配置图像数据源给虚拟摄像头对象,建立虚拟摄像头对象与图像数据源之间的对应关,当摄像头软件层调用摄像头回调函数时,将摄像头回调函数保存到虚拟摄像头对象中,当摄像头软件层调用摄像头预览函数时,从与虚拟摄像头对象对应的图像数据源中获取图像数据,并调用虚拟摄像头对象中的摄像头回调函数将图像数据传递至摄像头软件层,以使目标应用程序对图像数据进行预览,本发明通过虚拟摄像头实现了对图像数据的预览,而由于虚拟摄像头的图像数据来源可以由用户自定义,因此,本发明扩展了图像数据的来源,使得电子设备的图像数据来源不再仅依靠硬件摄像头提供,满了用户日益增长的使用需求。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
A1、一种虚拟摄像头的实现方法,其特征在于,应用在安卓平台中,所述方法包括:
挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
A2、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层,包括:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
A3、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
A4、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述配置图像数据源给所述虚拟摄像头对象,包括:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
A5、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
A6、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头打开函数为Camera.open函数。
A7、根据A1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头预览函数为Camera.startPreview函数。
B8、一种虚拟摄像头的实现装置,其特征在于,应用在安卓平台中,所述装置包括:
挂钩模块,用于挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
生成模块,用于当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置模块,用于配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
保存模块,用于当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
获取模块,用于当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
B9、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述生成模块,具体用于:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
B10、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
B11、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述配置模块,具体用于:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
B12、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
B13、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述摄像头打开函数为Camera.open函数。
B14、根据B8所述的虚拟摄像头的实现装置,其特征在于,所述摄像头预览函数为Camera.startPreview函数。
C15、一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现根据A1-A7中任一权利要求所述的方法步骤。
C16、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现根据A1-A7中任一权利要求所述的方法步骤。
Claims (10)
1.一种虚拟摄像头的实现方法,其特征在于,应用在安卓平台中,所述方法包括:
挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
2.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层,包括:
利用虚拟摄像头管理器生成虚拟摄像头对象,并利用所述虚拟摄像头管理器将所述虚拟摄像头对象发送给所述摄像头软件层。
3.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述图像数据源为视频播放数据源、图像美化数据源和硬件摄像头数据源中的任一种。
4.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述配置图像数据源给所述虚拟摄像头对象,包括:
利用数据源管理器配置图像数据源给所述虚拟摄像头对象。
5.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头回调函数为setPreviewCallback函数或setPreviewCallbackWithBuffer函数。
6.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头打开函数为Camera.open函数。
7.如权利要求1所述的虚拟摄像头的实现方法,其特征在于,所述摄像头预览函数为Camera.startPreview函数。
8.一种虚拟摄像头的实现装置,其特征在于,应用在安卓平台中,所述装置包括:
挂钩模块,用于挂钩住摄像头打开函数、摄像头回调函数和摄像头预览函数;
生成模块,用于当目标应用程序调用所述摄像头打开函数时,生成虚拟摄像头对象,并将所述虚拟摄像头对象发送给摄像头软件层;
配置模块,用于配置图像数据源给所述虚拟摄像头对象,建立所述虚拟摄像头对象与所述图像数据源之间的对应关系;
保存模块,用于当所述摄像头软件层调用所述摄像头回调函数时,将所述摄像头回调函数保存到所述虚拟摄像头对象中;
获取模块,用于当所述摄像头软件层调用所述摄像头预览函数时,从与所述虚拟摄像头对象对应的所述图像数据源中获取图像数据,并调用所述虚拟摄像头对象中的所述摄像头回调函数将所述图像数据传递至所述摄像头软件层,以使所述目标应用程序对所述图像数据进行预览。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一权利要求所述的方法步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一权利要求所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810472464.0A CN108845861B (zh) | 2018-05-17 | 2018-05-17 | 虚拟摄像头的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810472464.0A CN108845861B (zh) | 2018-05-17 | 2018-05-17 | 虚拟摄像头的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845861A true CN108845861A (zh) | 2018-11-20 |
CN108845861B CN108845861B (zh) | 2021-04-23 |
Family
ID=64213201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810472464.0A Active CN108845861B (zh) | 2018-05-17 | 2018-05-17 | 虚拟摄像头的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845861B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109756620A (zh) * | 2018-12-15 | 2019-05-14 | 深圳壹账通智能科技有限公司 | 基于手机的虚拟摄像头识别方法及相关设备 |
CN111565332A (zh) * | 2020-04-27 | 2020-08-21 | 北京字节跳动网络技术有限公司 | 视频传输方法、电子设备和计算机可读介质 |
CN112363767A (zh) * | 2020-11-11 | 2021-02-12 | 广州小鹏汽车科技有限公司 | 一种车载摄像头调用方法和装置 |
CN112492193A (zh) * | 2019-09-12 | 2021-03-12 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
CN113055597A (zh) * | 2021-03-25 | 2021-06-29 | 联想(北京)有限公司 | 摄像头调用实现方法、装置及电子设备 |
CN113220445A (zh) * | 2021-03-26 | 2021-08-06 | 西安神鸟软件科技有限公司 | 一种图像或视频数据获取方法及终端设备 |
CN113220446A (zh) * | 2021-03-26 | 2021-08-06 | 西安神鸟软件科技有限公司 | 一种图像或视频数据处理方法及终端设备 |
CN114500877A (zh) * | 2021-12-30 | 2022-05-13 | 惠州华阳通用智慧车载系统开发有限公司 | 一种摄像头的共享方法、系统及存储介质 |
US11368628B2 (en) | 2020-10-19 | 2022-06-21 | Light Wave Technology Inc. | System for tracking a user during a videotelephony session and method of use thereof |
CN115242970A (zh) * | 2022-06-23 | 2022-10-25 | 重庆长安汽车股份有限公司 | 车机摄像头数据共享系统、方法、电子设备及存储介质 |
CN116366957A (zh) * | 2022-07-21 | 2023-06-30 | 荣耀终端有限公司 | 一种虚拟化相机使能的方法、电子设备及协同工作系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801124A (zh) * | 2004-12-31 | 2006-07-12 | 联想(北京)有限公司 | 采用照相手机作为计算机摄像头获取视频数据的方法 |
CN1881189A (zh) * | 2005-06-17 | 2006-12-20 | 杭州波导软件有限公司 | 一种电脑接收带摄像头手机输入视频数据的方法及系统 |
CN101056385A (zh) * | 2007-04-29 | 2007-10-17 | 华为技术有限公司 | 视频通信方法、视频合成处理器、终端及服务器 |
CN101179660A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 摄像头视频图像处理的系统及其方法 |
US20080263460A1 (en) * | 2007-04-20 | 2008-10-23 | Utbk, Inc. | Methods and Systems to Connect People for Virtual Meeting in Virtual Reality |
CN101833520A (zh) * | 2009-03-11 | 2010-09-15 | 凹凸电子(武汉)有限公司 | 计算机系统、多个应用程序同时使用一个摄像头的方法 |
CN102081547A (zh) * | 2011-01-26 | 2011-06-01 | 博视联(苏州)信息科技有限公司 | 提高嵌入式智能设备硬件通用性的方法 |
CN102591696A (zh) * | 2011-01-14 | 2012-07-18 | 中国科学院软件研究所 | 一种手机软件行为数据提取方法及系统 |
CN102970542A (zh) * | 2012-11-30 | 2013-03-13 | 上海晨思电子科技有限公司 | 一种视频数据转换的方法、装置和智能电视 |
CN103873890A (zh) * | 2014-03-04 | 2014-06-18 | 深圳市深信服电子科技有限公司 | 拍照软件的流量控制方法及系统 |
US20140320592A1 (en) * | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Virtual Video Camera |
-
2018
- 2018-05-17 CN CN201810472464.0A patent/CN108845861B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801124A (zh) * | 2004-12-31 | 2006-07-12 | 联想(北京)有限公司 | 采用照相手机作为计算机摄像头获取视频数据的方法 |
CN1881189A (zh) * | 2005-06-17 | 2006-12-20 | 杭州波导软件有限公司 | 一种电脑接收带摄像头手机输入视频数据的方法及系统 |
US20080263460A1 (en) * | 2007-04-20 | 2008-10-23 | Utbk, Inc. | Methods and Systems to Connect People for Virtual Meeting in Virtual Reality |
CN101056385A (zh) * | 2007-04-29 | 2007-10-17 | 华为技术有限公司 | 视频通信方法、视频合成处理器、终端及服务器 |
CN101179660A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 摄像头视频图像处理的系统及其方法 |
CN101833520A (zh) * | 2009-03-11 | 2010-09-15 | 凹凸电子(武汉)有限公司 | 计算机系统、多个应用程序同时使用一个摄像头的方法 |
CN102591696A (zh) * | 2011-01-14 | 2012-07-18 | 中国科学院软件研究所 | 一种手机软件行为数据提取方法及系统 |
CN102081547A (zh) * | 2011-01-26 | 2011-06-01 | 博视联(苏州)信息科技有限公司 | 提高嵌入式智能设备硬件通用性的方法 |
CN102970542A (zh) * | 2012-11-30 | 2013-03-13 | 上海晨思电子科技有限公司 | 一种视频数据转换的方法、装置和智能电视 |
US20140320592A1 (en) * | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Virtual Video Camera |
CN103873890A (zh) * | 2014-03-04 | 2014-06-18 | 深圳市深信服电子科技有限公司 | 拍照软件的流量控制方法及系统 |
Non-Patent Citations (1)
Title |
---|
余文权: "虚拟摄像头开发模式及其应用研究", 《微计算机信息》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109756620A (zh) * | 2018-12-15 | 2019-05-14 | 深圳壹账通智能科技有限公司 | 基于手机的虚拟摄像头识别方法及相关设备 |
CN112492193B (zh) * | 2019-09-12 | 2022-02-18 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
CN112492193A (zh) * | 2019-09-12 | 2021-03-12 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
WO2021047567A1 (zh) * | 2019-09-12 | 2021-03-18 | 华为技术有限公司 | 一种回调流的处理方法及设备 |
US11849213B2 (en) | 2019-09-12 | 2023-12-19 | Huawei Technologies Co., Ltd. | Parallel preview stream and callback stream processing method and device |
CN111565332A (zh) * | 2020-04-27 | 2020-08-21 | 北京字节跳动网络技术有限公司 | 视频传输方法、电子设备和计算机可读介质 |
US11368628B2 (en) | 2020-10-19 | 2022-06-21 | Light Wave Technology Inc. | System for tracking a user during a videotelephony session and method of use thereof |
CN112363767A (zh) * | 2020-11-11 | 2021-02-12 | 广州小鹏汽车科技有限公司 | 一种车载摄像头调用方法和装置 |
CN113055597B (zh) * | 2021-03-25 | 2022-06-28 | 联想(北京)有限公司 | 摄像头调用实现方法、装置及电子设备 |
CN113055597A (zh) * | 2021-03-25 | 2021-06-29 | 联想(北京)有限公司 | 摄像头调用实现方法、装置及电子设备 |
CN113220446A (zh) * | 2021-03-26 | 2021-08-06 | 西安神鸟软件科技有限公司 | 一种图像或视频数据处理方法及终端设备 |
CN113220445A (zh) * | 2021-03-26 | 2021-08-06 | 西安神鸟软件科技有限公司 | 一种图像或视频数据获取方法及终端设备 |
CN114500877A (zh) * | 2021-12-30 | 2022-05-13 | 惠州华阳通用智慧车载系统开发有限公司 | 一种摄像头的共享方法、系统及存储介质 |
CN115242970A (zh) * | 2022-06-23 | 2022-10-25 | 重庆长安汽车股份有限公司 | 车机摄像头数据共享系统、方法、电子设备及存储介质 |
CN115242970B (zh) * | 2022-06-23 | 2023-06-30 | 重庆长安汽车股份有限公司 | 车机摄像头数据共享系统、方法、电子设备及存储介质 |
CN116366957A (zh) * | 2022-07-21 | 2023-06-30 | 荣耀终端有限公司 | 一种虚拟化相机使能的方法、电子设备及协同工作系统 |
CN116366957B (zh) * | 2022-07-21 | 2023-11-14 | 荣耀终端有限公司 | 一种虚拟化相机使能的方法、电子设备及协同工作系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108845861B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845861A (zh) | 虚拟摄像头的实现方法及装置 | |
US11233826B2 (en) | System and method of microservice-based application deployment with automating authorization configuration | |
CN103577757B (zh) | 病毒防御方法和装置 | |
US9535677B2 (en) | Software discovery in an environment with heterogeneous machine groups | |
CN107666525A (zh) | 集群容器ip分配的方法和装置 | |
CN106230843A (zh) | 一种为智能手机配置云虚拟手机的方法、服务器和系统 | |
CN104778178B (zh) | 一种应用分类方法、装置、及业务服务器 | |
CN108256006A (zh) | 一种直播间徽章图片加载方法及系统 | |
CN106605231B (zh) | 帐户控制 | |
CN109189400A (zh) | 程序发布方法及装置、存储介质、处理器 | |
CN108495043A (zh) | 图像数据处理方法及相关装置 | |
CN107887003B (zh) | 基于SaaS的医学影像处理方法 | |
CN110381077A (zh) | 针对数字证书的处理方法和装置 | |
CN109033393A (zh) | 贴纸处理方法、装置、存储介质及电子设备 | |
US20140075456A1 (en) | Information processing apparatus and method for controlling information processing apparatus | |
CN108123970A (zh) | 数据展示方法及相关装置 | |
CN106598662A (zh) | 基于android的应用加载方法及装置 | |
WO2020248801A1 (zh) | 模型文件的下发方法、平台、系统、终端及可读存储介质 | |
CN109032767A (zh) | 异步多进程的业务处理系统、方法、装置及存储介质 | |
CN112311741B (zh) | 一种防火墙规则管理方法、装置、介质及设备 | |
CN110417597A (zh) | 用于监控证书的方法及装置、电子设备和可读存储介质 | |
CN112016280B (zh) | 一种文件编辑方法、装置及计算机可读介质 | |
CN109672931A (zh) | 用于处理视频帧的方法和装置 | |
CN110311935A (zh) | 一种分享方法、分享部署系统和客户端 | |
CN104679913B (zh) | 图像存储方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |