CN112714352B - 一种屏幕录制方法、装置、计算设备及可读存储介质 - Google Patents

一种屏幕录制方法、装置、计算设备及可读存储介质 Download PDF

Info

Publication number
CN112714352B
CN112714352B CN202110316971.7A CN202110316971A CN112714352B CN 112714352 B CN112714352 B CN 112714352B CN 202110316971 A CN202110316971 A CN 202110316971A CN 112714352 B CN112714352 B CN 112714352B
Authority
CN
China
Prior art keywords
screen
source data
screen recording
video file
screen image
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
Application number
CN202110316971.7A
Other languages
English (en)
Other versions
CN112714352A (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 CN202110316971.7A priority Critical patent/CN112714352B/zh
Priority to CN202110817455.2A priority patent/CN113473214B/zh
Publication of CN112714352A publication Critical patent/CN112714352A/zh
Application granted granted Critical
Publication of CN112714352B publication Critical patent/CN112714352B/zh
Priority to PCT/CN2021/129674 priority patent/WO2022199044A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • 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/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
    • 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/440236Processing 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 media transcoding, e.g. video is transformed into a slideshow of still pictures, audio is converted into text

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Television Signal Processing For Recording (AREA)

Abstract

本发明公开了一种屏幕录制方法,适于在计算设备中执行,方法包括:接收用户的屏幕录制请求;创建屏幕录制缓冲区;从显存中获取屏幕图像源数据,并将屏幕图像源数据存储到屏幕录制缓冲区;将屏幕图像源数据转换成视频文件并保存。本发明一并公开了相应的装置、计算设备及可读存储介质。

Description

一种屏幕录制方法、装置、计算设备及可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种屏幕录制方法、装置、计算设备及可读存储介质。
背景技术
Linux系统中常用的窗口系统包括两种协议,X11和wayland,窗口管理器kwin可以兼容这两种协议,然而,随着计算机应用程序的多样化,人们的需求也越来越多,最长应的应用之一就是屏幕录制,X11结合kwin可以实现当前屏幕实时图像的获取,这一功能取决于X11实现了与显卡的适配,可以从显存中获取屏幕图像的源数据,同时kwin具有dbus录屏接口。
常用的录屏软件byzanz-record就是通过监听X11的damage事件获取重绘damage区域图像数据,绘制到输出的视频流里来实现,本质是通过dbus录屏接口以及X11读取显存源数据功能实现的。另外,FFMPEG通过读取图片流的方式生成GIF或MP4格式视频的录制技术,也是基于X11与显卡的适配接口获取源数据的。而对于wayland,则没有可以从显卡读取源数据接口,因此,上述这两种方式都不能直接移植到wayland实现屏幕录制。
因此,如何实现wayland下的屏幕录制成为亟待解决的问题。
发明内容
为此,本发明提供了一种屏幕录制方法、装置、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种屏幕录制方法,适于在计算设备中执行,方法包括:接收用户的屏幕录制请求;创建屏幕录制缓冲区;从显存中获取屏幕图像源数据,并将屏幕图像源数据存储到屏幕录制缓冲区;将屏幕图像源数据转换成视频文件并保存。
可选的,在根据本发明的屏幕录制方法中,屏幕录制请求中包括屏幕录制参数,屏幕录制参数包括屏幕录制区域、录制视频帧率、录制音频类型、视频文件格式以及视频文件存储路径。
可选的,在根据本发明的屏幕录制方法中,屏幕录制缓冲区为环形缓冲区。
可选的,在根据本发明的屏幕录制方法中,将屏幕图像源数据转换成视频文件并保存包括:根据录制视频帧率从屏幕录制缓冲区获取屏幕图像源数据;根据视频文件格式将屏幕图像源数据转换成相应格式的屏幕图像帧;将屏幕图像帧和根据录制音频类型获取的音频数据转换成视频文件;根据视频文件存储路径存储视频文件。
可选的,在根据本发明的屏幕录制方法中,视频文件格式包括GIF和MP4格式,根据视频文件格式将屏幕图像源数据转换成相应格式的屏幕图片帧包括:当视频文件格式为GIF时,将屏幕图像源数据转换成RGB格式的屏幕图片帧;当视频文件格式为MP4时,将屏幕图像源数据转换成YUV格式的屏幕图片帧。
可选的,在根据本发明的屏幕录制方法中,将屏幕图片帧和根据录制音频类型获取的音频数据转换成视频文件包括:将屏幕图片帧压缩编码成视频流;对音频数据进行编码;将视频流和编码后的音频数据写入媒体流;根据屏幕录制参数将媒体流转换成视频文件。
可选的,在根据本发明的屏幕录制方法中,从显存中获取屏幕图像源数据通过直接渲染管理器完成。
根据本发明的另一个方面,提供一种基于屏幕录制装置,适于驻留在计算设备中,装置包括:数据接收单元,接收用户的屏幕录制请求;数据缓存单元,创建屏幕录制缓冲区;从显存中获取屏幕图像源数据,并将屏幕图像源数据存储到屏幕录制缓冲区;视频制作单元,将屏幕图像源数据转换成视频文件并保存。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上的任一项屏幕录制方法的指令。
根据本发明的又一方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的任一项屏幕录制方法。
根据本发明的屏幕录制方法,实现了不具备图像源数据获取接口的图形框架的屏幕录制,例如wayland,使得用户在选择图像框架时,可以避免因为录屏应用的限制而放弃使用特定的图像框架,同时,相较于FFMPEG录屏技术,不需要将生成的图片进行先存储再读取的频繁I/O操作,可以生成高录制视频帧率的屏幕录制视频。
另一方面,通过在本地创建环形屏幕录制缓冲区,根据录制视频帧率读取其中的缓冲数据进行处理,使得缓冲区不至于一直处于饱和状态而丢失数据,又避免轮询空队列造成的CPU损耗。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100 的框图;
图2示出了根据本发明一个实施例的屏幕录制方法200的流程图;
图3示出了根据本发明一个实施例的屏幕录制装置300的框图;
图4示出了根据本发明一个实施例的屏幕录制参数设置界面;
图5示出了根据本发明一个实施例的屏幕录制参数设置界面;
图6示出了根据本发明一个实施例的屏幕录制参数设置界面;
图7示出了根据本发明一个实施例的环形缓冲区的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
Linux系统中常用的窗口系统包括X11和wayland两种协议,其中,X11基于Client/Server网络模型,为图形用户界面(Graphical User Interface, GUI)提供了基本框架,例如:在显示设备上绘制和移动窗口,并与鼠标和键盘进行交互。在Linux系统中,kwin是Xwindow(即X11)系统中的一个窗口管理器,X11和kwin的结合可以实现屏幕录制的功能,主要利用了系统提供的录屏dbus接口和X11与显卡的适配接口。
wayland的诞生是用于改善X11中server的不足,但是发展到现在,已经不仅仅是替代X server,而是颠覆了X11的C/S结构,简单的说,waylannd 就是一个去除X11中不必要的设计、充分利用现代Linux内核图形技术的一个显示机制。但是对于wayland技术,目前却没有实现获取当前屏幕实时图片的技术,不能实现屏幕录制,因为wayland平台下没有可供调用的窗口图像源数据获取接口,同时,有些运行平台并不提供录屏接口,比如:arm平台KelvinU系统中的kwin是没有提供录屏dbus接口的。
本发明正是基于这种不具备窗口图像源数据获取接口的图形框架(例如:wayland),实现了屏幕录制功能,解决了这类图形框架不支持屏幕录制软件的问题。
图1示出了根据本发明一个实施例的计算设备100的示意图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的屏幕录制方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的屏幕录制方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
在计算设备100启动运行时,处理器104会从存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至存储器106中,处理器104从存储器106中读取并执行应用122的程序指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,应用122包括用于执行本发明的作业屏幕录制方法200的指令,该指令可以指示处理器104执行本发明的屏幕录制方法200。
图2示出了根据本发明一个实施例的屏幕录制方法200的示意图,方法200适于在计算设备(例如图1所示的计算设备)中执行,本实施例以wayland图形框架进行说明。
如图2所示,方法200始于步骤S210,接收用户的屏幕录制请求。该屏幕录制请求中包括用户设置的屏幕录制参数,包括屏幕录制区域、录制视频帧率、录制音频类型、视频文件格式、视频文件存储路径等信息。
根据本发明的一个实施例,用户可以通过用户界面完成参数设置,图4示出了根据本发明一个实施例的屏幕录制参数设置的示意图,用户可以通过选项的下拉菜单设置屏幕录制生成的视频文件格式和录制视频帧率,其中,视频文件格式包括GIF、MP4、MKV等格式。屏幕录制区域可以通过拖动图4中所示的矩形边框进行设置,选择好屏幕录制区域后自动生成录制视频区域的宽度和高度。用户还可以在选项的下拉菜单中设置视频文件存储路径,如图5所示。用户还可以设置录制音频类型,分为麦克风音频和内置音频,图5示出了根据本发明一个实施例的录制音频类型的设置界面,其中系统音频即为内置音频,例如,屏幕播放的视频自带的音频。用户设置好参数,点击录屏按钮,发送屏幕录制请求。
在一个具体实例中,可以定义一个函数接收用户设置的参数,例如:WaylandRecord(),收集用户所设置的参数通过函数WaylandRecord()传递给屏幕录制进程。在接收到用户的屏幕录制请求后,进入步骤S220。
在步骤S220中,创建屏幕录制缓冲区,用以存储从显卡获取到的屏幕图像源数据。根据本发明的一个实施例,该缓冲区声明为一个环形缓冲区,例如,可以设置环形缓冲区最多可以存储预定数量(例如:30)的屏幕图像帧的元数据,图7示出了根据本发明一个实施例的环形缓冲区的示意图。
屏幕录制缓冲区创建完成后,进入步骤S230,从显存中获取图像源数据,并插入环形缓冲区中,显存的主要作用就是用来存储显卡芯片即将提取的图像源数据。
根据本发明的一个实施例,通过直接渲染管理器(Direct Rendering Manager,DRM)完成从显存中获取源数据。DRM是Linux下的图形渲染架构,用来管理显示输出,本实施例通过直接操作DRM 向上层提供的接口获取屏幕图像源数据,获取图像源数据的速率可以根据用户设置的录制视频帧率进行获取,例如,用户设置的录制视频帧率为30fps,则在获取图像源数据时,也按照一秒钟30帧图像数据的速率来获取。将获取到的图像源数据依次存储到步骤S220创建的屏幕录制缓冲区中。
在根据本发明的一个具体实例中,声明一个线程,启动底层buffer的采集功能,方法名可以命名为processBuffer(KWayland::Client::RemoteBuffer),使用lamda调用方法,当接收到KWayland::Client::RemoteAccessManager::bufferReady信号后,将接收到的图像buffer存储到屏幕录制缓冲区。
在采集图像帧数据的同时也要采集音频数据,当用户设置录制音频类型为麦克风时,从麦克风采集音频数据,当用户将录制音频类型设置为内置音频(及系统音频)时,采集与屏幕帧数据对应的内置音频数据。
随后进入步骤S240,从屏幕录制缓冲区获取图像帧的源数据,并转换生成相应的图像帧。
根据本发明一个实施例,当屏幕录制请求所携带的视频文件格式为GIF,则本步骤将图像帧的源数据转换成RGB格式的图片,RGB色彩模式是工业界的一种颜色标准,是通过对红(Red)、绿(Green)、蓝(Blue)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色。
根据本发明的又一个实施例,当屏幕录制请求所携带的视频文件格式为MP4时,则本步骤将图像帧的源数据转换成YUV格式的图片。YUV是一种颜色编码方法。常使用在各个视频处理组件中,YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽,YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
环形缓冲区的一个特点就是,当环形缓冲区数据存储饱和时,最先进入环形队列的数据会被挤出环形队列,释放资源,以存储最新获取到的图像数据。在获取环形队列中的图像帧源数据时,会存在不同的形态,当入队速度等于出队速度时,即从显存中获取源数据写入环形队列的速率与从环形队列中读取图像源数据进行处理的速度相等,这是环形队列的常态,即入队速度和出队速度大致一样,即使某个突然时刻入队速度陡然变高或者出队速度陡然变低,都能通过队列这个缓冲区把这些数据先存起来,等到能处理的时候再处理。
还有一种形态是入队速率大于出队速率,在这种情况下,队列“写入”的速度大于“读取”的速度,可以想象出,当这种状态持续一段时间之后,队列被占满,当又一个新的元素产生时,可以把这个新元素drop掉或者放在另一个缓冲区保存起来,这种情况的出现不是个好事情,说明处理出队元素的效率或算法还不够好,队列时刻处于满载状态。
最后一种形态是入队速率小于出队速率,在这种情况下,队列“读取”速度大于“写入”速度,这种情况说明出队处理元素的速度很快,这是比较好的情况,唯一不足的是读取队列的时候可能经常会轮询队列是否有新的元素,造成cpu占用过高。
因此,为了使入队速率和出队速率大致保持一致,本实施例中,在从屏幕录制缓冲区获取图像帧源数据依然按照用户设置的录制视频帧率进行设置,例如:用户设置的录制视频帧率为30fps,则在读取环形缓冲区时,也按照该速率读取。具体实现中,可以声明一个WriteFrameToStreamThread线程,按照帧率来获取环形队列当中的头部图片帧,将图片帧取出之后,声明一个writeToFrame方法,将头部图片帧写入该方法当中,准备稍候使用。
根据本发明一个实施例的具体实现中,可以声明一个WriteFrameToStreamThread线程,按照帧率来获取环形队列当中的头部图像帧数据,并将数据写入另一个方法writeToFrame进行处理,转换成相应格式的图像帧。
随后进入步骤S250,根据获得的图像帧生成屏幕录制视频文件。
根据本发明的一个实施例,将图像帧压缩成视频流格式,将采集到的音频数据进行编码,将视频流和编码后的音频数据写入媒体流,并根据用户设置的屏幕录制参数生成视频文件。
根据本发明的一个实施例,本步骤可以通过FFMPEG将图像帧生成视频文件。在生成视频文件时,还需要结合获取到的音频数据(包括麦克风采集到的音频数据和/或内置音频数据),根据用户设置的屏幕录制参数生成最终的视频文件。
在一个具体实例中,可以声明四个线程,分别为采集图像生成视频线程,采集麦克风音频线程,采集内置音频线程,双音通道混音线程,这些线程都存储在MainLoop的事件循环里面,当启动事件循环时,根据用户参数配置来对应启动线程。声明的视频采集线程中,需要区分是生成Gif还是生成Mp4视频,若为Gif视频,则需要将图片格式转换为AV_PIX_FMT_RGBA格式。若是生成Mp4格式视频,择需要将图片格式转换为AV_PIX_FMT_YUV420P格式。调用FFmpeg的avcodec_encode_video2方法将图片压缩编码为视频流格式,压缩出来的视频流格式,通过av_interleaved_write_frame方法写入媒体流。声明一个SetVideoCodecProp方法,将媒体流输出为一个真正的视频文件,其中传递的参数有:视频编码格式、帧率、码率、压缩质量、视频宽度、视频高度,这些参数组合起来存储到结构体当中,使用OpenOutputStream方法将这些参数获取到,使用avformat_new_stream写入媒体文件,并使用avformat_write_header将视频流文件的文件头写好即可。
图3示出了根据本发明一个实施例的屏幕录制装置300的示意图。装置300适于驻留在计算设备(例如图1所示的计算设备)中。如图3所示,屏幕录制装置300包含数据接收单元310、数据缓存单元320和视频制作单元330。
其中,数据接收单元310适于接收用户的屏幕录制请求,并解析出屏幕录制请求中的屏幕录制参数。
数据缓存单元320适于创建屏幕录制缓冲区,从显存中获取图像源数据,并将图像源数据存储到屏幕录制缓冲区,屏幕录制缓冲区可以设置为环形缓冲区。
视频制作单元330适于从屏幕录制缓冲区中获取屏幕图像源数据,并根据屏幕录制参数将屏幕图像源数据转换成屏幕录制视频文件。
根据本发明的屏幕录制方法,实现了基于wayland图形框架的屏幕录制,使得用户在选择图像框架时,可以避免因为录屏应用的限制而放弃使用wayland图像框架,同时,相较于FFMPEG录屏技术,不需要将生成的图片进行先存储再读取的频繁I/O操作,可以生成高录制视频帧率的屏幕录制视频。
另一方面,通过在本地创建环形屏幕录制缓冲区,根据录制视频帧率读取其中的缓冲数据进行处理,使得缓冲区不至于一直处于饱和状态而丢失数据,又避免轮询空队列造成的CPU损耗。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的屏幕录制方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种屏幕录制方法,适于在计算设备中执行,所述计算设备的窗口系统基于wayland协议,所述方法包括:
接收用户的屏幕录制请求,所述屏幕录制请求中包括屏幕录制参数,所述屏幕录制参数包括用户设置的录制视频帧率;
创建屏幕录制缓冲区,用以存储从显卡获取到的屏幕图像源数据;
通过直接渲染管理器从显存中获取屏幕图像源数据,并将所述屏幕图像源数据存储到所述屏幕录制缓冲区;
按照用户设置的录制视频帧率读取所述屏幕录制缓冲区的头部屏幕图像源数据,使屏幕录制缓冲区的入队速率和出队速率大致保持一致;
将读取到的头部屏幕图像源数据转换成视频文件并保存。
2.如权利要求1所述的方法,其中,所述屏幕录制参数还包括屏幕录制区域、录制音频类型、视频文件格式以及视频文件存储路径。
3.如权利要求1或2所述的方法,其中,所述屏幕录制缓冲区为环形缓冲区。
4.如权利要求2所述的方法,其中,所述将所述屏幕图像源数据转换成视频文件并保存包括:
根据所述录制视频帧率从所述屏幕录制缓冲区获取屏幕图像源数据;
根据所述视频文件格式将所述屏幕图像源数据转换成相应格式的屏幕图像帧;
将所述屏幕图像帧和根据所述录制音频类型获取的音频数据转换成视频文件;
根据所述视频文件存储路径存储所述视频文件。
5.如权利要求4所述的方法,其中,所述视频文件格式包括GIF和MP4格式,所述根据所述视频文件格式将所述屏幕图像源数据转换成相应格式的屏幕图像帧包括:
当所述视频文件格式为GIF时,将所述屏幕图像源数据转换成RGB格式的屏幕图像帧;
当所述视频文件格式为MP4时,将所述屏幕图像源数据转换成YUV格式的屏幕图像帧。
6.如权利要求4所述的方法,其中,所述将所述屏幕图像帧和根据所述录制音频类型获取的音频数据转换成视频文件包括:
将所述屏幕图像帧压缩编码成视频流;
对所述音频数据进行编码;
将所述视频流和编码后的音频数据写入媒体流;
根据所述屏幕录制参数将所述媒体流转换成视频文件。
7.如权利要求1或2所述的方法,其中,所述从显存中获取屏幕图像源数据通过直接渲染管理器完成。
8.一种基于屏幕录制装置,适于驻留在计算设备中,所述计算设备的窗口系统基于wayland协议,所述装置包括:
数据接收单元,适于接收用户的屏幕录制请求,所述屏幕录制请求中包括屏幕录制参数,所述屏幕录制参数包括用户设置的录制视频帧率;
数据缓存单元,适于创建屏幕录制缓冲区,用以存储从显卡获取到的屏幕图像源数据;通过直接渲染管理器从显存中获取屏幕图像源数据,并将所述屏幕图像源数据存储到所述屏幕录制缓冲区;
视频制作单元,适于按照用户设置的录制视频帧率读取所述屏幕录制缓冲区的头部屏幕图像源数据,使屏幕录制缓冲区的入队速率和出队速率大致保持一致;将读取到的头部屏幕图像源数据转换成视频文件并保存。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
CN202110316971.7A 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质 Active CN112714352B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110316971.7A CN112714352B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质
CN202110817455.2A CN113473214B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质
PCT/CN2021/129674 WO2022199044A1 (zh) 2021-03-25 2021-11-10 一种屏幕录制方法、装置、计算设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110316971.7A CN112714352B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110817455.2A Division CN113473214B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112714352A CN112714352A (zh) 2021-04-27
CN112714352B true CN112714352B (zh) 2021-08-20

Family

ID=75550266

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202110817455.2A Active CN113473214B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质
CN202110316971.7A Active CN112714352B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202110817455.2A Active CN113473214B (zh) 2021-03-25 2021-03-25 一种屏幕录制方法、装置、计算设备及可读存储介质

Country Status (2)

Country Link
CN (2) CN113473214B (zh)
WO (1) WO2022199044A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113473214B (zh) * 2021-03-25 2023-05-02 统信软件技术有限公司 一种屏幕录制方法、装置、计算设备及可读存储介质
CN113794926A (zh) * 2021-09-03 2021-12-14 深圳创维-Rgb电子有限公司 屏幕图像获取方法、装置和计算机可读存储介质
CN113784075B (zh) * 2021-09-28 2024-05-14 统信软件技术有限公司 一种屏幕录像读取方法、系统及计算设备
CN113709553A (zh) * 2021-09-30 2021-11-26 深圳市欢太数字科技有限公司 一种屏幕录制方法、装置、芯片和终端
CN115309315B (zh) * 2022-10-11 2023-01-20 麒麟软件有限公司 Wayland环境下X应用的截图方法、系统及介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510437B2 (en) * 2000-01-27 2013-08-13 Yawonba Holdings Au, Llc Method and system for tracking screen activities
KR100792242B1 (ko) * 2007-04-05 2008-01-07 김재홍 원격 녹화의 운용 방법 및 그 시스템
CN101609401B (zh) * 2009-07-02 2012-05-02 深圳市万兴软件有限公司 一种无干扰屏幕录制方法和系统
CN102724466A (zh) * 2012-05-25 2012-10-10 深圳市万兴软件有限公司 一种视频录制方法及装置
CN104424022B (zh) * 2013-08-30 2019-03-29 腾讯科技(深圳)有限公司 屏幕录制方法及装置
US9161006B1 (en) * 2014-12-05 2015-10-13 Kamcord, Inc. Systems and methods for efficient screen capture
CN105763926A (zh) * 2014-12-18 2016-07-13 中兴通讯股份有限公司 屏幕录制的方法及装置
CN107426606B (zh) * 2017-06-26 2020-07-24 联想(北京)有限公司 录制屏幕的方法、装置、电子设备和系统
CN111131882A (zh) * 2019-12-30 2020-05-08 联想(北京)有限公司 录制屏幕的方法和装置、及电子设备
CN112218148A (zh) * 2020-09-11 2021-01-12 杭州易现先进科技有限公司 屏幕录制方法、装置、计算机设备和计算机可读存储介质
CN112423095A (zh) * 2020-11-02 2021-02-26 广州博冠信息科技有限公司 游戏视频录制方法、装置、电子设备和存储介质
CN113473214B (zh) * 2021-03-25 2023-05-02 统信软件技术有限公司 一种屏幕录制方法、装置、计算设备及可读存储介质

Also Published As

Publication number Publication date
CN112714352A (zh) 2021-04-27
WO2022199044A1 (zh) 2022-09-29
CN113473214A (zh) 2021-10-01
CN113473214B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN112714352B (zh) 一种屏幕录制方法、装置、计算设备及可读存储介质
WO2020038128A1 (zh) 视频处理方法、装置、电子设备及计算机可读介质
WO2020107989A1 (zh) 视频处理方法、装置、电子设备以及存储介质
WO2020108018A1 (zh) 游戏场景处理方法、装置、电子设备以及存储介质
WO2020078027A1 (zh) 一种图像处理方法、装置与设备
WO2020078026A1 (zh) 一种图像处理方法、装置与设备
WO2021031850A1 (zh) 图像处理的方法、装置、电子设备及存储介质
CN109379624B (zh) 视频处理方法、装置、电子设备及存储介质
WO2020108061A1 (zh) 视频处理方法、装置、电子设备以及存储介质
US20210281718A1 (en) Video Processing Method, Electronic Device and Storage Medium
WO2020038127A1 (zh) 解码方法、装置、电子设备以及存储介质
US20090262136A1 (en) Methods, Systems, and Products for Transforming and Rendering Media Data
WO2021008348A1 (zh) 图片显示方法、装置、移动终端及存储介质
US11490157B2 (en) Method for controlling video enhancement, device, electronic device and storage medium
WO2020108091A1 (zh) 视频处理方法、装置、电子设备及存储介质
US20220094846A1 (en) Method for selecting image based on burst shooting and electronic device
JP7186877B2 (ja) 映像デコーディング制御方法、装置、電子機器及び記憶媒体
US11562772B2 (en) Video processing method, electronic device, and storage medium
WO2022022019A1 (zh) 投屏数据处理方法和装置
CN109151966A (zh) 终端控制方法、装置、终端设备及存储介质
WO2022161227A1 (zh) 图像处理方法、装置、图像处理芯片和电子设备
WO2017161768A1 (zh) 一种在视频画面中生成标题背景的方法及装置
WO2020108010A1 (zh) 视频处理方法、装置、电子设备以及存储介质
CN109587561B (zh) 视频处理方法、装置、电子设备及存储介质
CN110377773B (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