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

基于消息进行录屏关键帧截取的方法和系统

文献发布时间:2024-04-18 19:59:31


基于消息进行录屏关键帧截取的方法和系统

技术领域

本发明涉及计算机系统中合规性测试技术领域,具体地,涉及基于消息进行录屏关键帧截取的方法和系统,更为具体地,涉及合规性自动化检测中基于消息进行录屏关键帧截取的方法和系统。

背景技术

为了确保软件符合现有的法律法规,必须在软件检测中增加有关隐私处理、数据分级分类等各类合规性的检测。合规性检测不同于目前应用广泛的功能性测试,功能性测试以测试用例为检测单元,从建立包含预期输入和预期输出的测试用例、实施测试为基本流程进行测试。合规性检测中做法有较大不同:有的从业务流程角度出发,建立业务流程的模型,并在软件变更过程中检查新流程是否满足要求;专利文献CN114564358A(申请号:202210193021.4)公开了一种变更操作的合规性审查方法、装置、计算机设备、存储介质和计算机程序产品,可用于信息安全领域、内控合规领域或金融领域中,变更操作的合规性审查方面,也可用于除金融领域之外的任意领域,例如大数据领域。所述方法包括:获取生产环境内软件系统的变更事件的日志信息;基于预先构建的检测模型,对日志信息进行合规性审查,得到审查结果;其中,检测模型为根据预先配置的问题检测规则库确定的模型;基于审查结果生成变更事件的审查报告。有的基于安全测试策略构建测试用例,收集各种安全测试结果,综合完成合规性检测;专利文献CN115277104A(申请号:202210766808.5)公开了一种车机的合规性测试方法、装置、电子设备及存储介质,其中,方法包括:获取车辆的至少一个待测试项目,包括硬件安全测试、通信协议与接口安全测试、操作系统安全测试、应用软件安全和数据安全测试;控制车辆以每个待测试项目对应的安全测试策略进行测试,并采集测试过程中车辆的硬件安全测试结果、通信协议与接口安全测试结果、操作系统安全测试结果、应用软件安全结果和数据安全测试结果;并根据其中的一项或多项生成车辆的合规性测试结果。有的检测方法比较依赖人工检测,尤其是检测条目内容设置、核验和判定均依赖人工进行;专利文献CN114676432A(申请号:202210582002.0)公开了一种APP隐私合规性检查方法、终端和系统,其中方法包括以下步骤:在检查终端上启动被测APP和辅助检测APP;逐条提取合规性检查条目数据库中的检测条目内容显示于第二显示区;检测用户在检查终端上运行被测APP以核验与检测条目内容的对应性,并根据检测结果触发确定触钮或否定触钮;响应于下一步触钮:将截图暂存区内的所有屏幕截图拼合成设定大小得到检测凭证截图;并将截图暂存区内的屏幕截图清空;将检测标识、检测凭证截图和对应的检测条目编号对应存入检测结果报告表;检测标识为确定检测标识或否定检测标识;将检测结果报告表生成检测结果报告。有的应用知识图谱等技术进行隐私合规性检测;专利文献CN115292510A(申请号:202210799884.6)公开了一种面向GDPR的隐私政策合规性检测方法,将GDPR中对于隐私政策的要求抽象形成一个三级结构的GDPR知识图谱,并通过该知识图谱标注收集到的层级结构的隐私政策,形成面向GDPR的隐私政策语料库;再通过面向GDPR的隐私政策合规性检测模型,能够对隐私政策中的文本预测是否属于GDPR中的某项条款。有的从特定媒体内容出发,实施合规性检测;专利文献CN114786004A(申请号:202210347816.6)公开了一种视频图像标注文字的合规性检验方法,该方法对图像中标注文字的合规性进行检验,即检验标注文字是否命名准确、位置统一。首先使用文字检测模型对视频图像中的所有标注文字进行定位,根据定位结果进行标注文字的位置合规性检验;再根据定位结果获得标注文字所在区域图像,使用文字识别模型对图像中的标注文字进行识别,对识别出的标注文字作时间和地点信息的区分,通过不同的后处理方式对标注文字进行处理并检验其内容合规性;最后输出标注文字合规性检验结果。

从媒体内容,也就是软件界面进行录屏,并从图像信息直接进行合规性检查,例如是否存在不必要的个人隐私信息或者存在不当的广告投放、骚扰等,是人工检测中最为重要的一环,这一过程目前还暂时未见自动化的实施。其难点在于视频的切分、标注的自动化。有关视频切分的专利大都是基于新闻或者影视视频内容、字幕进行切分;专利文献CN113435438B(申请号:202110721675.5)公开了一种图像和字幕融合的视频报幕板提取及视频切分方法及系统首先利用Focus结构和CSP结构作为Backbone提取图像特征,再利用FPN和PAN结构作为检测的Neck对特征进行融合,最后利用GIOU_Loss函数进行视频中的报幕板检测工作,根据检测结果,利用Craft对报幕板检测框中文字进行检测,利用CRNN模型进行识别,利用NER方式文本识别内容进行实体抽取,根据实体抽取内容和检测到的报幕板信息进行聚类,根据聚类结果,对视频中的各个节目完成切分工作。专利文献CN104778230B(申请号:201510149297.2)公开了一种视频数据切分模型的训练、视频数据切分方法和装置,该训练方法包括:对第一视频数据进行视频特征检测,以获得一个或多个第一视频特征向量信息;采用一个或多个第一视频特征向量信息进行训练,以获得视频数据切分模型;采用视频数据切分模型对第一视频数据进行切分,以获得切分结果;根据切分结果判断视频数据切分模型是否满足预设的验证条件;若是,则输出视频数据切分模型;若否,则重新执行采用一个或多个第一视频特征向量信息进行训练,以获得视频数据切分模型的步骤。但,针对合规性检测需要分析软件录屏,这给已有的基于视频内容变换的现有切分方法带来技术挑战,最典型的问题就是关键帧的遗漏。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种基于消息进行录屏关键帧截取的方法及系统。

根据本发明提供的一种基于消息进行录屏关键帧截取的方法,包括:

步骤S1:当新窗口出现或者窗口内容出现变化并满足预设要求时,利用窗口消息捕获子系统捕获消息,将捕获消息中的相应事件和发生时间戳通过socket发送到电脑端或者设备端设备录屏子系统中;

步骤S2:利用设备录屏子系统与窗口消息捕获子系统通信,并对被测软件屏幕进行录制;

步骤S3:关键帧截取子系统通过消息时间戳对视频进行关键帧的定位和抽取。

优选地,所述利用窗口消息捕获子系统捕获的消息包括:TYPE_WINDOW_STATE_CHANGED以及TYPE_WINDOW_CONTENT_CHANGED;

所述TYPE_WINDOW_STATE_CHANGED标识新窗口的出现;

所述TYPE_WINDOW_CONTENT_CHANGED标识窗口内容出现变化且当前变化需满足预设要求。

优选地,所述设备录屏子系统与窗口消息捕获子系统通信包括:设备录屏子系统在测试开始和结束时发出的消息TYPE_RECORD_START、TYPE_RECORD_END;和在测试过程中接收的窗口消息捕获子系统捕获消息。

所述TYPE_RECORD_START是由所述设备录屏子系统发出,标识窗口消息捕获的开始;所述TYPE_RECORD_START还用于设备录屏子系统的时间戳同步和关键帧截图子系统的时间戳定位;

所述TYPE_RECORD_END是由所述设备录屏子系统发出,标识窗口消息捕获的结束;所述TYPE_RECORD_END还用于关键帧截图子系统的时间戳定位;

优选地,所述利用设备录屏子系统对被测软件屏幕进行录制包括:在所述设备录屏子系统运行过程中,设备录屏子系统对通信信息进行实时展示,以确保窗口消息的完全捕捉;

所述通信消息包括:SCRCPY_START、前述设备录屏子系统与窗口消息捕获子系统通信的全部消息、USER_CAPTURE、SCRIPT_RUNNING;

所述SCRCPY_START由设备录屏子系统产生,用于标识设备录屏子系统录像开始;

所述USER_CAPTURE是在设备录屏子系统中当测试人员手工进行截屏操作时,记录电脑端测试人员人工操作截图的动作;

所述SCRIPT_RUNNING是在设备录屏子系统运行自动脚本时产生,用于标识自动化脚本的运行记录。

优选地,所述步骤S3采用:

步骤S3.1:读取设备录屏子系统导出的消息记录和录屏视频;

步骤S3.2:对齐现实时间戳和视频帧数;

其中:frame

步骤S3.3:若设备录屏子系统已保存截图证据,则将文件移入结果文件夹;若设备录屏子系统未在输出路径下保存截图证据,关键帧截取子系统根据计算的视频帧数作为关键帧进行截取;

步骤S3.4:在关键帧截取完成后,关键帧截取子系统基于提取的截图证据生成最终结果记录文件。

根据本发明提供的一种基于消息进行录屏关键帧截取的系统,包括:

模块M1:当新窗口出现或者窗口内容出现变化并满足预设要求时,利用窗口消息捕获子系统捕获消息,将捕获消息中的相应事件和发生时间戳通过socket发送到电脑端或者设备端设备录屏子系统中;

模块M2:利用设备录屏子系统与窗口消息捕获子系统通信并对被测软件屏幕进行录制;

模块M3:关键帧截取子系统通过消息时间戳对视频进行关键帧的定位和抽取。

优选地,所述利用窗口消息捕获子系统捕获消息包括:TYPE_WINDOW_STATE_CHANGED以及TYPE_WINDOW_CONTENT_CHANGED;

所述TYPE_WINDOW_STATE_CHANGED标识新窗口的出现;

所述TYPE_WINDOW_CONTENT_CHANGED标识窗口内容出现变化且当前变化需满足预设要求。

优选地,所述设备录屏子系统与窗口消息捕获子系统通信包括:设备录屏子系统在测试开始和结束时发出的消息TYPE_RECORD_START、TYPE_RECORD_END;和在测试过程中接收的窗口消息捕获子系统捕获消息。

所述TYPE_RECORD_START是由所述设备录屏子系统发出,标识窗口消息捕获的开始;所述TYPE_RECORD_START还用于设备录屏子系统的时间戳同步和关键帧截图子系统的时间戳定位;

所述TYPE_RECORD_END是由所述设备录屏子系统发出,标识窗口消息捕获的结束;所述TYPE_RECORD_END还用于关键帧截图子系统的时间戳定位;

优选地,所述利用设备录屏子系统对被测软件屏幕进行录制包括:在所述设备录屏子系统运行过程中,设备录屏子系统对通信信息进行实时展示,以确保窗口消息的完全捕捉;

所述通信消息包括:SCRCPY_START、前述设备录屏子系统与窗口消息捕获子系统通信的全部消息、USER_CAPTURE、SCRIPT_RUNNING;

所述SCRCPY_START由设备录屏子系统产生,用于标识设备录屏子系统录像开始;

所述USER_CAPTURE是在设备录屏子系统中当测试人员手工进行截屏操作时,记录电脑端测试人员人工操作截图的动作;

所述SCRIPT_RUNNING是在设备录屏子系统运行自动脚本时产生,用于标识自动化脚本的运行记录。

优选地,所述模块M3采用:

模块M3.1:读取设备录屏子系统导出的消息记录和录屏视频;

模块M3.2:对齐现实时间戳和视频帧数;

其中:frame

模块M3.3:若设备录屏子系统已保存截图证据,则将文件移入结果文件夹;若设备录屏子系统未在输出路径下保存截图证据,关键帧截取子系统根据计算的视频帧数作为关键帧进行截取;

模块M3.4:在关键帧截取完成后,关键帧截取子系统基于提取的截图证据生成最终结果记录文件。

与现有技术相比,本发明具有如下的有益效果:

1、本发明中使用安卓手机窗口消息实现对手机录屏的关键帧识别,该方法区别与现有基于画面内容或字幕切割视频的关键帧截取方法,本方法所需的系统开销更小,处理速度更快,对录频画面质量的要求更低;

2、本发明中截取的关键帧与手机运行状态相关,当两帧界面色彩相差不大,但发生了界面切换时,该方法可将前后两个不同的界面图像正确识别为关键帧,提高了合规性测试的严谨性和权威性;

3、本发明可以很好地适应屏幕上动态画面切换,例如视频或者广告等,不会因视频内容的变换造成不准确的关键帧提取,提高了关键帧截取精度,减少了合规性检测人员的工作量。

4、本发明中的截取方法无需安卓手机的管理员权限即可完成采集,减轻了合规性测试对于手机权限的依赖,提高了本方法在手机软件测试中的适用范围;

5、本系统通过设置安装于被检测软件所运行的设备上的窗口消息捕获子系统和与其配套的设备录屏子系统,实现了合规性测试和关键帧截取的自动化,提高了合规性检测的效率。此外,手动截屏功能和自动化脚本的引入使得合规性测试具备可复现性,多次测试可以得到相同的结果,确保了测试证据收集的可信度和完整性。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为基于窗口消息的视频关键帧截取步骤示意图。

图2为基于窗口消息截取关键帧进行合规性内容检测的系统结构示意图。

图3为设备录屏子系统构建的文件体系。

图4为关键帧截取子系统构建的文件体系。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

实施例1

为了解决合规性检测中软件录屏视频关键帧的抽取,本发明提出了一种基于消息进行录屏关键帧截取的方法及系统。

所述基于消息进行录屏关键帧截取的方法,包括:

步骤S1:当新窗口出现或者窗口内容出现变化并满足预设要求时,利用窗口消息捕获子系统捕获消息,将捕获消息中的相应事件和发生时间戳通过socket发送到电脑端或者设备端设备录屏子系统中;

步骤S2:利用设备录屏子系统与窗口消息捕获子系统通信并对被测软件屏幕进行录制;

步骤S3:关键帧截取子系统通过消息时间戳对视频进行关键帧的定位和抽取。

所述窗口消息捕获子系统包括:该子系统运行在被检测软件所运行的设备中,以后台模式运行。该子系统基于安卓系统的无障碍服务,当新窗口出现或者窗口内容出现巨大变化的时候,该系统会将相应事件和发生时间戳通过socket发送到电脑端设备录屏子系统中。该系统主要捕获的消息包括且不限于如下消息:

TYPE_WINDOW_STATE_CHANGED:该消息由安卓系统产生,标识了手机新窗口的出现,如打开新的软件。

TYPE_WINDOW_CONTENT_CHANGED:该消息由安卓系统产生,标识了巨大的手机内容改变。目前包含两种判定条件:1)Content Type个数大于3;2)子系统捕获到界面上文字信息。

所述设备录屏子系统包括:该子系统可运行在测试电脑端或者被测软件运行设备端上,在整个测试过程中始终保持运行。该系统将在测试过程中保持对被测软件屏幕的录制。在记录开始时,该子系统会向窗口消息捕获子系统发送包含TYPE_RECORD_START的安卓广播以激活窗口消息捕获子系统,并传递时间保证两个子系统之间时间的同步。之后,该子系统将完成以下消息的记录:

SCRCPY_START:该消息由设备录屏子系统产生,用于标识设备录屏子系统录像开始,可在设备录屏子系统UI界面上用于向测试人员确认录屏功能已被激活且运转良好。

来自窗口消息捕获子系统的消息包括:前述由窗口消息子系统捕获的消息,设备录屏子系统会将来自窗口消息子系统的消息同步记录到设备录屏子系统中;

USER_CAPTURE:该消息在设备录屏子系统中当测试人员手工进行截屏操作时产生,用于记录电脑端测试人员人工操作截图的动作。若当前界面未产生窗口消息但测试人员认为该界面可构成合规性检测的证据,测试人员可以在界面上手动发出截图指令进行截图,截图证据将保存在录屏端。

SCRIPT_RUNNING:该消息在设备录屏子系统运行自动脚本时产生,用于标识自动化脚本的运行记录,以此方便测试人员进行重复性操作,保证合规性测试的严谨性和可重复性。脚本自动提取的截图证据将保存在录屏端。目前系统所支持的自动脚本为python语言,采用的adbutils包对安卓手机进行自动操作,系统提供脚本模板。

在所述的设备录屏子系统运行过程中,所捕捉到的消息会实时展示,以确保窗口消息的完全捕捉。如未捕捉到相应窗口信息,测试人员可在该子系统内自行截屏。对于一些可重复的截屏操作,测试人员可在该子系统内编写自动化脚本实施重复性的截屏。

该子系统将保存并记录所有收到的消息以及录屏文件及截屏文件等。所有数据将被输入进关键帧截取子系统进行接续的关键帧抽取步骤。

所述关键帧截取子系统包括:该子系统运行在电脑端。该子系统的输入为窗口消息捕获子系统的输出,以及设备录屏子系统的输出。该子系统通过消息时间戳对视频进行关键帧的定位和抽取。

所述的关键帧为测试过程中设备录屏子系统记录的消息时间戳所对应的视频帧。

所述的消息时间戳为窗口消息捕获子系统捕获消息并记录的时间戳。

所述的关键帧截取子系统的逻辑步骤如下:

步骤101、读取设备录屏子系统导出的消息记录和录屏视频。关键帧截取子系统以此获得各个关键帧的类型和相应时间戳。同时,该子系统也会读取视频文件,用于之后的截取。

步骤102、对齐现实时间戳和视频帧数。关键帧截取子系统会将所有消息时间戳减去SCRCPY_START的消息时间戳并乘以视频帧率,以此将各消息在真实世界的时间戳对齐到视频帧数,对齐公式如下:

其中:frame

在步骤102后,关键帧截取子系统会对TYPE_RECORD_START和TYPE_RECORD_END之间(不包括TYPE_RECORD_START和TYPE_RECORD_END)的窗口消息按是否已有对应的截图证据保存进行不同的处理。

步骤103、如果设备录屏子系统已保存截图证据(即测试人员自主截图或脚本自动截图),将文件/文件夹中的文件移入结果文件夹。

步骤104、如果设备录屏子系统未在输出路径下保存截图证据,关键帧截取子系统会根据之前计算的视频帧数作为关键帧进行截取,默认一个消息截取一帧。

步骤105、生成最终结果记录文件。在关键帧截取完成后,关键帧截取子系统会整理提取的截图证据,生成最终结果记录文件,以方便后续对于截屏图片的进一步判断和处理。

本发明还提供一种基于消息进行录屏关键帧截取的系统,所述基于消息进行录屏关键帧截取的系统可以通过执行所述基于消息进行录屏关键帧截取的方法的流程步骤予以实现,即本领域技术人员可以将所述基于消息进行录屏关键帧截取的方法理解为所述基于消息进行录屏关键帧截取的系统的优选实施方式。

实施例2

实施例2是实施例1的优选例

为使本发明的设计方案更加清楚,下面将结合附图对本发明作进一步描述。

本实施例实现的是在安卓APP的合规性检测中基于窗口消息进行录屏关键帧截取和抽取的方法和系统。附图中的框图和流程图,图示了按照本发明所述所构筑的系统中各子系统之间的连接关系和信息传输途径和运行流程示意图。流程图或框图中的每个方框和判断框都可以代表一个子系统、程序段或代码的一部分。所述模块、程序段或代码的一部分包含一个或多个用于实现预定的逻辑功能的可执行命令。也应当注意,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,可以用执行规定功能或操作的专用的基于硬件的系统来实现,或者可以用专门硬件与计算机指令组合来实现。

本实施例采用的系统结构示意图如图2所示,系统使用人员需要完成以下步骤来搭建基于窗口消息截取关键帧的整套系统(所需设备包括一个运行待测软件的安卓机和一个测试用电脑;在本实施例中,假设设备录屏子系统运行在电脑端):

1、在安卓手机中部署窗口消息捕获子系统(以下简称为:手机端),并在手机中运行窗口消息捕获子系统。

2、将安卓手机通过USB线连接到电脑,并确保可以使用Android Debug Bridge(以下简称为:adb)调试手机。

3、在电脑端部署设备录屏子系统(以下简称为:录屏端)和关键帧截取子系统(以下简称为:截取端)。

以上操作完成后,可使用该系统进行软件测试过程的录屏和关键帧截取。在本实施例中,假设所有中间文件和最终文件均保存在同一目录下(以下简称为:目标文件夹)。

测试步骤如下:

1、开启录屏端的录屏功能,并查看录屏端是否捕获并显示收到SCRCPY_START消息。如果捕捉到,则可进行下一步操作;否则,需要检查各子系统并重新操作。

2、控制录屏端向手机端发送包含当前时间戳和TYPE_RECORD_START消息的安卓广播。该步骤是为了启动手机端的窗口消息记录功能并完成和电脑时间的同步。发送完成后,需要确认录屏端收到并记录TYPE_RECORD_START消息。如果收到,说明录屏端和手机端通讯正常,则可进行下一步操作;否则,需要重启手机端或录屏端重复操作。

3、在以上两步完成以后,测试人员可按照合规性测试要求操作手机中的待测软件,手机端会自动将捕获到的信息通过adb经由端口转发发送到录屏端。除去自动录屏外,依据实际检测需要,测试人员还可自行发出人工截图指令或运行自动截图脚本。在整个过程中,测试人员需要确认所有操作对应的窗口信息是否被捕捉。若未捕捉到相关窗口信息但该界面构成合规性检测证据,则需要测试人员自行人工截图。人工截图和自动脚本的运行逻辑如下:

3a:截图指令通过adb的screencap指令对当前手机画面进行截图,再通过adb的pull命令传递到录屏端。录屏端会将文件保存,文件名为当前时间戳,文件类型为png。具体而言,假设测试人员在时间戳为1691016045124的时间点发送了截图指令,则录屏端会将手机屏幕截图以1691016045124.png的名字保存在目标文件夹下。

3b:自动脚本执行时会与录屏端进行socket连接,以确保可随时结束脚本运行。在运行脚本的同时,录屏端会在目标文件夹下生成一个名为“[当前时间戳].png”的文件夹,里面存放了执行期间由自动脚本截取的图,文件名为截图当时的时间戳,文件类型为png。具体而言,假设测试人员在时间戳为1691016052000的时间点执行了自动脚本,而脚本运行过程中在时间戳1691016069528的时候对当前屏幕进行了截图,则录屏端会现在目标文件夹下创建名为1691016052000.png的文件夹,并截屏图片则会以1691016069528.png的名字保存在该文件夹下。

4、在测试结束后,测试人员需要停止录屏端的录屏。在录屏停止的同时,录屏端会向手机端发送包含当前时间戳和TYPE_RECORD_END消息的安卓广播,录屏端最终会收到并记录TYPE_RECORD_END消息。

5、在接收到TYPE_RECORD_END消息后,测试人员即可进行文件导出。导出的文件包含两个:1)消息记录文件;2)录屏视频文件。捕获信息文件的文件名固定为messages.csv。该文件会将测试期间所有收到的窗口信息保存下来,其中的信息有:i)消息类型type;ii)触发窗口的主体package(TYPE_WINDOW_STATE_CHANGED和TYPE_WINDOW_CONTENT_CHANGED会指向安卓包;SCRIPT_RUNNING会指向对应脚本名;TYPE_RECORD_START和TYPE_RECORD_END会指向手机端;其余会指向录屏端);iii)窗口消息捕获到的文字text;iv)窗口消息的时间戳time。而录屏视频文件的文件名固定为video.mp4,是SCRCPY_START消息到TYPE_RECORD_END消息之间所有测试过程的手机界面截图。

在录屏端完成测试后,正常情况下,测试人员在目标文件夹下可以观察到:1)消息记录文件(即messages.csv);2)录屏视频文件(即video.mp4);3)截图指令/自动脚本保存的截屏图片。录屏端的最终存储文件结构示例如图3所示。如果观察到的文件结构与测试预期相符,测试人员可进行截取端的操作。

为进行截取端的操作,测试人员需要提供messages.csv和video.mp4的完整文件路径。为保证结果的统一性,截取端会在目标文件夹新建一个名为frames的文件夹,用于保存整理好的关键帧,并生成一个timetable.csv以便于后续检测中对结果的管理。具体而言,假设录屏端最终得到的文件系统如图3所示,而messages.csv里保存的信息有:(注:MACT_GUI在本实施例中代指录屏端;com.target.gestureHooker在本实施例中代指手机端;scroll.py为脚本名)

假设以上信息与video.mp4内的视频内容相匹配且符合合规性取证操作要求。则基于此文件,截取端会执行的操作如图1所示:

1、读取设备录屏子系统导出的消息记录文件和录屏视频文件。截取端会读入messages.csv文件以此获得各关键帧的类型和相应时间戳。同时,该子系统也会读取video.mp4,获取视频帧率(记为FPS),并用于之后的截取。具体而言,在本实施例中,假设视频video.mp4的帧率为24fps,截取端得到的关键帧类型和时间戳如上表所示。

2、对齐现实时间戳和视频帧数。关键帧截取子系统会通过对齐公式将各消息在真实世界的时间戳对齐到视频帧数。具体而言,在本实施例中,根据公式(1),截取端得到的结果如下:(注:下表中frame表示消息对齐后的帧数)

在此步骤完成之后,截取端会对TYPE_RECORD_START和TYPE_RECORD_END之间(不包括TYPE_RECORD_START和TYPE_RECORD_END)的窗口消息依据是否已有截屏图片保存进行不同的处理。

3、如果存在截屏图片文件,即消息类型为USER_CAPTURE或SCRIPT_RUNNING,截取端会将文件/文件夹中的文件移入frames。具体而言,在本实施例中,对于时间戳为1691016045124的USER_CAPTURE消息和时间戳为1691016052000的SCRIPT_RUNNING消息,录屏端已在测试过程中将截屏图片以不同的文件结构保存在目标文件夹下。截取端只需把图片移入frames文件夹,即将1691016045124.png和1691016052000.png文件夹下的1691016069528.png放入frames文件夹。需要注意的是,文件夹1691016052000.png不会被移入frames文件夹,仅作为判断是否已保存截屏图片的依据,会在内部文件移动至frames文件夹后进行删除以保证结果文件夹的整洁性。

4、截取关键帧。如果不存在截屏图片文件,截取端会在视频中截取关键帧。具体而言,在本实施例中,对于时间戳为1691016045996的消息TYPE_WINDOW_STATE_CHANGED,不存在已保存的截屏图片文件。于是,截取端会将video.mp4中第432帧的画面截出并以1691016045996.png的文件名保存在frames文件夹中。对于其他类型的消息,除了SCRCPY_START、TYPE_RECORD_START、TYPE_RECORD_END用于关键帧定位不进行截取,USER_CAPTURE和SCRIPT_RUNNING经由步骤三处理以外,均进行步骤4)的处理。

5、生成最终结果记录文件。在关键帧的截取和整理完成后,截取端会在frames文件夹中生成一个名为timetable.csv的文件,用以登记frames文件夹下的所有关键帧图片文件。具体而言,在本实施例中,timetable.csv文件中会包含以下信息:(注:下表中frame_name表示保存关键帧的文件名)

总结而言,在截取端运行结束后,测试人员应在目标文件夹下观察到如图4的文件结构。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

技术分类

06120116525131