CN115329155B - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115329155B CN115329155B CN202211237668.9A CN202211237668A CN115329155B CN 115329155 B CN115329155 B CN 115329155B CN 202211237668 A CN202211237668 A CN 202211237668A CN 115329155 B CN115329155 B CN 115329155B
- Authority
- CN
- China
- Prior art keywords
- parameter
- parameters
- frame
- target program
- pixel
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K17/00—Methods or arrangements for effecting co-operative working between equipments covered by two or more of main groups G06K1/00 - G06K15/00, e.g. automatic card files incorporating conveying and reading operations
- G06K17/0022—Methods or arrangements for effecting co-operative working between equipments covered by two or more of main groups G06K1/00 - G06K15/00, e.g. automatic card files incorporating conveying and reading operations arrangements or provisious for transferring data to distant stations, e.g. from a sensing device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例提供一种数据处理方法、装置、设备及存储介质,至少应用于动画检测分析和动画制作领域,其中,方法包括:确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;基于所述参数固定后的像素影响参数,获取所述目标程序在至少两个版本下的待截取视频;对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。通过本申请,能够提高资源检测效率和检测结果的准确性。
Description
技术领域
本申请实施例涉及互联网技术领域,涉及但不限于一种数据处理方法、装置、设备及存储介质。
背景技术
在对同一游戏应用的不同版本进行视频帧截取时,通常需要先进行帧对齐处理,这里的帧对齐是指在多次重复进入游戏同一场景后对帧序计数,在相同的帧数时,该帧图像在像素级具有一致性指标。相关技术中,通常是通过模拟用户界面(UI,User Interface)操作来实现应用程序的多个版本中的帧对齐效果,并基于帧对齐后得到的帧对齐图像对比来实现版本间的美术资源检测,进而发现资源中的缺陷(bug)。
但是,相关技术中通过模拟UI操作实现帧对齐的方案帧对齐效果较差,无法解决引擎中和业务逻辑中的影响参数对视频帧的影响,会极大影响资源检测效率和检测结果的准确性。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及存储介质,至少应用于动画检测分析和动画制作领域,能够实现在不依赖程序源码的情况下准确的实现帧对齐,保证多个版本中相同逻辑帧的图像保持高度一致,从而提高资源检测效率和检测结果的准确性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据处理方法,所述方法包括:确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;基于所述参数固定后的像素影响参数,获取所述目标程序在至少两个版本下的待截取视频;对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。
本申请实施例提供一种数据处理装置,所述装置包括:确定模块,用于确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;参数固定模块,用于对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;获取模块,用于基于所述参数固定后的像素影响参数,获取所述目标程序在至少两个版本下的待截取视频;帧截取模块,用于对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;资源检测模块,用于基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。
在一些实施例中,所述像素影响参数包括:引擎层影响参数和逻辑层影响参数;所述确定模块还用于:通过预设引擎对所述目标程序进行程序解析,得到所述目标程序中的引擎层影响参数;通过预设编译器对所述目标程序的业务逻辑进行解析,得到所述目标程序中的逻辑层影响参数。
在一些实施例中,所述引擎层影响参数包括:引擎层随机数;所述参数固定模块还用于:获取所述引擎层随机数的取值区间;基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;将所述固定取值确定为参数固定后的引擎层随机数。
在一些实施例中,所述引擎层影响参数包括:现实时间;所述参数固定模块还用于:获取所述目标程序在每一版本下的待截取视频;确定所述待截取视频中所渲染的每相邻的两个逻辑帧之间的现实时间;基于每相邻的两个逻辑帧之间的现实时间,确定现实时间固定值;将所述现实时间固定值,确定为参数固定后的现实时间。
在一些实施例中,所述逻辑层影响参数包括:逻辑层随机数;所述参数固定模块还用于:获取所述逻辑层随机数的取值区间;基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;将所述固定取值确定为参数固定后的逻辑层随机数。
在一些实施例中,所述逻辑层影响参数包括:运行所述目标程序的终端设备的设备配置参数;所述参数固定模块还用于:从所述终端设备的设备配置参数中获取自动降配参数;对所述自动降配参数进行修正,以关闭所述终端设备的自动降配功能,得到参数固定后的设备配置参数。
在一些实施例中,所述逻辑层影响参数包括:帧缓存参数;所述参数固定模块还用于:获取所述目标程序对应的帧缓存机制和与所述帧缓存机制对应的帧缓存参数;对所述帧缓存参数进行修正,以结束所述帧缓存机制对应的帧缓存功能,得到参数固定后的帧缓存参数。
在一些实施例中,所述逻辑层影响参数包括:异步资源参数;所述参数固定模块还用于:获取所述目标程序对应的异步资源和所述目标程序中的资源对应的多个加载线程;对所述异步资源对应的异步资源参数进行修正,以实现同步加载所述异步资源,对应得到同步加载参数;或者,调用单线程对所述多个加载线程所加载的资源进行同步加载,对应得到同步加载参数;将所述同步加载参数确定为参数固定后的异步资源参数。
在一些实施例中,所述逻辑层影响参数包括:起始帧参数;所述参数固定模块还用于:获取所述目标程序在每一版本下的待截取视频中的起始帧对应的起始帧参数;将多个版本对应的多个起始帧参数中的任一起始帧参数,确定为所述目标程序的起始帧参数;将所述目标程序的起始帧参数,确定为参数固定后的起始帧参数。
在一些实施例中,所述逻辑层影响参数包括:人工智能指令对应的指令参数和场景切换残留参数;所述参数固定模块还用于:获取所述目标程序中的人工智能指令对应的指令参数和场景切换残留参数;删除所述指令参数和所述场景切换残留参数,得到所述参数固定后的像素影响参数。
在一些实施例中,所述帧截取模块还用于:将所述参数固定后的像素影响参数,添加至所述目标程序在每一版本下的程序包中,得到参数修正后的程序包;运行所述参数修正后的程序包,得到所述目标程序在每一版本下的运行数据;基于所述运行数据进行视频帧渲染,得到所述目标程序在至少两个版本下的待截取视频。
在一些实施例中,所述资源检测模块还用于:对所述至少两个截取帧图像进行图像对比,得到所述至少两个截取帧图像对应的对比结果;将所述对比结果确定为所述资源检测的检测结果;其中,在每一版本下的目标程序中,针对同一虚拟对象配置有虚拟附加对象,且不同版本下的目标程序中的同一虚拟对象所配置的虚拟附加对象不同;相应地,所述装置还包括:策略生成模块,用于基于所述检测结果,生成对应于所述虚拟附加对象的设计策略,并输出所述设计策略。
本申请实施例提供一种数据处理设备,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述数据处理方法。
本申请实施例提供一种计算机程序产品,计算机程序产品包括计算机程序或可执行指令,计算机程序或可执行指令存储在计算机可读存储介质中;其中,数据处理设备的处理器从计算机可读存储介质中读取可执行指令,并执行可执行指令时,实现上述的数据处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现上述数据处理方法。
本申请实施例具有以下有益效果:确定目标程序的像素影响参数,该像素影响参数用于确定目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;并对像素影响参数进行参数固定处理,从而基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频;并对至少两个版本下的待截取视频分别在相同视频帧位置进行截取;基于截取的至少两个截取帧图像,对至少两个版本下的目标程序进行资源检测。如此,由于对目标程序的像素影响参数进行固定,从而能够保证基于固定后的像素影响参数,所获取的不同版本下的待截取视频在每一对应视频帧的像素级信息的一致性,即剔除了能够影响待截取视频中的视频帧中像素级信息的影响参数,从而能够准确的实现帧对齐;并且由于像素影响参数的获取不依赖目标程序的程序源码,因此,能够实现在不依赖程序源码的情况下准确的实现帧对齐,保证多个版本中相同逻辑帧的图像保持高度一致,提高了基于帧对齐后所截取的截取帧图像进行资源检测的资源检测效率和检测结果的准确性。
附图说明
图1是实际截图和理论截帧出现偏差的原理说明;
图2是本申请实施例提供的数据处理系统的一个可选的架构示意图;
图3是本申请实施例提供的数据处理设备的结构示意图;
图4是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图5是本申请实施例提供的数据处理方法的另一个可选的流程示意图;
图6是本申请实施例提供的数据处理方法的再一个可选的流程示意图;
图7是本申请实施例提供的游戏或引擎模块和资源检测模块的实现流程示意图;
图8是某射击类手游在两个不同版本下截取的同一逻辑帧的粒子效果对比示意图;
图9是某游戏场景在两个不同版本下截取的同一逻辑帧的烟流效果对比示意图;
图10是某游戏角色在两个不同版本下截取的同一逻辑帧的流光效果对比示意图;
图11是某游戏角色在两个不同版本下截取的同一逻辑帧的动态骨骼对比示意图;
图12是针对某游戏道具在两个不同版本下截取的同一逻辑帧的对比示意图;
图13是针对某游戏场景在两个不同版本下截取的同一逻辑帧的对比示意图;
图14是某游戏中特定英雄的技能在不同版本下存在镜头抖动的对比示意图;
图15是UV动画贴图游戏在不同版本下的对比示意图;
图16是某游戏中特定英雄在不同版本下由于降配导致不同表现的对比示意图;
图17是某游戏中特定英雄由于异步加载导致不同表现的对比示意图;
图18是游戏业务中自定义获取随机数导致的同一逻辑帧表现不同的对比示意图;
图19是AI指令导致同一逻辑帧表现不同的对比示意图;
图20是技能残留导致同一逻辑帧表现不同的对比示意图;
图21是相关技术中的Mono虚拟机原理图;
图22是相关技术中使用Mono接口注入逻辑到游戏中的流程示意图;
图23是本申请实施例提供的il2cpp原理图;
图24是本申请实施例提供的使用il2cpp接口实现并注入客户端逻辑;
图25是本申请实施例提供的设备在指定场景下对帧对齐图像自动截取和上传的批处理实现图;
图26是本申请实施例提供的一种后端自动对比平台的界面图;
图27是本申请实施例提供的另一种后端自动对比平台的界面图;
图28是某英雄在不同皮肤相同逻辑帧的一技能的表现示意图;
图29是采用本申请实施例的数据处理方法识别出色块的结果示意图;
图30是采用本申请实施例的数据处理方法识别出材质异常的结果示意图;
图31是采用本申请实施例的数据处理方法识别出渲染异常的结果示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
这里,先对本申请实施例涉及的专业术语进行说明。
(1)帧(frame):由于游戏画面是通过连续的静态图像切换形成的运动假象,帧即为每次形成静态图像的过程的代称。
(2)每秒传输帧数(FPS,Frames Per Second):比如60帧(60FPS),表示每秒会生成60张静态游戏画面并进行连续切换。
(3)帧对齐:是指在多次重复进入游戏同一场景后对帧序计数,在相同的帧数时,该帧图像在像素级一致性指标。
(4)运行时(runtime):指一个程序在运行(或者在被执行)的依赖。
(5)反射机制:指程序可以访问、检测和修改它本身状态或行为的一种能力。
(6)即时编译(JIT,Just-In-Time Compiler):一种运行时将中间代码编译成本地代码的过程。
(7)钩子技术(Hook):一种特殊的消息处理机制,可以查看系统或者进程中的各种事件消息,截获发往目标窗口的消息并进行处理。
在解释本申请实施例的数据处理方法之前,首先对帧对齐技术进行说明。
这里首先解释为什么会存在帧不对齐。由于动画移动的本质是:新位置=f(Δt)+老位置,其中,f(Δt)表示速度乘以时间。正常情况下,新位置随着引擎时间Δt不断改变,从而使人观察到动画效果。例如,在动画中某个模型的手在执行举手动作时,手部移动的过程包括多个关键帧,手部在当前的关键帧中的新位置,就可以采用该公式计算,即基于当前的关键帧与相邻的上一关键帧之间的Δt,以及,上一关键帧的老位置,即可计算得到当前的关键帧中的手部的新位置。
在实际视频帧截取中,Δt会根据FPS在一个范围内动态变化,而位置是根据Δt累计更新计算的。而Δt又是根据现实实际来计算的,因为每帧执行的真实时间不一样,所以Δt一直在动态变化,如:当当前出现卡顿的时候,下一帧会做补偿,让Δt更大,移动距离更远。表1是视频帧截取过程中理论截帧与实际截帧的对比表,可以看出,当想截取第4帧的时候,累计Δt为0.45,理论值是0.4,所以导致在第4帧的时候实际位置与理论位置不相同,从而导致帧不对齐。
表1
本申请实施例中,在Unity(一种游戏制作引擎)底层,各个系统(如动画、粒子、着色器等)状态(如位置)的更新依赖真实时间,通过计算与前一帧的间隔时间(Δt,deltaTime)作为参数来更新现有的状态。举例说明:若动画采样帧为30,则理论上对第10帧截图时,即应当在动画时间10/30s时进行截图,此时,动画系统通过插值运算将各动画节点的位置、旋转等数据更新到该时间点,从而宏观上表现出该动画到达该帧的效果。但实际上,受机型性能或逻辑执行超时等因素影响,动画有时不能以稳定的30帧运行,会导致截图时的动画时间>理想的10/30s,从而导致多次第10帧的截图画面并不一致,如图1所示,是实际截图和理论截帧出现偏差的原理说明。基于此,本申请实施例通过Hook的技术手段,对Unity引擎实现对上述Δt计算与更新逻辑相关的函数进行劫持,然后覆盖原始逻辑并重新实现,使得引擎各个系统在每一帧获得的Δt相同,从而使得多次重入同一场景时,引擎在更新状态后每次获得的计算结果一致,从而让最终画面的表现一致。本申请实施例的方法具备良好的帧对齐效果,故后端可使用较为简单且严苛算法进行资源检测,如此,资源检测的速度快、效率高、再小的bug也能被精确定位到,该技术点对整个方案的可行性尤其重要。下面,将对本申请实施例的数据处理方法进行详细说明。
本申请实施例提供的数据处理方法中,首先,确定目标程序的像素影响参数;像素影响参数用于确定目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;然后,对像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;并基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频;再然后,对至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;最后,基于至少两个截取帧图像,对至少两个版本下的目标程序进行资源检测。如此,由于对目标程序的像素影响参数进行固定,从而能够保证基于固定后的像素影响参数,所获取的不同版本下的待截取视频在每一对应视频帧的像素级信息的一致性,即剔除了能够影响待截取视频中的视频帧中像素级信息的影响参数,从而能够准确的实现帧对齐;并且由于像素影响参数的获取不依赖目标程序的程序源码,因此,能够实现在不依赖程序源码的情况下准确的实现帧对齐,保证多个版本中相同逻辑帧的图像保持高度一致,提高了基于帧对齐后所截取的截取帧图像进行资源检测的资源检测效率和检测结果的准确性。
下面说明本申请实施例的数据处理设备的示例性应用,本申请实施例提供的数据处理设备可以实施为终端,也可以实施为服务器。在一种实现方式中,本申请实施例提供的数据处理设备可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能机器人、智能家电和智能车载设备等任意的具备视频渲染和显示功能、视频处理功能和游戏动画显示功能的终端;在另一种实现方式中,本申请实施例提供的数据处理设备还可以实施为服务器,其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content Delivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。下面,将说明数据处理设备实施为服务器时的示例性应用。
参见图2,图2是本申请实施例提供的数据处理系统的一个可选的架构示意图,本申请实施例以数据处理方法应用于游戏应用(即目标程序)的美术资源检测为例进行说明,也就是说,对不同版本下的游戏应用的美术资源进行资源检测。为实现支撑任意一个游戏应用,本申请实施例的终端上至少安装有游戏应用或者具有游戏应用的安装包,或者,还可以安装有程序资源检测应用或者具有程序资源检测平台,可以在程序资源检测平台上对游戏应用的美术资源进行资源检测。本申请实施例中,数据处理系统10中至少包括终端100、网络200和服务器300,其中服务器300是程序资源检测平台的平台服务器。服务器300可以构成本申请实施例的数据处理设备。终端100通过网络200连接服务器300,网络200可以是广域网或者局域网,又或者是二者的组合。在对游戏应用进行程序资源检测时,终端100获取游戏应用的安装包,并对安装包进行解析得到游戏应用中的像素影响参数,其中,像素影响参数用于确定游戏应用所渲染的游戏视频中的每一视频帧图像的像素级表现特征,并将像素影响参数发送给服务器300。服务器300通过特定的参数固定方式,对像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;并基于参数固定后的像素影响参数,获取游戏应用在至少两个版本下的待截取视频;对至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;基于至少两个截取帧图像,对至少两个版本下的游戏应用进行资源检测,得到资源检测结果。服务器300在得到资源检测结果之后,将资源检测结果发送给终端100,并在终端100的当前界面显示资源检测结果。
在一些实施例中,还可以由终端100实现数据处理方法,也就是说,由终端作为执行主体获取终端上的游戏应用的安装包,并对安装包进行解析得到游戏应用的像素影响参数;然后,对像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;并基于参数固定后的像素影响参数,获取游戏应用在至少两个版本下的待截取视频;再然后,对至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;最后,基于至少两个截取帧图像,对至少两个版本下的游戏应用进行资源检测,得到资源检测结果。终端在得到资源检测结果的同时,在当前界面上显示该资源检测结果,例如可以显示至少两个截取帧图像以及该至少两个截取帧图像之间的差异性等检测结果。
本申请实施例所提供的数据处理方法还可以基于云平台并通过云技术来实现,例如,上述服务器300可以是云端服务器。通过云端服务器确定目标程序的像素影响参数,或者,通过云端服务器对像素影响参数进行参数固定处理,或者,通过云端服务器基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频,或者,通过云端服务器对至少两个版本下的待截取视频分别在相同视频帧位置进行截取,或者,通过云端服务器对至少两个版本下的目标程序进行资源检测等。
在一些实施例中,还可以具有云端存储器,可以将目标程序在不同版本下的安装包存储至云端存储器中,或者,还可以将目标程序在至少两个版本下的待截取视频存储至云端存储器中,或者,还可以将固定后的像素影响参数等存储至云端存储器中。这样,再次对目标程序进行程序资源检测时,可以直接从云端存储器中获取固定后的像素影响参数,并基于获取的固定后的像素影响参数运行不同版本下的目标程序,得到待截取视频,实现不同版本下的目标程序的帧对齐,进而实现对目标程序的资源检测。
这里需要说明的是,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
图3是本申请实施例提供的数据处理设备的结构示意图,图3所示的数据处理设备包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。数据处理设备中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,以及一个或多个输入装置332。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,UniversalSerial Bus)等;输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可采用软件方式实现,图3示出了存储在存储器350中的一种数据处理装置354,该数据处理装置354可以是数据处理设备中的数据处理装置,其可以是程序和插件等形式的软件,包括以下软件模块:确定模块3541、参数固定模块3542、获取模块3543、帧截取模块3544和资源检测模块3545,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的数据处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
本申请各实施例提供的数据处理方法可以由数据处理设备来执行,其中,该数据处理设备可以是任意一种具备视频渲染和显示功能、视频处理功能和游戏动画显示功能的终端,或者也可以是服务器,即本申请各实施例的数据处理方法可以通过终端来执行,也可以通过服务器来执行,或者还可以通过终端与服务器进行交互来执行。
参见图4,图4是本申请实施例提供的数据处理方法的一个可选的流程示意图,下面将结合图4示出的步骤进行说明,需要说明的是,图4中的数据处理方法是通过服务器作为执行主体为例来说明的。
步骤S401,确定目标程序的像素影响参数。
这里,目标程序可以是任意一种能够进行视频渲染并呈现所渲染的程序视频的应用,目标应用可以具有多个不同的版本。例如,目标程序可以是游戏应用的应用程序、即时通信应用的应用程序、视频应用的应用程序或信息推荐应用的应用程序等。在实现数据处理方法时,服务器可以获取到目标程序在不同版本下的安装包,并基于多个不同版本下的安装包中的任一安装包来确定该目标程序的像素影响参数。
像素影响参数用于确定目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征。其中,目标程序所渲染的程序视频可以是目标程序运行过程中的操作界面跳转视频、目标程序对第三方应用生成的视频进行渲染后得到的渲染视频等,例如,对于游戏应用,程序视频可以是指游戏操作视频或者游戏视频;对于视频应用,程序视频可以是指播放的视频。在一些实施例中,程序视频还可以是动画视频,程序视频由多个连续的视频帧图像构成,当程序视频为动画视频时,每一视频帧图像为一个动画图像。在每一视频帧图像中,每一像素点具有一特定的像素值,像素级表现特征是指基于每一像素点的像素值所呈现的该视频帧图像的图像呈现结果。当两幅视频帧图像中的每一像素点的像素值均相同时,这两幅视频帧图像的像素级表现特征相同。此时,两幅视频帧图像所呈现的内容完全相同;当两幅视频帧图像中存在大于预设数量阈值的像素点的像素值不同时,这两幅视频帧图像的像素级表现特征不同,此时,两幅视频帧图像所呈现的内容存在差异或者不同,即可以确定出这两个视频帧图像为具有不同表现的图像。
在实现的过程中,两幅视频帧图像的像素级表现特征不同,可以是指整个视频帧图像中呈现的内容之间具有一定的差异性,或者可以对两幅视频帧图像进行相似度比较,当相似度小于1时,表明两幅视频帧图像的像素级表现特征不同。
本申请实施例中,针对不同的目标程序,所提取的像素影响参数不同,通过修改任意一种像素影响参数,均可以使修改前后的目标程序在进行程序视频渲染后所得到的程序视频中,存在至少一个视频帧图像的像素级表现特征不同。对于同一目标程序的不同版本,每一像素影响参数可以相同也可以不同。
步骤S402,对像素影响参数进行参数固定处理,得到参数固定后的像素影响参数。
这里,参数固定处理是指将像素影响参数确定为一个固定值,并且针对目标程序的不同版本,均采用该固定值作为不同版本下的目标程序的像素影响参数,即基于该固定值进行目标程序的渲染。
在实现的过程中,参数固定处理可以是对像素影响参数进行修正,将目标程序中原始的像素影响参数修正为一个新的像素影响参数;还可以对像素影响参数进行归零处理,即删除目标程序中原始的像素影响参数,从而实现在目标程序渲染时,不考虑该像素影响参数对应的影响类型。
在一些实施例中,参数固定处理还可以通过Hook技术来实现,即通过Hook技术对目标程序的安装包中与像素影响参数相关的函数进行挂钩处理,实现对像素影响参数的固定。
本申请实施例中,在通过Hook技术进行参数固定处理时,可以基于Hook技术构建一消息处理平台,可以在该消息处理平台上设置子程序以监测目标程序中指定窗口的某种消息,即可以监测与像素影响参数相关的进程消息,例如,监测与引擎层影响参数相关的进程消息。当这些进程消息到达该消息处理平台后,在进程消息对应的实际处理窗口处理进程消息的函数之前,由消息处理平台处理这些进程消息。也就是说,Hook技术允许应用程序截获处理目标程序的安装包在运行过程中,与像素影响参数相关的函数对应的进程消息或特定事件。
Hook实际上是一个处理消息的程序段,通过系统调用,把Hook挂入目标程序对应的系统中。每当所监测的特定消息发出,且在没有到达实际处理窗口前,Hook程序就先捕获该特定消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(或改变)该特定消息。例如,获取特定消息中携带的像素影响参数,并对像素影响参数进行修改或置零处理,从而实现参数固定处理过程。
当对像素影响参数进行修正时,所得到的固定后的像素影响参数即为修正后的像素影响参数;当对像素影响参数进行归零处理时,所得到的固定后的像素影响参数即为取值为零或者取值为空的像素影响参数。
本申请实施例中,通过对像素影响参数进行参数固定处理,使得即使存在多个不同的版本,目标程序在进行程序视频渲染时均可以不考虑像素影响参数对应的影响类型对视频渲染时的影响,从而能够保证在同一逻辑帧对应的视频帧图像的像素级表现特征一致。
这里需要说明的是,逻辑帧是指程序视频按照固定逻辑间隔进行视频帧截取后得到的每一视频帧,其中逻辑间隔是指不考虑现实时间和渲染时长,仅考虑渲染时得到的具体渲染内容差别所对应的渲染间隔,即视频渲染引擎在进行程序视频渲染时,不考虑渲染时长,只考虑渲染后的渲染内容差别为固定的内容差的情况下,对应的相邻两个视频帧之间的间隔。
举例来说,对于动画人物抬手的动作视频,当动画人物在执行抬手动作时,将手部每移动1米的位移后所在的位置对应的视频帧确定为一个逻辑帧,在进行视频帧渲染时,不考虑每移动1米所用的现实时间,只考虑移动到1米之后的位置,因此,截取的每一逻辑帧即为移动每1米后的视频帧。再举例来说,对于绘制圆形图案的视频,在进行画圆视频渲染时,每一逻辑帧是绘制圆形的相同曲边长度(例如1厘米)后所在位置对应的视频帧,即每画1厘米后的视频帧为一个逻辑帧,而并不关注每画1厘米的程序视频在视频渲染时所用的现实时间。
步骤S403,基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频。
这里,可以采用固定后的像素影响参数修正固定前的像素影响参数,得到目标程序在每一版本下的新的安装包,并运行每一版本下的新的安装包,得到运行视频,该运行视频即待截取视频。
本申请实施例中,由于将目标程序在不同版本下的像素影响参数固定,因此,剔除了不同像素影响参数对应的影响类型,对目标程序在运行过程中渲染程序视频时的影响,从而能够保证不同版本下的目标程序均能够不考虑影响因素,保证同一逻辑帧下的不同截取帧是同一像素影响参数下的渲染图像。
步骤S404,对至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像。
本申请实施例中,在得到多个版本下的待截取视频之后,对待截取视频中相同视频帧位置的视频帧进行截取,这里,视频帧是指待截取视频中的每一帧图像;视频帧位置是指视频帧在待截取视频中的先后位置,例如,视频帧位置可以为相对于待截取视频的第一帧图像的视频时长,如待截取视频的第1秒的位置、第2秒的位置等。
由于多个版本下的待截取视频是基于固定后的像素影响参数进行视频渲染后得到的,因此,在进行视频渲染时实现了对不同版本的帧对齐,即相同视频帧位置对应的视频帧为同一逻辑帧,也就是说,相同视频帧位置的视频帧是不考虑现实时间和渲染时长,仅考虑渲染时得到的具体渲染内容差别对应的间隔,且具有相同间隔的视频帧。
通过在相同视频帧位置进行相同逻辑帧的截取,得到的多个截取帧图像是同一目标程序在不同版本下且在同一渲染间隔下得到的,因此,通过对比所截取的多个截取帧图像即可确定不同版本之间的差别。
步骤S405,基于至少两个截取帧图像,对至少两个版本下的目标程序进行资源检测。
这里,通过对比至少两个截取帧图像之间的差异,实现对至少两个版本下的目标程序进行资源检测。例如,可以确定至少两个截取帧图像之间的相似度,根据相似度对至少两个版本下的目标程序进行资源检测。
在一些实施例中,资源检测可以是美术资源检测,例如可以对游戏应用在不同版本下的美术资源进行检测,以确定不同版本下的美术资源之间的差异性。
本申请实施例的数据处理方法至少可以应用于以下场景:当游戏应用升级之后,为了分析升级后的版本与升级前的版本之间在美术资源方面的差异性,例如同一英雄在相同游戏场景使用相同技能时的图像是否相同,则可以采用本申请实施例的方法,对两个版本的游戏应用的像素影响参数进行固定,并基于固定后的像素影响参数分别修改两个版本的游戏应用的安装包。之后,基于修改后的安装包分别运行两个版本的游戏应用,对应得到两个版本对应的游戏视频。此时,由于通过对像素影响参数进行固定,实现了两个版本的游戏视频的帧对齐,因此,可以基于帧对齐后的两个游戏视频进行多个相同视频帧位置的截取,得到多个逻辑帧对,并分别对每一逻辑帧对进行相似度比较,确定出每一逻辑帧对之间的相似度。如果相似度均为1,表明升级前后的两个版本在美术资源方面不存在差异性;如果存在任意的逻辑帧对之间的相似度小于1,则表明升级前后的两个版本在美术资源方面存在差异性,可以进一步对该逻辑帧对的差异性进行分析,或者输出该逻辑帧对,以供开发人员进行分析,确定是否存在美术问题,例如美术问题可以是色块问题、渲染材质问题和渲染质量问题等。
本申请实施例提供的数据处理方法,确定目标程序的像素影响参数,该像素影响参数用于确定目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;并对像素影响参数进行参数固定处理,从而基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频;并对至少两个版本下的待截取视频分别在相同视频帧位置进行逻辑帧;基于截取的至少两个截取帧图像,对至少两个版本下的目标程序进行资源检测。如此,由于对目标程序的像素影响参数进行固定,从而能够保证基于固定后的像素影响参数,所获取的不同版本下的待截取视频在每一对应视频帧的像素级信息的一致性,即剔除了能够影响待截取视频中的视频帧中像素级信息的影响参数,从而能够准确的实现帧对齐;并且由于像素影响参数的获取不依赖目标程序的程序源码,因此,能够实现在不依赖程序源码的情况下准确的实现帧对齐,保证多个版本中相同逻辑帧的图像保持高度一致,提高了基于帧对齐后所截取的截取帧图像进行资源检测的资源检测效率和检测结果的准确性。
在一些实施例中,像素影响参数包括:引擎层影响参数和逻辑层影响参数;其中,引擎层影响参数包括以下至少之一:引擎层随机数、现实时间;逻辑层影响参数包括以下至少之一:逻辑层随机数、运行所述目标程序的终端设备的设备配置参数、帧缓存参数、异步资源参数、起始帧参数、人工智能指令对应的指令参数和场景切换残留参数。
本申请实施例中,步骤S401中确定目标程序的像素影响参数,可以通过以下步骤实现:
步骤S4011,通过预设引擎对所述目标程序进行程序解析,得到目标程序中的引擎层影响参数。
这里,预设引擎可以是目标程序中的控制引擎,在目标程序的引擎层具有不同的影响类型,可以获取这些影响类型对应的影响参数,得到引擎层影响参数。本申请实施例中,在获取到目标程序的安装包之后,可以通过目标程序的控制引擎直接对目标程序的安装包进行程序解析,得到目标程序在引擎层的引擎层影响参数。
举例来说,当目标程序为游戏应用时,可以通过游戏应用的游戏引擎解析游戏应用的安装包,获取到游戏应用在引擎层的影响参数;当目标程序为信息搜索应用时,可以通过信息搜索应用的搜索引擎解析信息搜索应用的安装包,获取到信息搜索应用在引擎层的影响参数;当目标程序为杀毒软件时,可以通过杀毒软件的杀毒引擎解析杀毒软件的安装包,获取到杀毒软件在引擎层的影响参数。
步骤S4012,通过预设编译器对目标程序的业务逻辑进行解析,得到目标程序中的逻辑层影响参数。
由于开发人员在目标程序中可以人工添加一些业务逻辑,因此可以调用预设编译器对开发人员添加的特定的业务逻辑进行解析,得到目标程序在逻辑层的逻辑层影响参数。其中,业务逻辑是指目标程序所能够实现的特定业务的逻辑流程。
下面,将对引擎层影响参数和逻辑层影响参数的不同类型参数,以及,针对不同类型参数进行参数固定处理的实现过程进行说明。
针对引擎层影响参数中的引擎层随机数的参数固定处理过程,如图5所示,包括以下步骤:
步骤S501,获取引擎层随机数的取值区间。
这里,引擎层随机数是在一个特定取值区间内随机取到的值,也就是说,在目标应用的不同版本下,可以设置引擎层随机数的取值区间,在每一次运行目标程序时,可以从该取值区间内随机取一个值作为引擎层随机数,实现目标程序的运行和程序视频的渲染,这样,就会导致在不同运行时机,所得到的程序视频的像素级表现特征不同。
不同版本的引擎层随机数的取值区间可以相同也可以不同。当不同版本的引擎层随机数的取值区间相同时,但是由于在运行不同版本的目标应用时,针对引擎层随机数的随机取值,也将会导致不同版本的目标应用的引擎层随机数不同,因此也会导致在运行不同版本的目标应用时,所得到的程序视频的像素级表现特征不同。当不同版本的引擎层随机数的取值区间不同时,由于在运行不同版本的目标应用时,针对引擎层随机数的随机取值,也将会导致不同版本的目标应用的引擎层随机数不同,因此也会导致在运行不同版本的目标应用时,所得到的程序视频的像素级表现特征不同。
本申请实施例中,可以获取目标程序在任意一个版本下的引擎层随机数的取值区间。
步骤S502,基于取值区间中的最大取值和最小取值,确定与取值区间对应的固定取值。
这里,可以获取取值区间的最大取值和最小取值,并对最大取值和最小取值求均值,将均值确定为与该取值区间对应的固定取值;或者,还可以获取取值区间的最大取值,将最大取值确定为与取值区间对应的固定取值;或者,还可以获取取值区间的最小取值,将最小取值确定为与取值区间对应的固定取值;或者,还可以获取取值区间的最大取值和最小取值,并计算最大取值和最小取值的差值,将差值确定为与该取值区间对应的固定取值。
步骤S503,将固定取值确定为参数固定后的引擎层随机数。
这里,在得到固定取值之后,将该固定取值确定为该目标应用在每一版本下的引擎层随机数。也就是说,针对于不同版本的目标应用,均采用该固定取值作为引擎层随机数进行程序的运行和程序视频的渲染,从而实现对不同版本下目标程序的程序视频的帧对齐。
在一些实施例中,引擎层随机数包括但不限于产生粒子效果的随机数、产生烟流效果的随机数、产生流光效果的随机数、产生动态结构的随机数和引擎中的通用随机数。其中,产生粒子效果的随机数用于形成程序视频中的随机粒子;产生烟流效果的随机数用于在程序视频中随机形成烟流;产生流光效果的随机数用于在程序视频中随机形成流光;产生动态结构的随机数用于在程序视频中形成目标对象的随机结构,例如,可以随机形成人物的骨骼结构;引擎中的通用随机数用于在程序视频帧形成公共的随机特征。
针对引擎层影响参数中的现实时间的参数固定处理过程,请继续参照图5,包括以下步骤:
步骤S504,获取目标程序在每一版本下的待截取视频。
这里,待截取视频是未进行像素影响参数固定时进行视频渲染所得到的程序视频。
步骤S505,确定待截取视频中所渲染的每相邻的两个逻辑帧之间的现实时间。
这里,由于未进行像素影响参数固定,因此,会存在渲染卡顿等情况,所以每相邻的两个逻辑帧之间现实时间可以相同也可以不同。
步骤S506,基于每相邻的两个逻辑帧之间的现实时间,确定现实时间固定值。
这里,可以对全部现实时间求均值得到现实时间固定值;或者,获取正常渲染时,不存在任何渲染卡顿等异常情况下的两相邻的逻辑帧之间的现实时间,将该现实时间确定为现实时间固定值。
步骤S507,将现实时间固定值,确定为参数固定后的现实时间。
本申请实施例中,在得到现实时间固定值之后,将该现实时间固定值确定为该目标应用在每一版本下的引擎层随机数。也就是说,针对于不同版本的目标应用,均采用该现实时间固定值作为引擎层随机数进行程序的运行和程序视频的渲染,从而实现对不同版本下目标程序的程序视频的帧对齐。
针对逻辑层影响参数中的逻辑层随机数的参数固定处理过程,如图6所示,包括以下步骤:
步骤S601,获取逻辑层随机数的取值区间。
这里,逻辑层随机数是在一个特定取值区间内随机取到的值,也就是说,在目标应用的不同版本下,可以设置逻辑层随机数的取值区间,在每一次运行目标程序时,可以从该取值区间内随机取一个值作为逻辑层随机数,实现目标程序的运行和程序视频的渲染,这样,就会导致在不同运行时机,所得到的程序视频的像素级表现特征不同。
不同版本的逻辑层随机数的取值区间可以相同也可以不同。当不同版本的逻辑层随机数的取值区间相同时,但是由于在运行不同版本的目标应用时,针对逻辑层随机数的随机取值,也将会导致不同版本的目标应用的逻辑层随机数不同,因此也会导致在运行不同版本的目标应用时,所得到的程序视频的像素级表现特征不同。当不同版本的逻辑层随机数的取值区间不同时,由于在运行不同版本的目标应用时,针对逻辑层随机数的随机取值,也将会导致不同版本的目标应用的逻辑层随机数不同,因此也会导致在运行不同版本的目标应用时,所得到的程序视频的像素级表现特征不同。
本申请实施例中,可以获取目标程序在任意一个版本下的逻辑层随机数的取值区间。
步骤S602,基于取值区间中的最大取值和最小取值,确定与取值区间对应的固定取值。
这里,可以获取取值区间的最大取值和最小取值,并对最大取值和最小取值求均值,将均值确定为与该取值区间对应的固定取值;或者,还可以获取取值区间的最大取值,将最大取值确定为与取值区间对应的固定取值;或者,还可以获取取值区间的最小取值,将最小取值确定为与取值区间对应的固定取值;或者,还可以获取取值区间的最大取值和最小取值,并计算最大取值和最小取值的差值,将差值确定为与该取值区间对应的固定取值。
步骤S603,将固定取值确定为参数固定后的逻辑层随机数。
这里,在得到固定取值之后,将该固定取值确定为该目标应用在每一版本下的逻辑层随机数。也就是说,针对于不同版本的目标应用,均采用该固定取值作为逻辑层随机数进行程序的运行和程序视频的渲染,从而实现对不同版本下目标程序的程序视频的帧对齐。
在一些实施例中,逻辑层随机数包括但不限于产生镜头抖动的随机数、产生动画贴图和动画特效的随机数。其中,产生镜头抖动的随机数用于形成镜头随机抖动;产生动画贴图和动画特效的随机数用于在程序视频中随机形成动画贴图和动画特效。
针对逻辑层影响参数中的设备配置参数的参数固定处理过程,请继续参照图6,包括以下步骤:
步骤S604,从终端设备的设备配置参数中获取自动降配参数。
这里,设备配置参数是指针对设备性能进行设备资源分配的参数,例如,设备配置参数可以是运行目标程序的终端设备的中央处理器(CPU,Central Processing Unit)占用量、图形处理器(GPU,Graphics Processing Unit)占用量、带宽占用量等参数。
通常情况下,为了保证目标程序运行的稳定性,会监测终端设备的状态,当终端设备的性能不足时,会自动进行降配,即自动降低终端设备的设备配置参数。
步骤S605,对自动降配参数进行修正,以关闭终端设备的自动降配功能,得到参数固定后的设备配置参数。
本申请实施例中,对自动降配参数进行修正可以是对自动降配参数进行清空处理或者置零处理,这样,即使当终端设备的性能不足时,也不会自动进行降配,从而实现关闭终端设备的自动降配功能。此时清空处理或者置零处理后的自动降配参数即为参数固定后的设备配置参数。
针对逻辑层影响参数中的帧缓存参数的参数固定处理过程,请继续参照图6,包括以下步骤:
步骤S606,获取目标程序对应的帧缓存机制和与帧缓存机制对应的帧缓存参数。
这里,帧缓存机制是指在进行目标程序的程序视频渲染时,会自动对渲染的视频帧进行缓存。在进行视频帧缓存时,是基于特定的帧缓存参数实现的,因此可以获取逻辑层中帧缓存机制对应的帧缓存参数。
步骤S607,对帧缓存参数进行修正,以结束帧缓存机制对应的帧缓存功能,得到参数固定后的帧缓存参数。
这里,对帧缓存参数进行修正,可以是对帧缓存参数进行清空处理或者置零处理,这样,在进行程序视频渲染时,则不会对渲染的视频帧进行缓存,从而实现结束帧缓存机制对应的帧缓存功能或者关闭帧缓存机制对应的帧缓存功能。此时清空处理或者置零处理后的帧缓存参数即为参数固定后的帧缓存参数。
针对逻辑层影响参数中的异步资源参数的参数固定处理过程,请继续参照图6,包括以下步骤:
步骤S608,获取目标程序对应的异步资源和目标程序中的资源对应的多个加载线程。
这里,目标程序对应的异步资源是指目标程序中异步加载的资源,目标程序中的资源对应的多个加载线程是指加载同一资源时的多个异步线程。
步骤S609,对异步资源对应的异步资源参数进行修正,以实现同步加载所述异步资源,对应得到同步加载参数;或者,调用单线程对多个加载线程所加载的资源进行同步加载,对应得到同步加载参数。
这里,对异步资源对应的异步资源参数进行修正可以是对异步资源进行同步加载,此时同步加载对应的参数即为同步加载参数;对多个加载线程所加载的资源进行同步加载,是指调用一个单线程对多个加载线程所加载的资源进行同步加载,实现多个加载线程的加载同步,此时单线程加载时对应的参数即为同步加载参数。
步骤S610,将同步加载参数确定为参数固定后的异步资源参数。
本申请实施例中,通过对异步资源和多线程加载进行同步,实现同步加载,可以避免异步加载过程中导致的资源缺失从而造成的帧不对齐。
针对逻辑层影响参数中的起始帧参数的参数固定处理过程,请继续参照图6,包括以下步骤:
步骤S611,获取目标程序在每一版本下的待截取视频中的起始帧对应的起始帧参数。
这里,起始帧参数包括但不限于:起始帧在待截取视频中的位置、起始帧中的帧信息、起始帧的内容等。
步骤S612,将多个版本对应的多个起始帧参数中的任一起始帧参数,确定为目标程序的起始帧参数。
这里,可以从多个版本对应的多个起始帧参数中随机选择一个起始帧参数为目标程序的起始帧参数。
步骤S613,将目标程序的起始帧参数,确定为参数固定后的起始帧参数。
本申请实施例中,通过选择一个确定的起始帧的起始帧参数,作为目标程序在每一版本下的起始帧参数,实现了对目标程序在不同版本下的起始帧固定,从而能够在每次对目标程序的程序视频进行截帧时,保证后续截帧序号一致。
针对逻辑层影响参数中的指令参数和场景切换残留参数的参数固定处理过程,请继续参照图6,包括以下步骤:
步骤S614,获取目标程序中的人工智能指令对应的指令参数和场景切换残留参数。
这里,人工智能指令是指基于目标程序中的人工智能随机数形成的指令,用于实现目标程序的特定对象的随机功能,举例来说,对于游戏应用,会存在一些人工智能随机数,基于该人工智能随机数可以对游戏中的虚拟对象进行随机控制。
场景切换参数是指在目标程序的运行过程中,由于对应用场景的切换,会存在上一场景中的内容残留至下一场景中的情况。举例来说,在游戏应用中,会不停的切换英雄和皮肤,上一个技能残留或者资源残留会影响下一个用例的截帧。
步骤S615,删除指令参数和场景切换残留参数,得到参数固定后的像素影响参数。
本申请实施例中,将删除指令参数和场景切换残留参数,空闲态的指令参数和场景切换残留参数确定为参数固定后的像素影响参数。
本申请实施例中,删除指令参数和场景切换残留参数,可以避免人工智能指令和场景切换残留对截帧的影响。
在一些实施例中,步骤S403中基于参数固定后的像素影响参数,获取目标程序在至少两个版本下的待截取视频,可以通过以下步骤实现:
步骤S4031,将参数固定后的像素影响参数,添加至目标程序在每一版本下的程序包中,得到参数修正后的程序包。
这里,在添加参数固定后的像素影响参数时,可以是采用参数固定后的像素影响参数替换目标程序在每一版本下的程序包中的原始的像素影响参数,得到参数修正后的程序包。
步骤S4032,运行参数修正后的程序包,得到目标程序在每一版本下的运行数据。
步骤S4033,基于运行数据进行视频帧渲染,得到目标程序在至少两个版本下的待截取视频。
本申请实施例中,由于参数修正后的程序包具有固定的像素影响参数,即目标应用在不同版本下均具有固定的像素影响参数,因此基于目标程序在每一版本下的运行数据进行视频帧渲染时,所得到的在至少两个版本下的待截取视频是帧对齐后的视频。
在一些实施例中,步骤S405中基于至少两个截取帧图像对至少两个版本下的目标程序进行资源检测,可以通过以下步骤实现:
步骤S4051,对至少两个截取帧图像进行视频帧对比,得到至少两个截取帧图像对应的对比结果。
步骤S4052,将对比结果确定为资源检测的检测结果。
本申请实施例中,在每一版本下的目标程序中,针对同一虚拟对象配置有虚拟附加对象,且不同版本下的目标程序中的同一虚拟对象所配置的虚拟附加对象不同。相应地,方法还包括:基于检测结果,生成对应于虚拟附加对象的设计策略,并输出设计策略。
本申请实施例中,设计策略包括但不限于:当前虚拟附加对象所存在的问题、不同版本下的不同虚拟附加对象之间的差异性。可以基于得到的当前虚拟附加对象所存在的问题、不同版本下的不同虚拟附加对象之间的差异性等信息,给美术设计人员提供设计思路和设计指导。在实现的过程中,可以以截取帧图像对比显示的方式,直接输出得到对应于不同虚拟附加对象的截取帧图像,也可以输出不同虚拟附加对象的截取帧图像之间的差异性参数,这里差异性参数包括但不限于相似度。
举例来说,虚拟附加对象可以是游戏应用中英雄的皮肤,不同版本中的英雄的皮肤可以不同。本申请实施例可以应用于以下场景:在游戏应用中,为了实现对不同皮肤的美术设计,可以对同一英雄配置配置不同的皮肤,形成不同的安装包,并采用本申请实施例的方法,对配置不同皮肤后的游戏应用中的像素影响参数进行固定,并基于参数固定后的像素影响参数运行游戏应用得到不同的游戏视频,同时,对游戏视频进行截取,得到截取帧图像对,则可以对截取帧图像对进行美术分析,看该英雄在哪一皮肤下的视觉表现更加流畅和自然,实现对皮肤美术设计更加直观的指导。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
在程序资源检测时,为了实现帧对齐,本申请实施例通过Hook的技术手段,对Unity引擎实现引擎时间Δt计算与更新逻辑相关的函数进行劫持,然后覆盖原始逻辑并重新实现,使得Unity引擎各个系统在每一帧获得的Δt相同,从而使得多次重入同一场景时,Unity引擎在更新状态后每次获得的计算结果一致,从而让最终画面的表现一致。图7是本申请实施例提供的游戏或引擎模块和资源检测模块的实现流程示意图,如图7所示,实现流程包括以下步骤:
步骤S701,在游戏应用初始化之后,游戏或引擎模块701对Unity引擎各个系统进行初始化。
步骤S702,游戏或引擎模块701将初始化数据注入至资源检测模块702。
步骤S703,游戏或引擎模块701对各个系统循环刷新。
步骤S704,游戏或引擎模块701获取各个系统调用函数进行Δt计算、更新逻辑等功能函数。
步骤S705,资源检测模块702对反射框架进行初始化。
步骤S706,资源检测模块702获取Unity引擎的Δt计算、更新逻辑等相关函数的地址。
步骤S707,资源检测模块702通过Hook机制Hook上述函数。
步骤S708,资源检测模块702对游戏重新实现Unity引擎的Δt计算、更新逻辑等相关函数。
步骤S709,资源检测模块702更新Unity引擎中的各个系统。
步骤S710,在更新系统之后,对Unity引擎渲染的视频进行帧截图和上传。
下面对本申请实施例中的帧对齐关键点分别从引擎层和逻辑层进行举例说明。
在引擎层,针对粒子效果,粒子效果中会用到引擎自带随机数(即引擎层随机数),本申请实施例中,可以通过固定该引擎自带随机数,使不同版本下的待截取视频中的同一逻辑帧的粒子效果表现一致。如图8所示,是某射击类手游在两个不同版本下截取的同一逻辑帧的粒子效果对比示意图,可以看出,道具枪在射击时的粒子效果801和粒子效果802,由于引擎自带随机数的影响会存在不同,从而导致截取的两帧逻辑帧之间的相似度为99.75%,即小于1。而通过本申请实施例提供的数据处理方法,对游戏应用中的引擎自带随机数进行固定之后,不同版本的游戏应用在同一逻辑帧中的粒子效果表现会完全一致。
针对烟流效果对应的烟流随机数(即引擎层随机数),烟流效果中也会用到引擎自带随机数,本申请实施例中,可以通过固定随机数,使烟流效果表现一致。如图9所示,是某游戏场景在两个不同版本下截取的同一逻辑帧的烟流效果对比示意图,可以看出,该游戏场景下的烟流效果901和烟流效果902,由于引擎自带随机数的影响会存在不同,从而导致截取的两帧逻辑帧之间的相似度为99.51%,即小于1。而通过本申请实施例提供的数据处理方法,对游戏应用中的引擎自带随机数进行固定之后,不同版本的游戏应用在同一逻辑帧中的烟流效果表现会完全一致。
针对流光效果对应的随机数(即引擎层随机数),流光效果中也会用到引擎自带随机数,本申请实施例中,可以通过固定随机数,使流光效果表现一致。如图10所示,是某游戏角色在两个不同版本下截取的同一逻辑帧的流光效果对比示意图,可以看出,该游戏角色的头发在不同版本下,由于引擎自带随机数的影响,所具有的流光效果1001和烟流效果1002会存在不同。而通过本申请实施例提供的数据处理方法,对游戏应用中的引擎自带随机数进行固定之后,不同版本的游戏应用在同一逻辑帧中的流光效果表现会完全一致。
针对动态骨骼对应的随机数(即引擎层随机数),在人物移动中,人物骨骼会有摆动,如突然停止移动时手臂会有惯性摆动,摆动会有随机性,本申请实施例中,可以通过固定随机数以去掉随机性,保持摆动前后人物骨骼表现的一致性。如图11所示,是某游戏角色在两个不同版本下截取的同一逻辑帧的动态骨骼对比示意图,可以看出,该游戏角色在移动过程中骨骼会有摆动,因而导致所形成的人物图像1101和人物图像1102的表现不同。而通过本申请实施例提供的数据处理方法,对游戏应用中的引擎自带随机数进行固定之后,即通过固定随机数以去掉随机性,不同版本的游戏应用在同一逻辑帧中的人物骨骼表现会完全一致。
在引擎层,由于游戏中每一帧的间隔时间不会是理论的间隔时间,当时间大于阈值的时候,游戏逻辑会跳帧或卡顿。本申请实施例中,通过固定引擎时间Δt后可以让游戏每帧逻辑都能正常表现出来。如图12所示,是针对某游戏道具在两个不同版本下截取的同一逻辑帧的对比示意图,可以看出,由于每一帧的间隔时间不是理论的间隔时间,从而导致截取的同一逻辑帧中的同一游戏道具1201和游戏道具1202表现效果不同,两帧存在差异。而通固定引擎时间Δt,则可以保证不同版本下截取的同一逻辑帧的表现完全一致。
在引擎层,部分组件会求两次帧运行的现实时间差,所以本申请实施例也需要把现实时间也进行固定,让游戏每帧能正确表现出来。如图13所示,是针对某游戏场景在两个不同版本下截取的同一逻辑帧的对比示意图,由于未固定现实时间,每一帧的渲染时长不同,从而导致截取的同一逻辑帧中的子弹1301和子弹1302的弹出位置不同。而通固定现实时间,则可以保证不同版本下截取的同一逻辑帧的表现完全一致。
在引擎层,引擎具有一个公共获取随机数的函数,本申请实施例中,通过固定该函数的随机,使调用该函数的返回能保证一致,从而保证帧对齐。
在逻辑层,游戏中某些英雄释放技能时,镜头会出现随机抖动,导致帧不对齐,本申请实施例中,通过Hook技术固定随机数,使镜头抖动一致,从而实现帧对齐。如图14所示,是某游戏中特定英雄的技能在不同版本下存在镜头抖动的对比示意图,当该英雄1401和英雄1402释放同一技能时,由于镜头抖动的随机性,会导致不同版本下的帧不对齐。
在逻辑层,由于UV动画中贴图是随着时间进行变化的,本申请实施例中,通过固定时间,使动画每次变化一致,从而实现帧对齐。如图15所示,是UV动画贴图游戏在不同版本下的对比示意图,可以看出游戏图像中的云雾UV动画1501和云雾UV动画1502不一致,而通过本申请实施例的方法固定时间,可以使动画每次变化一致,保证不同版本下截取的同一逻辑帧的表现完全一致。
在一些实施例中,游戏为了保证稳定性,会监测游戏运行设备的状态,当设备性能不足时,会自动进行降配。本申请实施例中,可以通过Hook技术关闭该功能,从而保证每次截帧都是相同画质。如图16所示,是某游戏中特定英雄在不同版本下由于降配导致不同表现的对比示意图,可以看出,降配会导致英雄的影子1601丢失。
在一些实施例中,游戏中还会存在帧缓存机制,本申请实施例中,可以通过禁止CGameObjectPool缓存,防止粒子中的动画差一帧。
在一些实施例中,还可以让异步资源进行同步加载,因为异步加载资源会导致帧中资源缺失,从而导致帧不对齐。或者,由于多线程异步会导致资源加载异步,还可以通过强制设置单线程,使资源加载一致。如图17所示,是某游戏中特定英雄由于异步加载导致不同表现的对比示意图,可以看出,由于异步加载,导致截取的相同逻辑帧1701和1702在表现上会差一帧。
在一些实施例中,还可以在每次动画播放事件开始时进行截帧,从而保证后续截帧序号一致,即通过对起始帧进行固定以保证帧对齐。
在一些实施例中,由于游戏中会有很多地方使用到随机数,例如,在某游戏业务中会用到自定义获取随机数的方法,可以通过Hook技术固定该随机数,从而使逻辑帧对齐。如图18所示,是游戏业务中自定义获取随机数导致的同一逻辑帧表现不同的对比示意图,可以看出,所截取的逻辑帧中英雄离伞时,伞1801和伞1802的位置不同,即英雄离伞出现的位置随机。而本申请实施例中,通过固定自定义获取随机数的方法,可以保证不同版本下截取的同一逻辑帧的表现完全一致。
在一些实施例中,游戏中还会存在一些AI指令,AI指令会干扰帧命令的释放,本申请实施例中,可以忽略所有AI指令,避免指令混乱。如图19所示,是AI指令导致同一逻辑帧表现不同的对比示意图,可以看出,截帧场景中会存在干扰元素1901,如河道之灵,防御塔等,需要去除环境干扰,在截帧中只保留关注的元素。
在一些实施例中,在截帧场景中,会不停的切换英雄和皮肤,上一个技能残留或者资源残留会影响下一个用例的截帧,所以在截帧开始时候,可以清除所有残留。如图20所示,是技能残留导致同一逻辑帧表现不同的对比示意图,可以看出,针对于同一逻辑帧,英雄的技能残留2001在一个截帧中存在,在另一个截帧中不存在,这就会导致同一逻辑帧的表现不同,而本申请实施例中,通过清除所有残留或者资源残留,可以保证不同版本下截取的同一逻辑帧的表现完全一致。
本申请实施例提供的数据处理方法,基于Unity引擎,资源检测相关的客户端逻辑(如场景遍历等)使用反射机制实现,不依赖项目源码,具备很强的通用性。
在实现的过程中, Unity游戏项目可以默认使用特定编程语言作为游戏逻辑开发的编程语言(例如C#),经过编译后生成可执行文件(如DLL、EXE文件),而其中的逻辑是由一系列称为IL码(IL CODE)的中间指令字节码组合而成,在执行时则通过Mono(一种C#语言运行时)虚拟机作为运行时(runtime)对IL CODE进行JIT编译和执行。由于Mono默认自带反射机制,故只需将基于C#反射实现的客户端逻辑通过Mono接口,动态注入到现有游戏逻辑中进行执行即可。图21是相关技术中的Mono虚拟机原理图,图22是相关技术中使用Mono接口注入逻辑到游戏中的流程示意图。
为了提高代码执行效率,Unity提供了il2cpp功能,用于将C#代码翻译成C++进行编译,并通过il2cpp的运行时进行代码执行。而此种情况下,由于il2cpp的运行时没有反射机制,导致资源检测的客户端逻辑无法实现。本申请实施例通过il2cpp的运行时接口,模拟了一套类Mono的反射框架,并基于该框架实现资源检测的客户端逻辑。图23是本申请实施例提供的il2cpp原理图,图24是本申请实施例提供的使用il2cpp接口实现并注入客户端逻辑。
本申请实施例提供的数据处理方法,可以应用于美术资源检测,在进行美术资源检测时,首先,在版本自动部署阶段,游戏版本发布后,会自动在游戏流水线中拉取响应的资源包和安装包,并进行自动部署,为美术资源检测做准备。然后,设备在指定场景下对帧对齐图像自动截取和上传,如图25所示,是本申请实施例提供的设备在指定场景下对帧对齐图像自动截取和上传的批处理实现图。再然后,后端自动对比生成结果,并在前端展示结果。通过不同版本的对比,在差异中即可删选出新版本的美术相关问题。如图26和图27所示,均是本申请实施例提供的后端自动对比平台的界面图,在后端自动对比平台,可以对截取的逻辑帧进行对比。
在一些实施例中,上述数据处理方法还可以应用于美术资源逻辑帧量化,例如可以针对不同皮肤数据量化,因为本申请实施例的方法采用了逻辑帧对齐,可以实现观察不同皮肤在相同逻辑帧的表现,从而可以帮助美术人员更好的去量化和设计皮肤。
图28是某英雄在不同皮肤相同逻辑帧的一技能的表现示意图,可以看出,该英雄在不同皮肤相同逻辑帧下,在使用同一技能时的表面互不相同,因此,可以基于这些互不相同的美术表现,帮助美术人员更好的设计皮肤。
本申请实施例提供的数据处理方法,可以基于Unity游戏设计,所有的unity游戏都适用于该方案进行帧对齐截帧,从而进行美术资源检测,因此具有较高的通用性。并且,无需源码,无需开发人员介入,能让游戏在资源未更改的情况下,多个版本中同一帧的图像保持高度一致。同时,在游戏中通过本申请实施例的方法能够快速的发现大量美术资源的问题。如图29所示,是采用本申请实施例的数据处理方法识别出色块的结果示意图,可以看出,游戏在某一版本中的一逻辑帧中存在较大的色块291。如图30所示,是采用本申请实施例的数据处理方法识别出材质异常的结果示意图,可以看出,游戏在某一版本中的一逻辑帧中,道具301存在材质异常。如图31所示,是采用本申请实施例的数据处理方法识别出渲染异常的结果示意图,可以看出,在某射击类游戏中,识别出一逻辑帧中存在渲染异常。
可以理解的是,在本申请实施例中,涉及到用户信息的内容,例如,目标程序的像素影响参数、固定后的像素影响参数、游戏应用的运行参数、资源检测的检测结果等信息,如果涉及与用户信息或企业信息相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面继续说明本申请实施例提供的数据处理装置354实施为软件模块的示例性结构,在一些实施例中,如图3所示,数据处理装置354包括:
确定模块3541,用于确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;参数固定模块3542,用于对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;获取模块3543,用于基于所述参数固定后的像素影响参数,获取所述目标程序在至少两个版本下的待截取视频;帧截取模块3544,用于对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;资源检测模块3545,用于基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。
在一些实施例中,所述像素影响参数包括:引擎层影响参数和逻辑层影响参数;所述确定模块还用于:通过预设引擎对所述目标程序进行程序解析,得到所述目标程序中的引擎层影响参数;通过预设编译器对所述目标程序的业务逻辑进行解析,得到所述目标程序中的逻辑层影响参数。
在一些实施例中,所述引擎层影响参数包括:引擎层随机数;所述参数固定模块还用于:获取所述引擎层随机数的取值区间;基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;将所述固定取值确定为参数固定后的引擎层随机数。
在一些实施例中,所述引擎层影响参数包括:现实时间;所述参数固定模块还用于:获取所述目标程序在每一版本下的待截取视频;确定所述待截取视频中所渲染的每相邻的两个逻辑帧之间的现实时间;基于每相邻的两个逻辑帧之间的现实时间,确定现实时间固定值;将所述现实时间固定值,确定为参数固定后的现实时间。
在一些实施例中,所述逻辑层影响参数包括:逻辑层随机数;所述参数固定模块还用于:获取所述逻辑层随机数的取值区间;基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;将所述固定取值确定为参数固定后的逻辑层随机数。
在一些实施例中,所述逻辑层影响参数包括:运行所述目标程序的终端设备的设备配置参数;所述参数固定模块还用于:从所述终端设备的设备配置参数中获取自动降配参数;对所述自动降配参数进行修正,以关闭所述终端设备的自动降配功能,得到参数固定后的设备配置参数。
在一些实施例中,所述逻辑层影响参数包括:帧缓存参数;所述参数固定模块还用于:获取所述目标程序对应的帧缓存机制和与所述帧缓存机制对应的帧缓存参数;对所述帧缓存参数进行修正,以结束所述帧缓存机制对应的帧缓存功能,得到参数固定后的帧缓存参数。
在一些实施例中,所述逻辑层影响参数包括:异步资源参数;所述参数固定模块还用于:获取所述目标程序对应的异步资源和所述目标程序中的资源对应的多个加载线程;对所述异步资源对应的异步资源参数进行修正,以实现同步加载所述异步资源,对应得到同步加载参数;或者,调用单线程对所述多个加载线程所加载的资源进行同步加载,对应得到同步加载参数;将所述同步加载参数确定为参数固定后的异步资源参数。
在一些实施例中,所述逻辑层影响参数包括:起始帧参数;所述参数固定模块还用于:获取所述目标程序在每一版本下的待截取视频中的起始帧对应的起始帧参数;将多个版本对应的多个起始帧参数中的任一起始帧参数,确定为所述目标程序的起始帧参数;将所述目标程序的起始帧参数,确定为参数固定后的起始帧参数。
在一些实施例中,所述逻辑层影响参数包括:人工智能指令对应的指令参数和场景切换残留参数;所述参数固定模块还用于:获取所述目标程序中的人工智能指令对应的指令参数和场景切换残留参数;删除所述指令参数和所述场景切换残留参数,得到所述参数固定后的像素影响参数。
在一些实施例中,所述帧截取模块还用于:将所述参数固定后的像素影响参数,添加至所述目标程序在每一版本下的程序包中,得到参数修正后的程序包;运行所述参数修正后的程序包,得到所述目标程序在每一版本下的运行数据;基于所述运行数据进行视频帧渲染,得到所述目标程序在至少两个版本下的待截取视频。
在一些实施例中,所述资源检测模块还用于:对所述至少两个截取帧图像进行视频帧对比,得到所述至少两个截取帧图像对应的对比结果;将所述对比结果确定为所述资源检测的检测结果;其中,在每一版本下的目标程序中,针对同一虚拟对象配置有虚拟附加对象,且不同版本下的目标程序中的同一虚拟对象所配置的虚拟附加对象不同;相应地,所述装置还包括:策略生成模块,用于基于所述检测结果,生成对应于所述虚拟附加对象的设计策略,并输出所述设计策略。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或可执行指令,该可执行指令是一种计算机指令;该计算机程序或可执行指令存储在计算机可读存储介质中。当数据处理设备的处理器从计算机可读存储介质读取该可执行指令,处理器执行该可执行指令时,使得该数据处理设备执行本申请实施例上述的方法。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图4示出的方法。
在一些实施例中,存储介质可以是计算机可读存储介质,例如,铁电存储器(FRAM,Ferromagnetic Random Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,Compact Disk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个电子设备上执行,或者在位于一个地点的多个电子设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个电子设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (14)
1.一种数据处理方法,其特征在于,所述方法包括:
确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;所述像素影响参数包括引擎层影响参数和逻辑层影响参数;所述引擎层影响参数包括以下至少之一:引擎层随机数和现实时间;所述逻辑层影响参数包括以下至少之一:逻辑层随机数、运行所述目标程序的终端设备的设备配置参数、帧缓存参数、异步资源参数、起始帧参数、人工智能指令对应的指令参数和场景切换残留参数;所述像素级表现特征是基于每一像素点的像素值所呈现的所述视频帧图像的图像呈现结果;
对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;所述参数固定处理是指将所述像素影响参数确定为一个固定值,并且针对所述目标程序的不同版本,均采用所述固定值作为所述不同版本下的目标程序的像素影响参数,基于所述固定值进行所述目标程序的渲染;
将所述参数固定后的像素影响参数,添加至所述目标程序在每一版本下的程序包中,得到参数修正后的程序包;
运行所述参数修正后的程序包,得到所述目标程序在每一版本下的运行数据;
基于所述运行数据进行视频帧渲染,得到所述目标程序在至少两个版本下的待截取视频;
对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;
基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。
2.根据权利要求1所述的方法,其特征在于,所述确定目标程序的像素影响参数,包括:
通过预设引擎对所述目标程序进行程序解析,得到所述目标程序中的引擎层影响参数;
通过预设编译器对所述目标程序的业务逻辑进行解析,得到所述目标程序中的逻辑层影响参数。
3.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述引擎层随机数的取值区间;
基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;
将所述固定取值确定为参数固定后的引擎层随机数。
4.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述目标程序在每一版本下的待截取视频;
确定所述待截取视频中所渲染的每相邻的两个逻辑帧之间的现实时间;
基于每相邻的两个逻辑帧之间的现实时间,确定现实时间固定值;
将所述现实时间固定值,确定为参数固定后的现实时间。
5.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述逻辑层随机数的取值区间;
基于所述取值区间中的最大取值和最小取值,确定与所述取值区间对应的固定取值;
将所述固定取值确定为参数固定后的逻辑层随机数。
6.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
从所述终端设备的设备配置参数中获取自动降配参数;
对所述自动降配参数进行修正,以关闭所述终端设备的自动降配功能,得到参数固定后的设备配置参数。
7.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述目标程序对应的帧缓存机制和与所述帧缓存机制对应的帧缓存参数;
对所述帧缓存参数进行修正,以结束所述帧缓存机制对应的帧缓存功能,得到参数固定后的帧缓存参数。
8.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述目标程序对应的异步资源和所述目标程序中的资源对应的多个加载线程;
对所述异步资源对应的异步资源参数进行修正,以实现同步加载所述异步资源,对应得到同步加载参数;或者,调用单线程对所述多个加载线程所加载的资源进行同步加载,对应得到同步加载参数;
将所述同步加载参数确定为参数固定后的异步资源参数。
9.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述目标程序在每一版本下的待截取视频中的起始帧对应的起始帧参数;
将多个版本对应的多个起始帧参数中的任一起始帧参数,确定为所述目标程序的起始帧参数;
将所述目标程序的起始帧参数,确定为参数固定后的起始帧参数。
10.根据权利要求2所述的方法,其特征在于,所述对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数,包括:
获取所述目标程序中的人工智能指令对应的指令参数和场景切换残留参数;
删除所述指令参数和所述场景切换残留参数,得到所述参数固定后的像素影响参数。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测,包括:
对所述至少两个截取帧图像进行图像对比,得到所述至少两个截取帧图像对应的对比结果;
将所述对比结果确定为所述资源检测的检测结果;
其中,在每一版本下的目标程序中,针对同一虚拟对象配置有虚拟附加对象,且不同版本下的目标程序中的同一虚拟对象所配置的虚拟附加对象不同;
相应地,所述方法还包括:
基于所述检测结果,生成对应于所述虚拟附加对象的设计策略,并输出所述设计策略。
12.一种数据处理装置,其特征在于,所述装置包括:
确定模块,用于确定目标程序的像素影响参数;所述像素影响参数用于确定所述目标程序所渲染的程序视频中的每一视频帧图像的像素级表现特征;所述像素影响参数包括引擎层影响参数和逻辑层影响参数;所述引擎层影响参数包括以下至少之一:引擎层随机数和现实时间;所述逻辑层影响参数包括以下至少之一:逻辑层随机数、运行所述目标程序的终端设备的设备配置参数、帧缓存参数、异步资源参数、起始帧参数、人工智能指令对应的指令参数和场景切换残留参数;所述像素级表现特征是基于每一像素点的像素值所呈现的所述视频帧图像的图像呈现结果;
参数固定模块,用于对所述像素影响参数进行参数固定处理,得到参数固定后的像素影响参数;所述参数固定处理是指将所述像素影响参数确定为一个固定值,并且针对所述目标程序的不同版本,均采用所述固定值作为所述不同版本下的目标程序的像素影响参数,基于所述固定值进行所述目标程序的渲染;
获取模块,用于将所述参数固定后的像素影响参数,添加至所述目标程序在每一版本下的程序包中,得到参数修正后的程序包;运行所述参数修正后的程序包,得到所述目标程序在每一版本下的运行数据;基于所述运行数据进行视频帧渲染,得到所述目标程序在至少两个版本下的待截取视频;
帧截取模块,用于对所述至少两个版本下的待截取视频分别在相同视频帧位置进行截取,对应得到至少两个截取帧图像;
资源检测模块,用于基于所述至少两个截取帧图像,对所述至少两个版本下的目标程序进行资源检测。
13.一种数据处理设备,其特征在于,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的数据处理方法。
14.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行所述可执行指令时,实现权利要求1至11任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237668.9A CN115329155B (zh) | 2022-10-11 | 2022-10-11 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211237668.9A CN115329155B (zh) | 2022-10-11 | 2022-10-11 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115329155A CN115329155A (zh) | 2022-11-11 |
CN115329155B true CN115329155B (zh) | 2023-01-13 |
Family
ID=83913501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211237668.9A Active CN115329155B (zh) | 2022-10-11 | 2022-10-11 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329155B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111432207A (zh) * | 2020-03-30 | 2020-07-17 | 北京航空航天大学 | 基于显著目标检测和显著性指导的感知高清视频编码方法 |
CN112153374A (zh) * | 2020-09-25 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 视频帧图像的测试方法、装置、设备、计算机存储介质 |
CN113382284A (zh) * | 2020-03-10 | 2021-09-10 | 国家广播电视总局广播电视科学研究院 | 一种盗版视频的分类方法及装置 |
CN114297416A (zh) * | 2021-11-22 | 2022-04-08 | 亿咖通(湖北)技术有限公司 | 数据处理方法、服务器、终端及存储介质 |
CN114490375A (zh) * | 2022-01-24 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 应用程序的性能测试方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10250941B2 (en) * | 2016-12-13 | 2019-04-02 | Nbcuniversal Media, Llc | System and method for mapping affiliated graphs using video fingerprints |
-
2022
- 2022-10-11 CN CN202211237668.9A patent/CN115329155B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113382284A (zh) * | 2020-03-10 | 2021-09-10 | 国家广播电视总局广播电视科学研究院 | 一种盗版视频的分类方法及装置 |
CN111432207A (zh) * | 2020-03-30 | 2020-07-17 | 北京航空航天大学 | 基于显著目标检测和显著性指导的感知高清视频编码方法 |
CN112153374A (zh) * | 2020-09-25 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 视频帧图像的测试方法、装置、设备、计算机存储介质 |
CN114297416A (zh) * | 2021-11-22 | 2022-04-08 | 亿咖通(湖北)技术有限公司 | 数据处理方法、服务器、终端及存储介质 |
CN114490375A (zh) * | 2022-01-24 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 应用程序的性能测试方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115329155A (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1877897B1 (en) | Interactive multimedia applications device | |
US10478720B2 (en) | Dynamic assets for creating game experiences | |
JP2019012526A (ja) | 映像処理方法、コンピュータプログラムおよび記録媒体 | |
CN110609688A (zh) | 着色器的处理方法及处理装置、储存介质和处理器 | |
CN111389014A (zh) | 游戏资源数据监控方法、装置、计算机设备和存储介质 | |
US11951390B2 (en) | Method and system for incremental topological update within a data flow graph in gaming | |
CN112783660B (zh) | 虚拟场景中的资源处理方法、装置及电子设备 | |
US11625234B2 (en) | Videogame patch data compilation system | |
Oehlke | Learning Libgdx Game Development | |
CN115329155B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114191822A (zh) | 一种测试方法、装置、计算机设备、存储介质和产品 | |
US10191722B1 (en) | Event synchronization for development computing system | |
CN116843802A (zh) | 虚拟形象的处理方法及相关产品 | |
CN112717416B (zh) | 虚拟场景中的资源处理方法、装置及电子设备 | |
CN112231220B (zh) | 一种游戏测试方法和装置 | |
Phelps et al. | Fun and Games: Multi-Language Development: Game development can teach us much about the common practice of combining multiple languages in a single project. | |
CN114887325B (zh) | 数据处理方法、显示方法、设备及存储介质 | |
Carter et al. | Homura and Net-Homura: The creation and web-based deployment of cross-platform 3D games | |
Pedersen et al. | OpenGL| D-an alternative approach to multi-user architecture | |
CN115779436B (zh) | 动画切换方法、装置、设备及计算机可读存储介质 | |
Chen et al. | Multi-sim, a dynamic multi-level simulator | |
CN116228942B (zh) | 角色动作提取方法、设备和存储介质 | |
Hogan et al. | Analyzing Performance Issues of Virtual Reality Applications | |
CN117065359A (zh) | 自动获取游戏的配置文件的方法、装置、介质及设备 | |
CN117194268A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40075367 Country of ref document: HK |