CN113784075A - 一种屏幕录像读取方法、系统及计算设备 - Google Patents

一种屏幕录像读取方法、系统及计算设备 Download PDF

Info

Publication number
CN113784075A
CN113784075A CN202111143916.9A CN202111143916A CN113784075A CN 113784075 A CN113784075 A CN 113784075A CN 202111143916 A CN202111143916 A CN 202111143916A CN 113784075 A CN113784075 A CN 113784075A
Authority
CN
China
Prior art keywords
image data
screen image
screen
display
buffer
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
Application number
CN202111143916.9A
Other languages
English (en)
Other versions
CN113784075B (zh
Inventor
侯磊
谢鹏飞
何明洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202111143916.9A priority Critical patent/CN113784075B/zh
Publication of CN113784075A publication Critical patent/CN113784075A/zh
Application granted granted Critical
Publication of CN113784075B publication Critical patent/CN113784075B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/78Television signal recording using magnetic recording
    • H04N5/781Television signal recording using magnetic recording on disks or drums
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4334Recording operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Digital Computer Display Output (AREA)

Abstract

本发明公开了一种屏幕录像读取方法、系统及计算设备,其中方法包括在显示客户端执行,所述显示客户端与显示服务端相连,所述方法包括步骤:从显示服务端获取屏幕图像数据;将所述屏幕图像数据的资源描述符映射到所述显示客户端进程的地址空间;以及从所述地址空间读取屏幕图像数据,并将所述屏幕图像数据写入缓冲区,以便从所述缓冲区读取所述屏幕图像数据来生成屏幕录像。根据本发明的技术方案,提升了获取屏幕图像数据的效率。

Description

一种屏幕录像读取方法、系统及计算设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种屏幕录像读取方法、屏幕录像读取系统及计算设备。
背景技术
目前获取屏幕图像数据,一般是通过DBUS接口获取wayland屏幕图像,将屏幕图像保存到本地磁盘中。根据现有的获取屏幕图像数据的方案,首先,需要使用org.kde.KWin服务、/Screenshot路径、org.kde.kwin.Screenshot接口来建立dbus服务。其次,调用screenshotFullscreen方法,返回远程方法的应答数据QDBusReply<QString>,并从磁盘获取屏幕图像文件路径。最后,根据路径访问本地磁盘上的屏幕图像文件,并将屏幕图像数据读取到内存。
根据现有的技术方案,获取屏幕图像数据的效率较低,获取1帧图像大概需要200ms,低效率的获取数据能力不能满足应用程序的基本需求,例如,录屏幕程序需要在40ms以内获取到1帧图像。而且,这种方案不能直接从内存读取屏幕图像数据,需要从磁盘获取屏幕图像数据,这样,不仅耗费系统资源,并且会降低程序对数据的处理效率。
为此,需要一种屏幕录像读取方法,以解决现有技术中存在的问题。
发明内容
为此,本发明提供一种屏幕录像读取方法、屏幕录像读取系统及计算设备,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种屏幕录像读取方法,在显示客户端执行,所述显示客户端与显示服务端相连,所述方法包括步骤:从显示服务端获取屏幕图像数据;将所述屏幕图像数据的资源描述符映射到所述显示客户端进程的地址空间;以及从所述地址空间读取屏幕图像数据,并将所述屏幕图像数据写入缓冲区,以便从所述缓冲区读取所述屏幕图像数据来生成屏幕录像。
可选地,在根据本发明的屏幕录像读取方法中,从所述地址空间读取屏幕图像数据,并将所述屏幕图像数据写入缓冲区的步骤,包括:通过第一线程从所述地址空间读取屏幕图像数据,将所述屏幕图像数据写入缓冲区;以及通过第二线程从所述缓冲区读取所述屏幕图像数据。
可选地,在根据本发明的屏幕录像读取方法中,在从显示服务端获取屏幕图像数据的资源描述符之前,包括步骤:显示服务端调用显示驱动接口,以获取屏幕图像数据。
可选地,在根据本发明的屏幕录像读取方法中,将所述屏幕图像数据写入缓冲区包括:将所述屏幕图像数据以第一像素格式写入缓冲区;在从所述缓冲区读取所述屏幕图像数据之后,还包括步骤:判断是否对所述屏幕图像数据转换像素格式;如果是,则将所述屏幕图像数据的第一像素格式转换为第二像素格式,并封装为预定数据结构。
可选地,在根据本发明的屏幕录像读取方法中,判断是否对所述屏幕图像数据转换像素格式的步骤还包括:如果否,则将所述屏幕图像数据直接封装为预定数据结构。
可选地,在根据本发明的屏幕录像读取方法中,所述第一像素格式为RGB格式,所述第二像素格式为YUV格式;所述预定数据结构为AVFrame数据结构。
可选地,在根据本发明的屏幕录像读取方法中,所述屏幕图像数据包括图像宽度、图像高度、行字节数、资源描述符中的一种或多种。
可选地,在根据本发明的屏幕录像读取方法中,所述显示客户端为Wayland客户端,所述显示服务端为Wayland服务端。
根据本发明的一个方面,提供一种屏幕录像读取系统,包括:显示客户端,适于执行如上所述的方法;以及显示服务端,与所述显示客户端相连,适于向显示客户端发送屏幕图像数据。
可选地,在根据本发明的屏幕录像读取系统中,其中,所述显示客户端适于通过第一线程从所述地址空间读取屏幕图像数据,将所述屏幕图像数据写入缓冲区,并适于通过第二线程从所述缓冲区读取所述屏幕图像数据。
可选地,在根据本发明的屏幕录像读取系统中,所述显示服务端适于调用显示驱动接口,以获取屏幕图像数据的资源描述符。
根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的屏幕录像读取方法的指令。
根据本发明的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的屏幕录像读取方法。
根据本发明的技术方案,提供了一种屏幕录像读取方法和系统,通过将屏幕图像数据的地址空间映射到显示客户端进程的地址空间,从而可以直接从进程地址空间获取屏幕图像数据,实现了内存数据零拷贝,提升了获取屏幕图像数据的效率,也降低了对磁盘I/O的占用,有利于提升。并且,通过建立缓冲区,将屏幕图像数据写入缓冲区,从缓冲区获取屏幕图像数据来生成屏幕录像,能实现获取屏幕图像数据与生成屏幕录像之间的动态平衡。
另外,本发明采用读写分离的方式,通过第一线程将屏幕图像数据写入缓冲区,并通过第二线程从缓冲区读取屏幕图像数据。根据这种读写分离的机制,能实现实时刷新缓冲区,防止读取数据时阻塞写入数据的流程。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的屏幕录像读取系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的屏幕录像读取方法300的流程图;
图4示出了根据本发明一个实施例的内存映射的原理示意图;以及
图5示出了根据本发明一个实施例的屏幕图像数据读写分离的实现方法流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的屏幕录像读取系统100的示意图,屏幕录像读取系统100驻留在计算设备中。其中,屏幕录像读取系统100包括显示服务端120、一个或多个显示客户端110。一个或多个显示客户端110可以与显示服务端120建立通信连接。
计算设备的操作系统包括内核层、以及布置在内核层之上的用户空间,用户空间可以布置一个或多个应用程序。其中,显示服务端120、显示客户端110布置在操作系统的用户空间。
应当指出,本发明对操作系统的种类不做具体限制,例如,操作系统可以实现为Linux操作系统,也可以实现为Windows操作系统。下文仅以Linux操作系统为例来详细描述本发明的屏幕录像读取系统100。
在一种实现方式中,显示客户端110可以实现为Wayland客户端,显示服务端120可以实现为Wayland服务端。显示客户端110与显示服务端120基于Wayland协议进行通信。并且,Wayland客户端与Wayland服务端采用信号与槽的连接方式进行数据交互。
在根据本发明的实施例中,显示客户端110可以从显示服务端120获取屏幕图像数据,并将屏幕图像数据的资源描述符映射到显示客户端进程的地址空间。随后,显示客户端110从显示客户端进程的地址空间读取屏幕图像数据,并将屏幕图像数据写入缓冲区,之后从缓冲区读取屏幕图像数据,以便基于屏幕图像数据来生成屏幕录像,将屏幕录像显示在屏幕上。
需要说明的是,由于从显示客户端进程的地址空间获取屏幕图像数据的效率,要高于基于屏幕图像数据来生成屏幕录像的效率,而且,屏幕图像的复杂程度不同,也会导致在基于屏幕图像数据生成屏幕录像时所需的时间不同。本发明采用缓存机制,建立缓冲区,将从进程地址空间获取到的屏幕图像数据写入缓冲区,并从缓冲区获取屏幕图像数据来生成屏幕录像,这样,可以在获取屏幕图像数据与生成屏幕录像之间达到动态平衡效果。
在一个实施例中,显示服务端120通过调用显示驱动接口,来获取屏幕图像数据,并将获取到的屏幕图像数据发送至显示客户端110。这里,屏幕图像数据例如包括图像宽度、图像高度、行字节数、屏幕图像数据等资源描述符等显示数据。
具体地,操作系统的内核层包括显示驱动框架drm,显示驱动框架将显示功能封装为open/close/ioctl等标准的显示驱动接口,基于这些显示驱动接口封装为libdrm库。这样,显示服务端通过调用libdrm库能实现间接调用一个或多个显示驱动接口,以获取显示驱动接口返回的屏幕图像数据。随后,显示服务端120将屏幕图像数据推送至显示客户端110。
在一个实施例中,将屏幕图像数据写入缓冲区、从缓冲区读取数据采用了读写分离的方式。具体地,显示客户端110预先创建缓冲区,随后,可以通过第一线程从地址空间读取屏幕图像数据,第一线程将从地址空间读取到的屏幕图像数据写入缓冲区。并且,显示客户端110通过实时刷新缓冲区,以保证数据的实时性。接下来,显示客户端110通过第二线程从缓冲区读取屏幕图像数据。
需要说明的是,由于Wayland客户端与Wayland服务端是采用信号与槽的连接方式进行数据交互,基于信号与槽的的通信方式,在从地址空间中读取内存映射资源(屏幕图像数据)时需要控制读取时间在10ms以内,否则会导致读取不到有效的屏幕图像数据。基于此,当槽函数被触发后,需尽快将屏幕图像数据拷贝到缓冲区,避免形成阻塞。
本发明通过第一线程将从地址空间获取到的屏幕图像数据写入缓冲区,并通过第二线程从缓冲区读取屏幕图像数据,这样实现了读写分离。根据这种读写分离机制,能实现实时刷新缓冲区,防止读取数据时阻塞写入数据的流程。
在一个实施例中,屏幕图像数据的初始像素格式是第一像素格式,在通过第一线程将屏幕图像数据写入缓冲区时,是将屏幕图像数据以初始的第一像素格式写入缓冲区,即,将第一像素格式的屏幕图像数据写入缓冲区。
另外,在通过第二线程从缓冲区读取所述屏幕图像数据之后,还判断是否需要对屏幕图像数据转换像素格式。如果需要对屏幕图像数据转换像素格式,则将屏幕图像数据的第一像素格式转换为第二像素格式,并将第二像素格式的屏幕图像数据封装为预定数据结构,以便从预定数据结构中读取第二像素格式的屏幕图像数据。如果不需要对屏幕图像数据转换像素格式,则将该第一像素格式的屏幕图像数据直接封装为预定数据结构,以便从预定数据结构中读取第一像素格式的屏幕图像数据。
在一种实现方式中,第一像素格式为RGB格式,第二像素格式为YUV格式。预定数据结构为AVFrame数据结构。
在一个实施例中,显示客户端110适于执行根据本发明的屏幕录像读取方法300。本发明的屏幕录像读取方法300将在下文中详述。
在一个实施例中,驻留有屏幕录像读取系统100的计算设备可以实现为计算设备200,使得本发明的屏幕录像读取方法可以在计算设备200中执行。
图2示出了根据本发明一个实施例的计算设备200的示意图。
如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238。
计算设备200还可以包括储存接口总线234。储存接口总线234实现了从储存设备232(例如,可移除储存器236和不可移除储存器238)经由总线/接口控制器230到基本配置202的通信。操作系统220、应用222以及数据224的至少一部分可以存储在可移除储存器236和/或不可移除储存器238上,并且在计算设备200上电或者要执行应用222时,经由储存接口总线234而加载到系统存储器206中,并由一个或者多个处理器204来执行。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的实施例中,计算设备200被配置为执行根据本发明的屏幕录像读取方法300。计算设备200的应用中包含用于执行本发明的屏幕录像读取方法300的多条程序指令,这些程序指令可以指示处理器执行根据本发明的屏幕录像读取方法300,以便计算设备200通过执行屏幕录像读取方法300实现快速读取屏幕图像数据。
根据本发明的一个实施例,布置在操作系统上的应用包括显示客户端110,显示客户端110包括执行屏幕录像读取方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的屏幕录像读取方法300,使得本发明的屏幕录像读取方法300可以在显示客户端110执行。
如前文所述,操作系统包括内核层、以及布置在内核层之上的用户空间,用户空间可以布置一个或多个应用程序。其中,显示服务端120、显示客户端110布置在操作系统的用户空间。
在执行本发明的屏幕录像读取方法300之前,显示客户端110与显示服务端120建立通信连接。
应当指出,本发明对操作系统的种类不做具体限制,例如,操作系统可以实现为Linux操作系统,也可以实现为Windows操作系统。下文仅以Linux操作系统为例来对本发明的屏幕录像读取方法300进行详细说明。
图3示出了根据本发明一个实施例的屏幕录像读取方法300的流程图。方法300适于在计算设备(例如前述计算设备200)的显示客户端110中执行。
如图3所示,方法300始于步骤S310。
在步骤S310中,显示客户端110从显示服务端120获取屏幕图像数据。这里,屏幕图像数据例如包括图像宽度、图像高度、行字节数、屏幕图像数据等资源描述符等显示数据。
在一个实施例中,显示服务端120通过调用显示驱动接口,来获取屏幕图像数据。具体地,操作系统的内核层包括显示驱动框架drm,显示驱动框架将显示功能封装为open/close/ioctl等标准的显示驱动接口,基于这些显示驱动接口封装为libdrm库。这样,显示服务端通过调用libdrm库能实现间接调用一个或多个显示驱动接口,以获取显示驱动接口返回的屏幕图像数据。随后,显示服务端120将屏幕图像数据推送至显示客户端110。
可以理解,在从显示服务端获取屏幕图像数据之前,显示客户端110预先与显示服务端120建立通信连接,并绑定信号用于接收显示服务端120推送的数据。
在一种实现方式中,显示客户端110为Wayland客户端,显示服务端120为Wayland服务端。显示客户端110与显示服务端120基于Wayland协议进行通信。需要说明的是,Wayland是显示服务协议,是用C库实现的为了使合成器与Client通信的协议。Wayland服务端是合成器与核心UX(通常集成了任务切换、应用程序Launcher、Lock screen等)结合为一体的应用程序。Wayland服务端运行在模式设置API之上(kernel modesetting,OpenWFDisplay或类似物),可以利用EGL/GLES2合成器和硬件Overlay来合成最终的显示界面。
随后,在步骤S320中,将屏幕图像数据的资源描述符映射到显示客户端进程的地址空间。这里,地址空间即是显示客户端进程分配到的虚拟内存空间。这样,可以通过指针直接从地址空间读取屏幕图像数据。
在一种实现方式中,通过mmap共享内存映射的方法,将屏幕图像数据的资源描述符映射到显示客户端进程的地址空间。
需要说明的是,mmap()系统调用使得进程之间通过映射同一个普通文件来实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不需要再调用read()、write()等操作函数。Mmap()系统调用的形式如下:
void*mmap(void*addr,size_t len,int prot,int flags,int fd,off_toffset)。
mmap的作用是映射文件描述符fd指定文件的[off,off+len]区域至调用进程的[addr,addr+len]的内存区域,如图4所示。
最后,在步骤S330中,从显示客户端进程的地址空间读取屏幕图像数据,并将屏幕图像数据写入缓冲区,这样,通过从缓冲区读取屏幕图像数据,并基于屏幕图像数据来生成屏幕录像,最终可以将屏幕录像显示在屏幕上。
需要说明的是,由于从显示客户端进程的地址空间获取屏幕图像数据的效率,要高于基于屏幕图像数据来生成屏幕录像的效率,而且,屏幕图像的复杂程度不同,也会导致在基于屏幕图像数据生成屏幕录像时所需的时间不同。本发明采用缓存机制,建立缓冲区,将从进程地址空间获取到的屏幕图像数据写入缓冲区,并从缓冲区获取屏幕图像数据来生成屏幕录像,这样,可以在获取屏幕图像数据与生成屏幕录像之间达到动态平衡效果。
根据本发明的一个实施例,将屏幕图像数据写入缓冲区、从缓冲区读取数据采用了读写分离的方式。图5示出了根据本发明一个实施例的屏幕图像数据读写分离的实现方法流程图。
如图5所示,显示客户端110预先创建缓冲区,随后,可以通过第一线程(写入线程)从地址空间读取屏幕图像数据,第一线程将从地址空间读取到的屏幕图像数据写入缓冲区。并且,显示客户端110通过实时刷新缓冲区,以保证数据的实时性。接下来,显示客户端110通过第二线程(读取线程)从缓冲区读取屏幕图像数据,以便基于屏幕图像数据来生成屏幕录像并显示在屏幕上。
需要说明的是,由于Wayland客户端与Wayland服务端是采用信号与槽的连接方式进行数据交互,基于信号与槽的的通信方式,在从地址空间中读取内存映射资源(屏幕图像数据)时需要控制读取时间在10ms以内,否则会导致读取不到有效的屏幕图像数据。因此,当槽函数被触发后,需尽快将屏幕图像数据拷贝到缓冲区,避免形成阻塞。
为了避免阻塞问题,本发明通过第一线程将从地址空间获取到的屏幕图像数据写入缓冲区,并通过第二线程从缓冲区读取屏幕图像数据,这样实现了读写分离。根据这种读写分离机制,能实现实时刷新缓冲区,防止读取数据时阻塞写入数据的流程。
在一个实施例中,屏幕图像数据的初始像素格式是第一像素格式,在通过第一线程将屏幕图像数据写入缓冲区时,是将屏幕图像数据以初始的第一像素格式写入缓冲区,即,将第一像素格式的屏幕图像数据写入缓冲区。
另外,在通过第二线程从缓冲区读取所述屏幕图像数据之后,还判断是否需要对屏幕图像数据转换像素格式。
如果需要对屏幕图像数据转换像素格式,则将屏幕图像数据的第一像素格式转换为第二像素格式,并将第二像素格式的屏幕图像数据封装为预定数据结构,以便从预定数据结构中读取第二像素格式的屏幕图像数据。
如果不需要对屏幕图像数据转换像素格式,则将该第一像素格式的屏幕图像数据直接封装为预定数据结构,以便从预定数据结构中读取第一像素格式的屏幕图像数据。
在一种实现方式中,第一像素格式为RGB格式,第二像素格式为YUV格式。预定数据结构为AVFrame数据结构。也就是说,通过第一线程将RGB格式的屏幕图像数据写入缓冲区。如图5所示,在通过第二线程从缓冲区读取所述屏幕图像数据之后,判断用户是否需要将屏幕图像数据由RGB格式转换为YUV格式、来读取YUV格式的屏幕图像数据,如果是,则将屏幕图像数据的RGB格式转换为YUV格式,并将YUV格式的屏幕图像数据封装为AVFrame数据结构,以便从AVFrame数据结构中读取YUV格式的屏幕图像数据。如果否,则直接将RGB格式的屏幕图像数据封装为AVFrame数据结构,从而可以从AVFrame数据结构中读取RGB格式的屏幕图像数据。
这样,采用模块化设计,通过将屏幕图像数据的获取、数据的缓存和数据的转换进行分离,有利于提升程序的可靠性、稳定性以及可维护性。
根据本发明的屏幕录像读取方法300,将屏幕图像数据的地址空间映射到显示客户端进程的地址空间,从而可以直接从进程地址空间获取屏幕图像数据,实现了内存数据零拷贝,提升了获取屏幕图像数据的效率,也降低了对磁盘I/O的占用。并且,通过建立缓冲区,将屏幕图像数据写入缓冲区,从缓冲区获取屏幕图像数据来生成屏幕录像,能实现获取屏幕图像数据与生成屏幕录像之间的动态平衡。另外,通过第一线程将屏幕图像数据写入缓冲区,通过第二线程从缓冲区读取屏幕图像数据,根据这种读写分离的机制,能实现实时刷新缓冲区,防止读取数据时阻塞写入数据的流程。
A8、如A1-A7中任一项所述的方法,其中,所述显示客户端为Wayland客户端,所述显示服务端为Wayland服务端。
B10、如B9所述的系统,其中,所述显示客户端适于通过第一线程从所述地址空间读取屏幕图像数据,将所述屏幕图像数据写入缓冲区,并适于通过第二线程从所述缓冲区读取所述屏幕图像数据。
B11、如B9或B10所述的系统,其中,所述显示服务端适于调用显示驱动接口,以获取屏幕图像数据的资源描述符。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的屏幕录像读取方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种屏幕录像读取方法,在显示客户端执行,所述显示客户端与显示服务端相连,所述方法包括步骤:
从显示服务端获取屏幕图像数据;
将所述屏幕图像数据的资源描述符映射到所述显示客户端进程的地址空间;以及
从所述地址空间读取屏幕图像数据,并将所述屏幕图像数据写入缓冲区,以便从所述缓冲区读取所述屏幕图像数据来生成屏幕录像。
2.如权利要求1所述的方法,其中,从所述地址空间读取屏幕图像数据,并将所述屏幕图像数据写入缓冲区的步骤,包括:
通过第一线程从所述地址空间读取屏幕图像数据,将所述屏幕图像数据写入缓冲区;以及
通过第二线程从所述缓冲区读取所述屏幕图像数据。
3.如权利要求1或2所述的方法,其中,在从显示服务端获取屏幕图像数据的资源描述符之前,包括步骤:
显示服务端调用显示驱动接口,以获取屏幕图像数据。
4.如权利要求1-3中任一项所述的方法,其中,将所述屏幕图像数据写入缓冲区包括:
将所述屏幕图像数据以第一像素格式写入缓冲区;
在从所述缓冲区读取所述屏幕图像数据之后,还包括步骤:
判断是否对所述屏幕图像数据转换像素格式;
如果是,则将所述屏幕图像数据的第一像素格式转换为第二像素格式,并封装为预定数据结构。
5.如权利要求4所述的方法,其中,判断是否对所述屏幕图像数据转换像素格式的步骤还包括:
如果否,则将所述屏幕图像数据直接封装为预定数据结构。
6.如权利要求4或5所述的方法,其中,所述第一像素格式为RGB格式,所述第二像素格式为YUV格式;
所述预定数据结构为AVFrame数据结构。
7.如权利要求1-6中任一项所述的方法,其中,所述屏幕图像数据包括图像宽度、图像高度、行字节数、资源描述符中的一种或多种。
8.一种屏幕录像读取系统,包括:
显示客户端,适于执行如权利要求1-7中任一项所述的方法;以及
显示服务端,与所述显示客户端相连,适于向显示客户端发送屏幕图像数据。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
CN202111143916.9A 2021-09-28 2021-09-28 一种屏幕录像读取方法、系统及计算设备 Active CN113784075B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111143916.9A CN113784075B (zh) 2021-09-28 2021-09-28 一种屏幕录像读取方法、系统及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111143916.9A CN113784075B (zh) 2021-09-28 2021-09-28 一种屏幕录像读取方法、系统及计算设备

Publications (2)

Publication Number Publication Date
CN113784075A true CN113784075A (zh) 2021-12-10
CN113784075B CN113784075B (zh) 2024-05-14

Family

ID=78854067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111143916.9A Active CN113784075B (zh) 2021-09-28 2021-09-28 一种屏幕录像读取方法、系统及计算设备

Country Status (1)

Country Link
CN (1) CN113784075B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489888A (zh) * 2022-01-10 2022-05-13 麒麟软件有限公司 基于DRM的Android应用共享Linux系统屏幕数据的方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686225A (zh) * 2012-08-31 2014-03-26 腾讯科技(深圳)有限公司 一种远程监控的方法、客户端及服务端
CN103823683A (zh) * 2014-02-27 2014-05-28 北京六间房科技有限公司 一种视频录制装置及方法
CN107515759A (zh) * 2017-09-20 2017-12-26 武汉斗鱼网络科技有限公司 截屏方法、装置、电子设备及可读存储介质
CN107547474A (zh) * 2016-06-27 2018-01-05 中兴通讯股份有限公司 一种异构型双系统的图形显示方法和设备
CN109168021A (zh) * 2018-10-25 2019-01-08 京信通信系统(中国)有限公司 一种推流的方法及装置
CN109889875A (zh) * 2019-01-23 2019-06-14 北京奇艺世纪科技有限公司 通信方法、装置、终端设备和计算机可读介质
CN110166792A (zh) * 2018-02-14 2019-08-23 阿里巴巴集团控股有限公司 图像显示方法、装置、系统和存储介质
CN112199147A (zh) * 2020-10-14 2021-01-08 上海众链科技有限公司 应用于智能终端内的录屏方法、系统及计算机可读存储介质
CN112714352A (zh) * 2021-03-25 2021-04-27 统信软件技术有限公司 一种屏幕录制方法、装置、计算设备及可读存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103686225A (zh) * 2012-08-31 2014-03-26 腾讯科技(深圳)有限公司 一种远程监控的方法、客户端及服务端
CN103823683A (zh) * 2014-02-27 2014-05-28 北京六间房科技有限公司 一种视频录制装置及方法
CN107547474A (zh) * 2016-06-27 2018-01-05 中兴通讯股份有限公司 一种异构型双系统的图形显示方法和设备
CN107515759A (zh) * 2017-09-20 2017-12-26 武汉斗鱼网络科技有限公司 截屏方法、装置、电子设备及可读存储介质
CN110166792A (zh) * 2018-02-14 2019-08-23 阿里巴巴集团控股有限公司 图像显示方法、装置、系统和存储介质
CN109168021A (zh) * 2018-10-25 2019-01-08 京信通信系统(中国)有限公司 一种推流的方法及装置
CN109889875A (zh) * 2019-01-23 2019-06-14 北京奇艺世纪科技有限公司 通信方法、装置、终端设备和计算机可读介质
CN112199147A (zh) * 2020-10-14 2021-01-08 上海众链科技有限公司 应用于智能终端内的录屏方法、系统及计算机可读存储介质
CN112714352A (zh) * 2021-03-25 2021-04-27 统信软件技术有限公司 一种屏幕录制方法、装置、计算设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489888A (zh) * 2022-01-10 2022-05-13 麒麟软件有限公司 基于DRM的Android应用共享Linux系统屏幕数据的方法
CN114489888B (zh) * 2022-01-10 2023-08-04 麒麟软件有限公司 基于DRM的Android应用共享Linux系统屏幕数据的方法

Also Published As

Publication number Publication date
CN113784075B (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
US10116746B2 (en) Data storage method and network interface card
US11853767B2 (en) Inter-core data processing method, system on chip and electronic device
CN109213613B (zh) 图像信息的传输方法、装置、存储介质及电子设备
WO2019127864A1 (zh) 电子装置、基于springmvc的数据接口及其说明自动生成方法及存储介质
CN111447370B (zh) 摄像头访问方法、访问装置、终端设备及可读存储介质
CN114860670A (zh) 用户空间文件系统的文件操作方法及用户空间文件系统
CN116166255B (zh) 界面生成方法及电子设备
CN113784075B (zh) 一种屏幕录像读取方法、系统及计算设备
CN114189553B (zh) 一种流量回放方法、系统及计算设备
CN108388461A (zh) 一种用于固件的屏幕图像截取方法与装置
CN114257867A (zh) 视频图像显示方法和装置,计算设备和可读存储介质
CN111008934B (zh) 一种场景构建方法、装置、设备及存储介质
WO2024113680A1 (zh) 固件交互方法、装置、服务器和存储介质
WO2023143545A1 (zh) 资源处理方法、装置、电子设备及计算机可读存储介质
CN113760318A (zh) 信息处理方法、装置、服务器及存储介质
WO2023193598A1 (zh) 一种图像处理方法、装置、设备及存储介质
US8203567B2 (en) Graphics processing method and apparatus implementing window system
WO2019114044A1 (zh) 图像处理方法、装置、电子设备及计算机可读存储介质
CN115599268A (zh) 一种屏幕截图方法、计算设备和存储介质
CN115309315A (zh) Wayland环境下X应用的截图方法、系统及介质
CN115390801A (zh) 一种开放式图形库渲染的开启方法、装置与计算设备
CN114035903A (zh) 实现Linux KVM虚拟机支持3D应用的方法及系统
CN114461419A (zh) 一种消息推送方法、系统、计算设备与可读存储介质
CN114070892A (zh) 数据传输方法和装置
CN111583351B (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