掌桥专利:专业的专利平台
掌桥专利
首页

一种录屏方法、装置、设备及介质

文献发布时间:2023-06-19 12:11:54


一种录屏方法、装置、设备及介质

技术领域

本公开涉及计算机技术领域,尤其涉及一种录屏方法、装置、设备及介质。

背景技术

随着互联网技术的发展,网络直播越来越普及,同时也会涉及到录制直播视频便于他人在其它时段回看的情况。以下以在线教育直播为例进行说明,教师可以通过线上教学APP(Application)或网页直播授课,为学生展示课件,并进行课件讲解及与学生互动。此外,还可以通过屏幕录制方式创建课堂教学回放视频,便于学生随时回看复习。

相关技术中的屏幕录制方案都是通过截屏实现,这种截屏方式只能是对整个窗口进行截屏录制。而在老师教学过程中会触发诸如工具窗等各种各样的提示窗,因此在录屏时会将提示窗等无关内容连同课件一起录入,导致用户观看最终录制得到的课堂回放视频的感受不佳。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种录屏方法、装置、设备及介质。

本公开实施例提供了一种录屏方法,所述方法包括:确定目标应用的主窗口中的待录屏区域;对所述主窗口的待录屏区域进行透明处理;在经透明处理的所述待录屏区域的位置处创建子窗口,并设置所述主窗口的显示层级前于所述子窗口的显示层级;在录屏功能开启时仅针对所述子窗口进行屏幕录制。

可选的,所述确定目标应用的主窗口中的待录屏区域的步骤,包括:通过指定接口接收用户输入的待录屏区域在目标应用的主窗口中的位置信息;基于所述位置信息确定所述待录屏区域。

可选的,所述方法还包括:设置所述子窗口将接收到的焦点事件转发给所述主窗口处理。

可选的,所述方法还包括:设置所述主窗口生成的弹窗显示在所述子窗口上,并由所述主窗口处理所述弹窗接收到的焦点事件。

可选的,所述方法还包括:设置所述子窗口的状态随所述主窗口的状态的改变而相应改变;所述状态的改变包括以下一种或多种:激活状态与非激活状态之间的切换、窗口尺寸的改变、窗口位置的改变。

可选的,在所述录屏功能启动时仅针对所述子窗口进行屏幕录制的步骤,包括:在录屏功能启动时,仅针对所述子窗口执行截屏操作,并基于截屏操作结果生成录制视频。

可选的,所述目标应用为线上教学应用;所述待录屏区域为用于展示教学课件的课件区。

本公开实施例还提供了一种录屏装置,包括:区域确定模块,用于确定目标应用的主窗口中的待录屏区域;透明处理模块,用于对所述主窗口的待录屏区域进行透明处理;窗口创建模块,用于在经透明处理的所述待录屏区域的位置处创建子窗口,并设置所述主窗口的显示层级前于所述子窗口的显示层级;屏幕录制模块,用于在录屏功能启动时仅针对所述子窗口进行屏幕录制。

本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的录屏方法。

本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的录屏方法。

本公开实施例提供的上述技术方案,首先确定目标应用的主窗口中的待录屏区域,然后对主窗口的待录屏区域进行透明处理,在经透明处理的待录屏区域的位置处创建子窗口,并设置主窗口的显示层级前于子窗口的显示层级,以保证用户可透过主窗口看到子窗口,在录屏功能开启时仅针对子窗口进行屏幕录制即可。与相关技术中只能针对整个窗口进行录屏、导致录屏结果包含较多无关内容相比,本公开实施例提供的上述方式可以将待录屏区域从主窗口中单独划分出来并相应创建子窗口,并直接针对子窗口录屏,从而使录屏结果仅包含所需内容,有效提升用户的观看体验。

应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种录屏方法的流程示意图;

图2为本公开实施例提供的一种子窗口创建前的示意图;

图3为本公开实施例提供的一种子窗口创建后的示意图;

图4为本公开实施例提供的一种子窗口的创建流程图;

图5为本公开实施例提供的一种录屏装置的结构示意图;

图6为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

考虑到相关技术中的屏幕录制方案主要是针对整个窗口进行截屏录制,录屏结果中会包含一些无关内容,为改善此问题,本公开实施例提供了一种录屏方法、装置、设备及介质,其核心思想在于将待录屏区域从整个窗口(可称之为主窗口或父窗口)中单独划分出来,基于待录屏区域在主窗口的位置而相应创建子窗口,然后直接针对子窗口进行录屏即可,这样使得最终得到的录屏结果仅包含所需内容(也即,待录屏区域的内容),从而提升用户体验。为便于理解,本公开实施例的相关内容具体阐述如下:

首先,本公开实施例提供了一种录屏方法,参见图1所示的一种录屏方法的流程示意图,该方法可以由录屏装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法主要包括如下步骤S102~步骤S108:

步骤S102,确定目标应用的主窗口中的待录屏区域。

在实际应用中,可以由用户根据实际需求而指定待录屏区域,以目标应用为在线教育应用为例,课件展示区(或简称课件区)即可作为待录屏区域。在一些实施方式中,电子设备可以通过指定接口接收用户输入的待录屏区域在目标应用的主窗口中的位置信息,然后基于位置信息确定待录屏区域。该位置信息诸如可以包括待录屏区域在主窗口中的顶点坐标等参数,当然还可以包括待录屏区域的宽高等参数,本公开实施例对位置信息中所包含的参数不进行具体限定,只要能够指明待录屏区域在主窗口中的位置即可。

步骤S104,对主窗口的待录屏区域进行透明处理。

在一些实施方式中,可以将主窗口的待录屏区域的背景色设置为指定色值,其中,指定色值与主窗口中除待录屏区域之外的其它区域的背景色的色值不同,该指定色值可以自定义,通常可选取不常用的特殊色值实现;然后对具有指定色值的待录屏区域进行透明处理。在一种具体的示例中,可以将指定色值传入至底层等可执行透明处理的处理端,由底层将所有颜色为该指定色值的区域都设置为透明。具体实现时,诸如可以使用WinAPI(Windows Application Programming Interface,视窗操作系统应用程序接口)指定具有指定色值的区域进行透明穿透。

步骤S106,在经透明处理的待录屏区域的位置处创建子窗口,并设置主窗口的显示层级前于子窗口的显示层级。也即,主窗口的Z序在子窗口之上,其中,Z序用于表征多个窗口的层叠顺序。

通过单独创建子窗口的方式,有助于后续直接针对子窗口进行录屏操作,而对主窗口的待录屏区域进行透明设置,并在此基础上创建子窗口,以及设置主窗口的显示层级前于子窗口的显示层级,可以保证用户可透过主窗口看到子窗口,以便看到子窗口显示的内容。在实际应用中,待录屏区域可以是一个,也可以是多个,因此创建的子窗口可以是一个,也可以是多个,具体可根据实际需求而定,在此不进行限制。

步骤S108,在录屏功能开启时仅针对子窗口进行屏幕录制。

诸如,当用户触发录屏指令时确定录屏功能开启,然后仅针对子窗口执行截屏操作,并基于截屏操作结果生成录制视频。该截屏操作可以采用GDI(Graphics DeviceInterface,图形设备接口)截屏。可以理解的是,一个窗口对应一个GDI,相关技术中由于是整个窗口,所以采用GDI截屏也是针对整个窗口进行,从而将窗口中的所有内容录入,不可避免会包含有用户并不关心的无关内容,而本公开实施例基于待录屏区域进行窗口划分,将目标应用以多窗口方式呈现给用户,然后仅针对待录屏区域对应的子窗口的内容进行GDI截屏,则不会再录入其它无关内容。

可以理解的是,在实际应用中,前述步骤S102~步骤S106执行一次即可,后续在需要录屏时直接针对已创建的子窗口进行屏幕录制时直接执行步骤S108即可,无需每次录屏时都重复执行前述步骤S102~步骤S106。

综上,与相关技术中只能针对整个窗口进行录屏、导致录屏结果包含较多无关内容相比,本公开实施例提供的上述方式可以将待录屏区域从主窗口中单独划分出来并相应创建子窗口,并直接针对子窗口录屏,从而使录屏结果仅包含所需内容,有效提升用户的观看体验。

此外,在基于录屏需求而将目标应用的窗口划分为多个窗口后,本公开实施例还进一步设置了主窗口与子窗口之间的协同关系,诸如设置主窗口与子窗口的显示层级、主窗口与子窗口的焦点事件处理方式、消息显示方式等,以使得目标应用即便为了达到更好的录屏效果而被划分为多个窗口,用户仍能够较好的使用目标应用,较大程度的保持原有的用户使用习惯,以下分别进行阐述:

对于主窗口(也可称为父窗口)与子窗口的焦点事件处理方式,可以设置子窗口将接收到的焦点事件转发给主窗口处理。该焦点(focus)事件诸如可以由鼠标点击、Tab键等键盘上的指定键定位到元素,元素获得焦点时则发生焦点事件。对于主窗口(也可称为父窗口)与子窗口的消息显示方式,可以设置主窗口生成的弹窗显示在子窗口上,以保证用户可以直接在子窗口上看到该弹窗,如果显示在子窗口的弹窗接收到焦点事件,则直接由主窗口处理,也即由主窗口处理弹窗接收到的焦点事件。通过上述方式,可以确保始终由主窗口响应用户操作。为便于对上述内容进行理解,示例性说明如下:如果鼠标点击在子窗口,则由子窗口转发焦点到主窗口,同时鼠标后续的相关事件由子窗口捕捉处理。而如果鼠标点击在主窗口的Webview弹窗时,则焦点在主窗口之上,所有操作由主窗口捕捉处理。其中,Webview是一个基于webkit引擎、展现web页面的控件,通过Webview可实现弹窗展示(简称Webview弹窗)。

进一步,本公开实施例还可以设置子窗口的状态随主窗口的状态的改变而相应改变;状态的改变包括以下一种或多种:激活状态与非激活状态之间的切换、窗口尺寸的改变、窗口位置的改变。其中,处于激活状态的窗口能够接收到来自鼠标和键盘等外部设备的操作指令,而处于非激活状态的窗口则不能接收到外部设备的操作指令。通过上述方式,有效保障了子窗口与主窗口的协调一致性。为便于对上述内容进行理解,示例性说明如下:主窗口在从非激活状态切换为激活状态时,则会遍历所有子窗口均从非激活状态切换为激活状态;主窗口的位置发生改变时会遍历所有子窗口的位置同步改变,也即,主窗口移动时会遍历所有子窗口同步移动。此外,当用户改变主窗口尺寸时,子窗口的尺寸也会相应改变,诸如用户对主窗口进行拉伸缩放等操作时,主窗口的尺寸参数会发生相应变化,此时子窗口的尺寸参数也会成比例变化。

以目标应用为线上教学应用,待录屏区域为用于展示教学课件的课件区为例进行说明,可以参见图2和图3所示,其中,图2为子窗口创建前的示意图,图3为子窗口创建后的示意图。该示例中为了简便示意,仅以一个待录屏区域为例进行示意,在实际应用中,待录屏区域还可以是多个,不应当被视为限制。图2中共显示一个窗口,即为主窗口;在子窗口创建前,原有窗口(主窗口)为一整个窗口,上面包含有标题控制区域、老师及学生头像显示区域、涂鸦及课件区域、以及用于显示老师和学生之间交流信息的即时通信区域。图3中共显示两个窗口,具体的,除了主窗口之外,还将涂鸦及课件区域作为待录屏区域,并在该区域的基础上创建了涂鸦及课件窗口(用黑线框明确划分出来,又称子窗口);与此同时,主窗口的消息弹窗仍旧可显示在涂鸦及课件窗口之上,但是不属于涂鸦及课件窗口,因而在针对涂鸦及课件窗口录屏时不会将该消息弹窗录入。另外,涂鸦及课件窗口会将接收到的焦点事件都转发给主窗口,主窗口的消息弹窗虽然显示在涂鸦及课件窗口上,但由于归属主窗口,通过消息弹窗接收到的焦点事件当然也由主窗口处理。另外,在用户改变主窗口的状态时,涂鸦及课件窗口的状态也随之改变,虽然涂鸦及课件窗口从主窗口中独立出来,但是仍旧保证了和主窗口的协调一致性,较大程度的保持了原有的用户使用习惯。

在实际应用中,本公开实施例还提供了如图4所示的一种子窗口的创建流程图,更为详细的阐述了子窗口的创建过程,主要包括如下步骤:

步骤S402,确定待创建子窗口的目标区域,设置目标区域的背景色为指定的特殊色值;其中,该目标区域可以是前述待录屏区域。

步骤S404,调用指定接口获取目标区域的位置信息、主窗口标识以及特殊色值。目标区域的位置信息诸如可以是目标区域的相对坐标和宽高等信息,主窗口标识可以为主窗口ID(Identity Document)、主窗口句柄等。可以理解的是,每个窗口都具有自己唯一的标识。此外,还可以通过指定接口获取统一资源定位符(Uniform Resource Locator,URL),URL是转为标识网上资源位置而设置的编址方式,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,可理解为互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置。通过这种方式来实现目标应用的窗口定位。

步骤S406,对具有特殊色值的目标区域进行透明处理。

步骤S408,在透明处理后的目标区域上创建子窗口,并设置主窗口的Z序在子窗口之上。

步骤S410,子窗口保存主窗口标识,主窗口保存子窗口标识。具体实现时,子窗口保存主窗口ID、主窗口句柄,并将子窗口句柄及相对坐标等信息添加到主窗口的子窗口容器中。通过这种方式可以使主窗口与子窗口之间进行交互。

步骤S412,设置子窗口的状态随主窗口的状态的改变而相应改变。诸如,主窗口在移动时遍历所有子窗口,使子窗口与主窗口同步移动;主窗口在激活时遍历所有子窗口同步激活,而且Z序保持不变。

步骤S414,设置主窗口生成的弹窗显示在子窗口上,并由主窗口处理弹窗接收到的焦点事件。

步骤S416,设置子窗口将接收到的焦点事件转发给主窗口处理。

通过上述方式可以在原有的一个主窗口之上根据需求而独立创建子窗口,并保证主窗口的Z序始终位于子窗口之上,且由主窗口处理焦点事件。通过上述方式创建了子窗口之后,即可认为将目标区域从主窗口中独立出来,但是仍旧保证了和主窗口的协调一致性,较大程度的保持了原有的用户使用习惯。另外,在实际应用中,前述步骤标号不应当被视为先后顺序的限定,诸如步骤S412至步骤S416可以同时执行,或者先执行步骤S416再执行步骤S412、步骤S414等,执行顺序不应当被视为限制。

通过上述方式创建了子窗口之后,如果监测到录屏功能开启,则可直接针对子窗口进行屏幕录制,改善了相关技术中对整个主窗口进行录屏导致录入较多无关信息的问题。

在将本公开实施例提供的上述录屏方法可应用于任何需要单独针对所需区域进行录制的目标应用,诸如应用于在线教学应用中的老师客户端,在直播教学场景下,较好的改善了录制课堂回放视频的过程中,将诸如弹窗等无关信息录入回放视频的问题,提升了课堂回放视频的质量,进而提升学生观看课堂回放视频的体验。

对应于前述录屏方法,本公开实施例还提供了一种录屏装置,该装置可由软件和/或硬件实现,一般可集成在电子设备中,可通过执行录屏方法实现录屏。参见图5所示的录屏装置的结构示意图,该装置主要包括:

区域确定模块502,用于确定目标应用的主窗口中的待录屏区域;

透明处理模块504,用于对主窗口的待录屏区域进行透明处理;

窗口创建模块506,用于在经透明处理的待录屏区域的位置处创建子窗口,并设置主窗口的显示层级前于子窗口的显示层级;

屏幕录制模块508,用于在录屏功能启动时仅针对子窗口进行屏幕录制。

与相关技术中只能针对整个窗口进行录屏、导致录屏结果包含较多无关内容相比,本公开实施例提供的上述装置可以将待录屏区域从主窗口中单独划分出来并相应创建子窗口,并直接针对子窗口录屏,从而使录屏结果仅包含所需内容,有效提升用户的观看体验。

在一些实施方式中,区域确定模块502具体用于:通过指定接口接收用户输入的待录屏区域在目标应用的主窗口中的位置信息;基于所述位置信息确定所述待录屏区域。

在一些实施方式中,上述装置还包括:焦点设置模块,用于设置子窗口将接收到的焦点事件转发给主窗口处理。

在一些实施方式中,上述装置还包括:弹窗设置模块,用于设置主窗口生成的弹窗显示在子窗口上,并由主窗口处理弹窗接收到的焦点事件。

在一些实施方式中,上述装置还包括:状态设置模块,用于设置子窗口的状态随主窗口的状态的改变而相应改变;状态的改变包括以下一种或多种:激活状态与非激活状态之间的切换、窗口尺寸的改变、窗口位置的改变。

在一些实施方式中,屏幕录制模块508具体用于:在录屏功能启动时,仅针对子窗口执行截屏操作,并基于截屏操作结果生成录制视频。

在一些实施方式中,目标应用为线上教学应用;待录屏区域为用于展示教学课件的课件区。

本公开实施例所提供的录屏装置可执行本公开任意实施例所提供的录屏方法,具备执行方法相应的功能模块和有益效果。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置实施例的具体工作过程,可以参考方法实施例中的对应过程,在此不再赘述。

进一步,本公开实施例提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述任一的录屏方法。

图6为本公开实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600包括一个或多个处理器601和存储器602。

处理器601可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。

存储器602可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行所述程序指令,以实现上文所述的本公开的实施例的录屏方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入装置603还可以包括例如键盘、鼠标等等。

该输出装置606可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置606可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图6中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的录屏方法。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本公开实施例所提供的录屏方法。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种基于IOS系统的录屏直播方法、装置、设备及存储介质
  • 一种录屏方法、装置、设备及介质
技术分类

06120113207375