一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Linux操作系统上系统级进程间视频共享方法与流程

2022-06-08 14:18:49 来源:中国专利 TAG:

一种linux操作系统上系统级进程间视频共享方法
技术领域
1.本发明涉及视频传输技术领域,具体涉及一种linux操作系统上系统级进程间视频共享方法、电子设备和可读存储介质。


背景技术:

2.随着人脸识别技术的日益普及,越来越多的操作系统选择将人脸识别作为解锁登录设备的一种方式。但人脸识别登录技术在应用于操作系统级别时,往往采用的是前后端进程分离的设计架构,即后端进程进程负责对人脸数据的采集及验证,前端进程进程负责相应的ui界面绘制;此时便涉及到操作系统领域的一个问题:进程间通信的问题,需要把后端进程进程进行采集和验证时的相关状态信息同步给前端进程ui进程。
3.根据调研,目前市场上比较常用的操作系统如windows、安卓、ios在进行人脸识别登录时的处理都仅采用了动态图来代表人脸识别过程的状态和结果,均未对人脸识别的画面进行实时展示。但在一些应用场景中,用户由于人脸采集设备(摄像头)位置的不确定性,需要在人脸识别展示实时画面通过确定人脸的位置以提高识别的精度和准度,因此操作系统级别进程间视频数据的传输显得愈发重要。


技术实现要素:

4.解决的技术问题针对现有技术所存在的上述缺点,本发明提供了一种linux操作系统上系统级进程间视频共享方法,该方法基于linux操作系统提供一种系统级进程间视频消息的传递方式。
5.技术方案为实现以上目的,本发明通过以下技术方案予以实现:本发明提供了一种linux操作系统上系统级进程间视频共享方法,其特征在于,包括如下步骤:s1、创建内存虚拟文件;s2、后端进程采集视频数据;s3、将所述视频数据的每一帧图像写入所述内存虚拟文件;s4、写入完成后,所述后端进程向前端进程发送图像写入完成信号;s5、所述前端进程接收所述图像写入完成信号,从所述内存虚拟文件中读取所述视频数据的每一帧图像进行绘制。
6.进一步地,步骤s1还包括获取所述内存虚拟文件的文件描述符,步骤s3通过所述文件描述符的指向将所述视屏数据的每一帧图像写入所述内存虚拟文件。
7.进一步地,步骤s1具体包括:所述内存虚拟文件通过memfd_create创建,创建完成后的api返回值通过认证接口同步给所述前端进程,所述api返回值为所述文件描述符。
8.进一步地,所述后端进程通过摄像头采集所述视频数据。
9.进一步地,利用opencv相关类,实例化所述摄像头,并循环读取所述摄像头的视频帧,得到所述视频数据。
10.进一步地,所述linux操作系统上系统级进程间视频共享方法用于人脸识别。
11.进一步地,人脸识别完成后,所述后端进程停止获取所述视频数据,并且所述内存虚拟文件释放。
12.进一步地,所述前端进程和所述后端进程之间通过dbus通道传递信息。
13.基于同一发明构想,本发明提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述任一项所述的方法。
14.基于同一发明构想,本发明提供了一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述任一项所述的方法。
15.有益效果1)本发明基于linux操作系统提供一种进程间视频消息的传递方式,可以解决在linux系操作系统级别进行人脸识别认证时无法实时展示人脸采集画面的问题;2)本发明利用内存虚拟文件进行视频数据转存,由于是直接在内存中进行操作,避免了创建实际磁盘文件带来的io开销;3)本发明在视频消息传递结束时,将创建的内存虚拟文件和文件描述符的释放,避免了内存垃圾的产生,进而避免了多次进行视频消息传递时对性能造成的影响。
附图说明
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明一实施例提供的linux操作系统上系统级进程间视频共享方法步骤示意图;图2为本发明一实施例提供的linux操作系统上系统级进程间视频共享方法流程框架图;图3为本发明一实施例提供的linux操作系统上系统级进程间视频共享方法应用于人脸识别时的流程框架图。
具体实施方式
18.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.首先,对本发明用到的技术术语进行解释:进程:进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。进程间通信:进程的用户空间是互相独立的,一般而言是
不能互相访问的,不同进程之间传播或交换信息,叫做进程间通信。视频帧:构成视频信息的每一张图像。内存虚拟文件:这个文件就像是一个普通文件一样,所以能够被修改,截断,内存映射等等。不同于一般文件,此文件是保存在ram中。dbus通道:linux上一种进程间消息传递总线。linux:在本文指基于linux开发的桌面操作系统,如ubuntu,centos,统一操作系统(uos),麒麟操作系统(kylinos)等。
20.参阅图1,本发明一实施例提供了一种linux操作系统上系统级进程间视频共享方法,其特征在于,包括如下步骤:s1、创建内存虚拟文件;s2、后端进程采集视频数据;s3、将所述视频数据的每一帧图像写入所述内存虚拟文件;s4、写入完成后,所述后端进程向前端进程发送图像写入完成信号;s5、所述前端进程接收所述图像写入完成信号,从所述内存虚拟文件中读取所述视频数据的每一帧图像进行绘制。
21.该方法可以基于linux操作系统提供一种进程间视频消息的传递方式,且利用内存虚拟文件进行视频数据转存,由于是直接在内存中进行操作,避免了创建实际磁盘文件带来的io开销。
22.具体实施的时候,参阅图2,在linux系操作系统上,有两个进程,一个是由systemd服务拉起的进程a,即所述后端进程,负责采集所述视频数据,并进行相关权限认证处理动作;另一个进程为所述前端进程,负责进行相关界面的绘制,例如该进程可以是ui图像绘制进程。虽然后端进程在应用级别进程时,可单独绘制相关窗体,进行采集图像的绘制。但在操作系统上应用时,由于设计操作系统权限认证、登录等操作,往往被当作一个系统服务被拉起,特别是在linux系操作系统上则可被认为是systemd进程。由于没有相关图形资源为其进行图像显示,所以必须将相关视频图像帧数据传递给所述前端进程进行绘制,即涉及到linux上视频消息的进程间通讯。
23.本发明提供的方法在用户与所述前端进程进行交互时,用户进行相关操作,请求视频信息,所述前端进程调用后端接口进行视频消息的采集,得到所述视频数据,此时所述后端进程开始执行视频图像帧的采集,并创建一个内存虚拟文件;进而,所述后端进程将采集到的每一帧视频图像向所述内存虚拟文件写入,写入完毕后,向所述前端进程发送图像写入完毕信号,所述前端进程接收到所述图像写入完毕信号,便从之前接收到的所述内存虚拟文件,读取相关帧图像数据,在相关界面上进行绘制,例如,在ui界面进行绘制,并以此循环往复,实现视频在ui界面的显示。在所述前端进程终止相关视频时,再次调用所述后端进程提供的相关接口,终止所述后端进程视频图像的采集。
24.在本实施例中,步骤s1还包括获取所述内存虚拟文件的文件描述符,步骤s3通过所述文件描述符的指向将所述视屏数据的每一帧图像写入所述内存虚拟文件。具体地,所述后端进程可以通过memfd_create创建所述内存虚拟文件,获取其文件描述符fd,并将此fd通过dbus通道(dbus可规定传递参数为file descripitor)返回给所述前端进程;所述后端进程将采集到的每一帧视频图像向文件描述符指向的所述内存虚拟文件写入,写入完毕后,通过dbus通道向前端发送所述图像写入完毕信号。
25.在本实施例中,所述后端进程一般通过摄像头采集所述视频数据。具体地,先利用
opencv相关类,实例化所述摄像头,并循环读取所述摄像头的视频帧,得到所述视频数据。这就使得上述方法在人脸识别领域有广泛的应用,基于linux操作系统提供一种进程间视频消息的传递方式,可以解决在linux系操作系统级别进行人脸识别认证时无法实时展示人脸采集画面的问题。
26.具体地,参阅图2,在启动系统进行登录时,采用人脸识别方式进行登录,此时所述前端进程为登录界面进程,所述后端进程为相关生物识别管理进程。当用户在登录界面选择人脸识别登录时,所述前端进程会调用所述后端进程人脸识别模块的认证接口,后端进程在认证流程中,会进行以下操作:1)创建内存虚拟文件,获取其文件描述符:通过memfd_create创建,该api返回值为创建成功的虚拟内存文件的文件描述符,并通过认证接口同步给所述前端进程。
27.2)开启摄像头,读取摄像头采集画面的视频流,利用opencv相关类,实例化摄像头,并循环读取摄像头的视频帧。
28.3)将每一帧图像,写入文件描述符指向的内存虚拟文件中,具体可通过系统接口write,将图像二进制数据写入文件。
29.4)所述后端进程向所述前端进程发送图像写入完成信号。
30.5)所述前端进程接收所述图像写入完成信号,从内存虚拟文件中读取视频帧数据进行绘制。
31.在本实施例中,人脸识别完成后,所述后端进程将会关闭摄像头停止从中读取所述视频数据,并释放相关内存虚拟文件及文件描述符,将创建的内存虚拟文件和文件描述符的释放,避免了内存垃圾的产生,进而避免了多次进行视频消息传递时对性能造成的影响。
32.基于同一发明构想,本发明还提供了一种电子设备,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现所述基于权限管控的文件数据全文检索方法。
33.所述处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器(例如gpu(graphics processing unit-图形处理器))、或其他数据处理芯片。该处理器通常用于控制所述电子设备的总体操作。本实施例中,所述处理器用于运行所述存储器中存储的程序代码或者处理数据,例如运行所述linux操作系统上系统级进程间视频共享方法的程序代码。
34.所述存储器至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器可以是所述电子设备的内部存储单元,例如该电子设备的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card, smc),安全数字(secure digital, sd)卡,闪存卡(flash card)等。当然,所述存储器还可以既包括所述电子设备的内部存储单元也包括其外部存储设备。本实施例中,所述存储器通常用于存储安装于所述电子设备的操作方法和各类应用软件,例如所述linux操作系统上系统级进程间视频共享方法的程序代码等。此外,所述存储器还可以用于
暂时地存储已经输出或者将要输出的各类数据。
35.基于同一发明构想,本发明还提供一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现所述linux操作系统上系统级进程间视频共享方法。
36.综上所述,本发明的优点在于基于linux操作系统提供一种进程间视频消息的传递方式,可以解决在linux系操作系统级别进行人脸识别认证时无法实时展示人脸采集画面的问题;进一步地,本发明利用内存虚拟文件进行视频数据转存,由于是直接在内存中进行操作,避免了创建实际磁盘文件带来的io开销;最后,本发明在视频消息传递结束时,将创建的内存虚拟文件和文件描述符的释放,避免了内存垃圾的产生,进而避免了多次进行视频消息传递时对性能造成的影响。
37.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献