CN109343997A - 卡顿检测方法、装置、终端及存储介质 - Google Patents

卡顿检测方法、装置、终端及存储介质 Download PDF

Info

Publication number
CN109343997A
CN109343997A CN201811299521.6A CN201811299521A CN109343997A CN 109343997 A CN109343997 A CN 109343997A CN 201811299521 A CN201811299521 A CN 201811299521A CN 109343997 A CN109343997 A CN 109343997A
Authority
CN
China
Prior art keywords
frame number
buffering
application
destination application
duration
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.)
Pending
Application number
CN201811299521.6A
Other languages
English (en)
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201811299521.6A priority Critical patent/CN109343997A/zh
Publication of CN109343997A publication Critical patent/CN109343997A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

本申请公开了一种卡顿检测方法、装置、终端及存储介质,属于终端技术领域。所述方法包括:获取目标应用程序对应的缓冲队列中的缓冲帧数,获取目标应用程序对应的目标缓冲时长,当缓冲帧数小于指定帧数的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿。本申请实施例通过终端根据缓冲队列中的缓冲帧数及时检测目标应用程序是否存在卡顿,避免了相关技术中终端需要对一段时间段内多个FPS值进行分析导致无法及时且准确地检测卡顿的问题,提高了卡顿检测效果。

Description

卡顿检测方法、装置、终端及存储介质
技术领域
本申请实施例涉及终端技术领域,特别涉及一种卡顿检测方法、装置、终端及存储介质。
背景技术
卡顿通常是指应用程序在运行过程中出现画面不流畅的现象,比如,运行游戏应用时游戏画面不流畅的现象。
目前,在检测应用程序中卡顿的过程中,实时记录终端每秒显示的帧(Fra me PerSecond,FPS)值,若在指定时间段内记录的多个FPS值中存在超过预设阈值的FPS值小于设定FPS值,则确定应用程序存在卡顿。
发明内容
本申请实施例提供了一种卡顿检测方法、装置、终端及存储介质,可以用于解决相关技术中终端需要对一段时间段内多个FPS值进行分析导致无法及时且准确地检测卡顿的问题。技术方案如下:
根据本申请实施例的第一方面,提供了一种卡顿检测方法,所述方法包括:
获取目标应用程序对应的缓冲队列中的缓冲帧数;
获取所述目标应用程序对应的目标缓冲时长,所述目标缓冲时长用于指示对所述目标应用程序的视频帧进行渲染所需要的时长;
当所述缓冲帧数小于指定帧数的持续时长达到所述目标缓冲时长时,确定所述目标应用程序存在卡顿。
根据本申请实施例的第二方面,提供了一种卡顿检测装置,所述装置包括:
第一获取模块,用于获取目标应用程序对应的缓冲队列中的缓冲帧数;
第二获取模块,用于获取所述目标应用程序对应的目标缓冲时长,所述目标缓冲时长用于指示对所述目标应用程序的视频帧进行渲染所需要的时长;
确定模块,用于当所述缓冲帧数小于指定帧数的持续时长达到所述目标缓冲时长时,确定所述目标应用程序存在卡顿。
根据本申请实施例的第三方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请第一方面及其可选实施例任一所述的卡顿检测方法。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请第一方面及其可选实施例任一所述的卡顿检测方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过获取目标应用程序对应的缓冲队列中的缓冲帧数,获取目标应用程序对应的目标缓冲时长,当缓冲帧数小于指定帧数的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿;使得终端能够根据缓冲队列中的缓冲帧数及时检测目标应用程序是否存在卡顿,避免了相关技术中终端需要对一段时间段内多个FPS值进行分析导致无法及时且准确地检测卡顿的问题,提高了卡顿检测效果。
附图说明
图1是本申请一个示例性实施例所提供的终端的结构示意图;
图2是本申请一个示例性实施例提供的卡顿检测方法的流程图;
图3是本申请另一个示例性实施例提供的卡顿检测方法的流程图;
图4是本申请另一个示例性实施例提供的卡顿检测方法的流程图;
图5是本申请一个实施例提供的卡顿检测装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在对本申请实施例进行解释说明之前,先对本申请实施例的应用场景进行说明。图1示出了本申请一个示例性实施例所提供的终端的结构示意图。
该终端100是安装有目标应用程序的电子设备。可选的,目标应用程序是操作系统自带的原生应用程序或者第三方应用程序。
其中,第三方应用程序是除了用户和操作系统之外的第三方制作的应用程序。本申请实施例对此不作限定。
该终端100是具有通讯功能的电子设备。比如,该终端为手机。
可选的,该终端100中包括:处理器120和存储器140。
处理器120可以包括一个或者多个处理核心。处理器120利用各种接口和线路连接整个终端100内的各个部分,通过运行或执行存储在存储器140内的指令、程序、代码集或指令集,以及调用存储在存储器140内的数据,执行终端100的各种功能和处理数据。可选的,处理器120可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器120可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器120中,单独通过一块芯片进行实现。
存储器140可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器140包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器140可用于存储指令、程序、代码、代码集或指令集。存储器140可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
本申请实施例提供了一种卡顿检测方法、装置、终端及存储介质,可以用于解决终端无法及时且准确地检测卡顿的问题。下面,采用示意性的实施例进行说明。
请参考图2,其示出了本申请一个示例性实施例提供的卡顿检测方法的流程图。本实施例以该卡顿检测方法应用于图1所示出的终端中来举例说明。该卡顿检测方法包括:
步骤201,获取目标应用程序对应的缓冲队列中的缓冲帧数。
可选的,目标应用程序是具有播放视频帧功能的应用程序。该目标应用程序可以是视频播放应用程序,也可以是游戏应用程序。比如,该目标应用程序包括虚拟现实应用程序、三维地图程序、军事仿真程序、第三人称射击游戏(Third-Personal Shooting Game,TPS)、第一人称射击游戏(First-person shooting game,FPS)、MOBA游戏、多人枪战类生存游戏中的任意一种。
可选的,缓冲帧数为目标应用程序对应的缓冲队列中待合成显示的视频帧的帧数。
在一种可能的实现方式中,对于目标应用程序中的当前视频帧,终端调用预设的解码线程,对当前视频帧进行解码,并将解码后的视频帧放入预设的缓冲队列中。缓冲队列用于存储待合成显示的多个视频帧。
可选的,终端获取目标应用程序对应的缓冲队列中的缓冲帧数,包括:终端通过图层投递者(英文:Surface Flinger)服务获取缓冲队列中的缓冲帧数。
Surface Flinger服务是安卓操作系统的一个服务,Surface Flinger服务用于负责管理应用端的图层,将多个图层进行合成显示。Surface Flinger服务位于图形库和应用之间的一层。
步骤202,获取目标应用程序对应的目标缓冲时长,目标缓冲时长用于指示对目标应用程序的视频帧进行渲染所需要的时长。
终端中存储有目标应用程序与目标缓冲时长的第一对应关系,终端根据第一对应关系,获取与目标应用程序的应用标识对应的目标缓冲时长。
目标应用程序的应用标识用于唯一标识该目标应用程序。示意性的,目标应用程序的应用标识为目标应用程序的包名(英文:Package Name)。
目标缓冲时长用于指示对目标应用程序的视频帧进行渲染所需要的时长。可选的,目标缓冲时长是根据渲染时长确定的,渲染时长为对目标应用程序的视频帧进行渲染所需要的时长。
示意性的,目标缓冲时长与渲染时长呈正相关关系,即渲染时长越长,则目标缓冲时长越长。
需要说明的是,终端根据渲染时长确定目标缓冲时长的过程可参考下面实施例中的相关描述,在此先不介绍。
步骤203,当缓冲帧数小于指定帧数的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿。
可选的,当终端判断出缓冲帧数小于指定帧数时,终端实时检测缓冲帧数是否仍小于指定帧数,若在目标缓冲时长之后缓冲帧数仍然小于指定帧数,则终端确定目标应用程序存在卡顿。
指定帧数是用户自定义设置的,或者是终端默认设置的。本实施例对此不加以限定。比如,指定帧数为1。
示意性的,当缓冲帧数为0的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿。
在本申请实施例中,卡顿是针对应用程序的用户界面的界面展示效果而言,其表现可以是用户界面切换停滞、缓慢或跳跃、用户界面无法与声音相匹配、用户界面中的内容出现拖影等现象。
综上所述,本实施例通过获取目标应用程序对应的缓冲队列中的缓冲帧数,获取目标应用程序对应的目标缓冲时长,当缓冲帧数小于指定帧数的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿;使得终端能够根据缓冲队列中的缓冲帧数及时检测目标应用程序是否存在卡顿,避免了相关技术中终端需要对一段时间段内多个FPS值进行分析导致无法及时且准确地检测卡顿的问题,提高了卡顿检测效果。
请参考图3,其示出了本申请一个示例性实施例提供的卡顿检测方法的流程图。本实施例以该卡顿检测方法应用于图1所示出的终端中来举例说明。该卡顿检测方法包括:
步骤301,获取前台应用程序的应用标识。
可选的,前台应用程序为处于前台运行状态的应用程序。终端采用主动轮询的方式监控前台运行活动,根据前台运行活动来确定是否产生应用程序运行事件,当产生应用程序运行事件时确定应用程序运行事件对应的应用程序,即此时处于前台运行状态的应用程序。
其中,活动是包含一个或多个用户界面的组件,用于实现与用户之间的交互,每个应用程序可以包括多个活动,每个活动对应一种用户界面。前台运行活动是位于最上层的用户界面相对应的组件。最上层的用户界面是用户在使用终端时在屏幕上看见的用户界面。
以操作系统为安卓操作系统为例,活动是可以层叠的,每当启动一个新的活动,新的活动就会覆盖在原活动之上;使用活动栈存放启动的活动,活动栈是一种后进先出的数据结构,在默认情况下,每启动一个活动,该活动就会在活动栈中入栈,并处于栈顶位置,处于栈顶位置的活动是前台运行活动。当前台运行活动发生变化时,活动栈中处于栈顶位置的活动也会发生变化。
需要说明的是,除了新的活动会位于栈顶,将一个旧的活动切换到前台运行时,该旧的活动也会重新移动到栈顶。
其中,前台应用程序的应用标识用于唯一标识该前台应用程序。示意性的,前台应用程序的应用标识为前台应用程序的包名。
步骤302,当前台应用程序的应用标识属于指定白名单时,将前台应用程序确定为目标应用程序,并获取目标应用程序的当前应用图层。
终端中存储有指定白名单,指定白名单中包括多个应用程序的应用标识。可选的,指定白名单用于指示多个支持在缓冲队列中缓冲数据的应用程序。
终端判断前台应用程序的应用标识是否属于指定白名单,若前台应用程序的应用标识属于指定白名单,则将前台应用程序确定为目标应用程序;若前台应用程序的应用标识不属于指定白名单,结束进程。
可选的,在终端将前台应用程序确定为目标应用程序时,获取目标应用程序的当前应用图层,包括:终端根据前台应用程序的应用标识从预置的配置文件中解析出当前应用图层。
比如,当目标应用程序为游戏应用程序时,目标图层为前景游戏图层。
步骤303,获取缓冲队列中当前应用图层对应的缓冲帧数。
终端中的内存包括多个缓冲队列,终端从多个缓冲队列中确定目标应用程序对应的缓冲队列,获取该缓冲队列中当前应用图层对应的缓冲帧数。
步骤304,获取目标应用程序的目标帧率,目标帧率包括单位时间段内合成待显示画面的帧数。
需要说明的是,目标应用程序通常包括多个图层,比如视频播放应用程序下至少包括用于显示视频内容的视频画面图层、用于显示用户界面控件(暂停按键、播放进度条和快进按键等)或者广告的UI图层和用于显示弹幕内容的弹幕图层。
在终端图层绘制、合成和刷新显示的流程中,存在3种帧率:绘制帧率、合成帧率和刷新率。
其中,绘制帧率为图层绘制完成后,触发图层合成模块合成的帧率,可以理解为单位时间(例如,1秒钟)绘制图层的次数。图层的绘制帧率为该图层单位时间内被触发绘制的次数。示意性的,绘制帧率为单位时间对目标应用程序的视频帧进行渲染的帧率。
合成帧率为把一个应用程序下绘制的至少二个图层的图像合成为一个待显示画面的帧率(当前运行了一个应用程序升温场景),可以理解为单位时间合成待显示画面的帧数。
刷新率为移动终端显示屏显示画面刷新的帧率。一般,显示屏会以60Hz的刷新率刷新。
本实施例中的目标帧率为合成帧率,即目标帧率包括单位时间段内合成待显示画面的帧数。
可选的,终端通过与目标应用程序之间的数据通道获取目标应用程序的目标帧率。
在一种可能的实现方式中,数据通道由目标应用程序程序通过调用内嵌软件开发工具包(Software Development Kit,SDK)与操作系统之间以粘合(英文:Binder)方式建立。
可选的,数据通道由目标应用程序在启动运行时通过调用内嵌SDK与操作系统提供的SDK接口之间以Binder方式建立。
在另一种可能的实现方式中,数据通道是由目标应用程序程序采用套接字(英文:Socket)方式与操作系统之间建立的长连接。
可选的,数据通道是由目标应用程序在启动运行时采用Socket方式与操作系统提供的Socket接口之间建立的长连接。
步骤305,根据目标帧率计算对视频帧进行渲染所需的渲染时长。
可选的,终端根据目标帧率计算对视频帧进行渲染所需的渲染时长,包括:将目标帧率的倒数确定为视频帧的渲染时长。示意性的,目标帧率为50帧/秒,则计算得到渲染时长为1/50秒,即20毫秒。
步骤306,根据渲染时长和第一计算规则确定目标缓冲时长,第一计算规则用于指示渲染时长与目标缓冲时长之间的对应关系。
可选的,终端根据渲染时长和第一计算规则确定目标缓冲时长,包括:将渲染时长与指定比例相乘,得到目标缓冲时长。
指定比例是终端默认设置的,或者是用户自定义设置的。比如,指定比例为1或者110%。
示意性的,渲染时长为20毫秒,指定比例为110%,则终端将渲染时长“20毫秒”与指定比例“110%”相乘,得到目标缓冲时长“22毫秒”。
需要说明的是,步骤301至步骤303与步骤304至步骤306可以并列执行,也可以分先后顺序执行,本实施例对此不加以限定。
步骤307,判断缓冲帧数小于指定帧数。
终端判断缓冲帧数是否小于缓冲帧数,若缓冲帧数小于缓冲帧数则确定缓冲队列处于帧耗尽状态,执行步骤308;若缓冲帧数大于或者等于缓冲帧数则结束进程。
比如,指定帧数为1。即当缓冲帧数为0时确定缓冲队列处于帧耗尽状态。
步骤308,在间隔目标缓冲时长后,检测缓冲队列中的缓冲帧数是否小于指定帧数。
在终端确定出缓冲队列处于帧耗尽状态时,终端在间隔目标缓冲时长后,检测缓冲队列中的缓冲帧数是否小于指定帧数;若缓冲队列中的缓冲帧数仍小于指定帧数,则执行步骤309;若缓冲队列中的缓冲帧数大于或者指定帧数,则表示目标应用程序不存在卡顿,结束进程。
步骤309,若缓冲队列中的缓冲帧数小于指定帧数,则确定目标应用程序存在卡顿。
可选的,若缓冲队列中的缓冲帧数小于指定帧数,则终端确定目标应用程序存在卡顿,包括:若缓冲队列中的缓冲帧数小于指定帧数,则终端确定目标应用程序存在丢帧。当丢帧的间隔达到目标卡顿间隔时,终端确定目标应用程序存在卡顿。
丢帧的间隔为从检测出缓冲队列中的缓冲帧数小于指定帧数到当前时刻的时间间隔。
目标卡顿间隔是用户自定义设置的,或者是终端默认设置的。本实施例对此不加以限定。比如,目标卡顿间隔为60毫秒。
示意性的,在间隔目标缓冲时长“22毫秒”后,终端检测缓冲队列中的缓冲帧数仍为0,确定目标应用程序存在丢帧。当丢帧的间隔达到目标卡顿间隔“60毫秒”时,确定目标应用程序存在卡顿。
在一种可能的实现方式中,终端对目标应用程序中可能会发生卡顿的情况进行预测。终端获取在预设时间间隔内缓冲队列接收视频帧的接收帧率;获取在预设时间间隔内目标应用程序播放视频帧的播放帧率;当播放帧率大于接收帧率且缓冲队列中的缓冲帧数小于预警帧数时,获取性能优化策略,预警帧数大于指定帧数;基于性能优化策略运行目标应用程序。
可选的,接收帧率为缓冲队列在预设时间间隔内接收视频帧的平均帧率。播放帧率为目标应用程序在预设时间间隔内播放视频帧的平均播放帧率。
预设时间间隔和预警阈值可以是终端默认设置的,也可以是用户自定义设置的,本实施例对此不加以限定。
示意性的,当终端判断出播放帧率大于接收帧率,且缓冲队列中的缓冲帧数小于预警帧数,且缓冲队列中的缓冲帧数大于或者等于指定帧数时,确定目标应用程序可能会发生卡顿,获取性能优化策略。
在一种可能的实现方式中,终端获取性能优化策略,包括:终端根据第三对应关系获取播放帧率与接收帧率的差值对应的性能优化策略。第三对应关系包括差值与性能优化策略之间的对应关系,差值为播放帧率与接收帧率的差值,性能优化策略为对目标应用程序在播放视频帧时所需的性能进行优化的策略。
在一个示意性的例子中,终端获取缓冲队列中当前的接收帧率为20帧/秒,目标应用程序的播放帧率30帧/秒,播放帧率“30帧/秒”大于接收帧率“20帧/秒”,且此时缓冲队列中的缓冲帧数为“6帧”,即小于预警帧数“8帧”,则终端根据第三对应关系确定播放帧率与接收帧率的差值“10帧/秒”对应的性能优化策略A,基于性能优化策略A运行该目标应用程序。
综上所述,本申请实施例还通过当终端判断出缓冲帧数小于指定帧数时,在间隔目标缓冲时长后,检测缓冲队列中的缓冲帧数是否仍小于指定帧数,若小于则确定目标应用程序处于卡顿状态;由于当缓冲帧数小于指定帧数时用于指示缓冲队列处于帧耗尽状态,使得终端能够基于对在一段时间段内缓冲帧数的检测快速确定出此时目标应用程序是否存在卡顿,提高了卡顿检测的效率。
本申请实施例还通过终端根据缓冲队列接收视频帧的接收帧率、目标应用程序播放视频帧的播放帧率和缓冲队列中的缓冲帧数确定目标应用程序是否可能会发生卡顿,在播放帧率大于接收帧率且缓冲队列中的缓冲帧数小于预警帧数时,获取性能优化策略,基于性能优化策略运行目标应用程序,使得在终端接收数据的速度变慢时对目标应用程序的性能进行优化,以降低目标应用程序发生卡顿的概率。
在一种可能的实现方式中,步骤309之后还包括如下几个步骤,如图4所示:
步骤401,当终端确定出目标应用程序存在卡顿时,生成卡顿信息,该卡顿信息用于指示目标应用程序的卡顿情况。
卡顿信息包括:开始卡顿的时间戳、结束卡顿的时间戳、卡顿过程的持续时长、卡顿过程中展示的用户界面的截图、卡顿过程中的丢帧率、卡顿过程所处的运行阶段、卡顿过程中终端硬件资源的占用率、卡顿过程中调用的堆栈信息中的至少一种。
开始卡顿的时间戳用于指示目标应用程序开始卡顿的时间点。结束卡顿的时间戳用于指示目标应用程序结束卡顿的时间点。卡顿过程的持续时长是开始卡顿的时间戳与结束卡顿的时间戳之间的时间间隔。
用户界面的截图是指对用户界面进行截取所得到的图像。
丢帧率是指丢失的帧数与总帧数之间的比值。例如,在卡顿过程中丢失的帧数为30帧。总帧数为150帧。则丢帧率为30/150=20%。
运行阶段是指应用程序运行的一个时间段。可选地,应用程序根据运行时长划分多个运行阶段,各个运行阶段所包括的运行时长可以相同,也可以不相同。以目标应用程序为游戏类应用程序为例,运行阶段包括开机加载阶段、团战阶段、个人战阶段和开镜阶段中的至少一种。
终端硬件资源是指终端中的硬件所具备的处理能力。
堆栈信息是目标应用程序在卡顿过程中调用的堆栈的信息。
步骤402,终端获取与该卡顿信息对应的目标优化策略。
终端获取与该卡顿信息对应的目标优化策略,包括但不限于以下两种可能的实现方式。
在一种可能的实现方式中,终端中存储有卡顿信息与优化策略之间的第二对应关系。终端根据第二对应关系将与该卡顿信息对应的优化策略确定为目标优化策略。
可选的,第二对应关系包括终端的类型、目标应用程序的应用标识、卡顿信息和优化策略这四者之间的对应关系。终端在获取到终端的类型、目标应用程序的应用标识、卡顿信息时,根据第二对应关系获取与终端的类型、目标应用程序的应用标识和卡顿信息对应的目标优化策略。
在另一种可能的实现方式中,终端将卡顿信息输入至优化模型输出得到目标优化策略,该优化模型是采用机器学习算法对多个样本卡顿信息进行训练得到的。
机器学习算法包括但不限于逻辑回归(Logistic Regression,LR)算法、反向传播(Back Propagation,BP)算法、决策树算法和支持向量机算法(Support V ector Machine,SVM),本申请实施例对此不作限定。
步骤403,终端基于目标优化策略运行目标应用程序。
终端基于目标优化策略运行目标应用程序,从而使目标应用程序不再继续卡顿。
综上所述,本申请实施例还通过当终端确定出目标应用程序存在卡顿时,生成卡顿信息,获取与该卡顿信息对应的目标优化策略,终端基于目标优化策略运行目标应用程序;使得终端根据该目标优化策略运行上述发生卡顿的目标应用程序,避免目标应用程序发生持续卡顿。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图5,其示出了本申请一个实施例提供的卡顿检测装置的结构示意图。该卡顿检测装置可以通过专用硬件电路,或者,软硬件的结合实现成为图1中的终端的全部或一部分,该卡顿检测装置包括:第一获取模块510、第二获取模块520和确定模块530。
第一获取模块510,用于获取目标应用程序对应的缓冲队列中的缓冲帧数;
第二获取模块520,用于获取目标应用程序对应的目标缓冲时长,目标缓冲时长用于指示对目标应用程序的视频帧进行渲染所需要的时长;
确定模块530,用于当缓冲帧数小于指定帧数的持续时长达到目标缓冲时长时,确定目标应用程序存在卡顿。
可选的,确定模块530,还用于当缓冲帧数小于指定帧数时,确定缓冲队列处于帧耗尽状态;在间隔目标缓冲时长后,检测缓冲队列中的缓冲帧数是否小于指定帧数;若缓冲队列中的缓冲帧数小于指定帧数,则确定目标应用程序处于卡顿状态。
可选的,确定模块530,还用于若缓冲队列中的缓冲帧数小于指定帧数,则确定目标应用程序存在丢帧;当丢帧的间隔达到目标卡顿间隔时,确定目标应用程序处于卡顿状态。
可选的,第一获取模块510,还用于获取前台应用程序的应用标识;当前台应用程序的应用标识属于指定白名单时,将前台应用程序确定为目标应用程序,并获取目标应用程序的当前应用图层;获取缓冲队列中当前应用图层对应的缓冲帧数。
可选的,第二获取模块520,还用于获取目标应用程序的目标帧率,目标帧率包括单位时间段内合成待显示画面的帧数;根据目标帧率计算对视频帧进行渲染所需的渲染时长;根据渲染时长和第一计算规则确定目标缓冲时长,第一计算规则用于指示渲染时长与目标缓冲时长之间的对应关系。
可选的,第二获取模块520,还用于将渲染时长与指定比例相乘,得到目标缓冲时长。
可选的,第二获取模块520,还用于通过与目标应用程序之间的数据通道获取目标应用程序的目标帧率;其中,数据通道由目标应用程序程序通过调用内嵌SDK与操作系统之间以Binder方式建立;或者,数据通道是由目标应用程序程序采用Socket方式与操作系统之间建立的长连接。
可选的,该装置还包括:性能优化模块。该性能优化模块,用于获取在预设时间间隔内缓冲队列接收视频帧的接收帧率;获取在预设时间间隔内目标应用程序播放视频帧的播放帧率;当播放帧率大于接收帧率且缓冲队列中的缓冲帧数小于预警帧数时,获取性能优化策略,预警帧数大于指定帧数;基于性能优化策略运行目标应用程序。
相关细节可结合参考图2至图4所示的方法实施例。其中,第一获取模块510和第二获取模块520还用于实现上述方法实施例中其他任意隐含或公开的与获取步骤相关的功能;确定模块530还用于实现上述方法实施例中其他任意隐含或公开的与确定步骤相关的功能。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请还提供一种计算机可读介质,其上存储有程序指令,程序指令被处理器执行时实现上述各个方法实施例提供的卡顿检测方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例所述的卡顿检测方法。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的卡顿检测方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (11)

1.一种卡顿检测方法,其特征在于,所述方法包括:
获取目标应用程序对应的缓冲队列中的缓冲帧数;
获取所述目标应用程序对应的目标缓冲时长,所述目标缓冲时长用于指示对所述目标应用程序的视频帧进行渲染所需要的时长;
当所述缓冲帧数小于指定帧数的持续时长达到所述目标缓冲时长时,确定所述目标应用程序存在卡顿。
2.根据权利要求1所述的方法,其特征在于,所述当所述缓冲帧数小于指定帧数的持续时长达到所述目标缓冲时长时,确定所述目标应用程序存在卡顿,包括:
当所述缓冲帧数小于所述指定帧数时,确定所述缓冲队列处于帧耗尽状态;
在间隔所述目标缓冲时长后,检测所述缓冲队列中的缓冲帧数是否小于所述指定帧数;
若所述缓冲队列中的缓冲帧数小于所述指定帧数,则确定所述目标应用程序处于所述卡顿状态。
3.根据权利要求2所述的方法,其特征在于,所述若所述缓冲队列中的缓冲帧数小于所述指定帧数,则确定所述目标应用程序处于所述卡顿状态,包括:
若所述缓冲队列中的缓冲帧数小于所述指定帧数,则确定所述目标应用程序存在丢帧;
当所述丢帧的间隔达到目标卡顿间隔时,确定所述目标应用程序处于所述卡顿状态。
4.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序对应的缓冲队列中的缓冲帧数,包括:
获取前台应用程序的应用标识;
当所述前台应用程序的应用标识属于指定白名单时,将所述前台应用程序确定为所述目标应用程序,并获取所述目标应用程序的当前应用图层;
获取所述缓冲队列中所述当前应用图层对应的缓冲帧数。
5.根据权利要求1至4任一所述的方法,其特征在于,所述获取所述目标应用程序对应的目标缓冲时长,包括:
获取所述目标应用程序的目标帧率,所述目标帧率包括单位时间段内合成待显示画面的帧数;
根据所述目标帧率计算对所述视频帧进行渲染所需的渲染时长;
根据所述渲染时长和第一计算规则确定所述目标缓冲时长,所述第一计算规则用于指示所述渲染时长与所述目标缓冲时长之间的对应关系。
6.根据权利要求5所述的方法,其特征在于,所述根据所述渲染时长和第一计算规则确定所述目标缓冲时长,包括:
将所述渲染时长与指定比例相乘,得到所述目标缓冲时长。
7.根据权利要求5所述的方法,其特征在于,所述获取所述目标应用程序的目标帧率,包括:
通过与所述目标应用程序之间的数据通道获取所述目标应用程序的所述目标帧率;
其中,所述数据通道由所述目标应用程序程序通过调用内嵌软件开发工具包SDK与操作系统之间以粘合Binder方式建立;或者,所述数据通道是由所述目标应用程序程序采用套接字Socket方式与操作系统之间建立的长连接。
8.根据权利要求1所述的方法,其特征在于,所述方法,还包括:
获取在预设时间间隔内所述缓冲队列接收所述视频帧的接收帧率;
获取在所述预设时间间隔内所述目标应用程序播放所述视频帧的播放帧率;
当所述播放帧率大于所述接收帧率且所述缓冲队列中的所述缓冲帧数小于预警帧数时,获取性能优化策略,所述预警帧数大于所述指定帧数;
基于所述性能优化策略运行目标应用程序。
9.一种卡顿检测装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标应用程序对应的缓冲队列中的缓冲帧数;
第二获取模块,用于获取所述目标应用程序对应的目标缓冲时长,所述目标缓冲时长用于指示对所述目标应用程序的视频帧进行渲染所需要的时长;
确定模块,用于当所述缓冲帧数小于指定帧数的持续时长达到所述目标缓冲时长时,确定所述目标应用程序存在卡顿。
10.一种终端,其特征在于,所述终端包括处理器、与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至8任一所述的卡顿检测方法。
11.一种计算机可读存储介质,其特征在于,其上存储有程序指令,所述程序指令被处理器执行时实现如权利要求1至8任一所述的卡顿检测方法。
CN201811299521.6A 2018-10-31 2018-10-31 卡顿检测方法、装置、终端及存储介质 Pending CN109343997A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811299521.6A CN109343997A (zh) 2018-10-31 2018-10-31 卡顿检测方法、装置、终端及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811299521.6A CN109343997A (zh) 2018-10-31 2018-10-31 卡顿检测方法、装置、终端及存储介质

Publications (1)

Publication Number Publication Date
CN109343997A true CN109343997A (zh) 2019-02-15

Family

ID=65313742

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811299521.6A Pending CN109343997A (zh) 2018-10-31 2018-10-31 卡顿检测方法、装置、终端及存储介质

Country Status (1)

Country Link
CN (1) CN109343997A (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933960A (zh) * 2019-03-15 2019-06-25 Oppo广东移动通信有限公司 服务调用控制方法、服务调用方法、装置及终端
CN110022493A (zh) * 2019-05-21 2019-07-16 北京字节跳动网络技术有限公司 播放进度显示方法、装置、电子设备和存储介质
CN110266611A (zh) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 缓冲数据的处理方法、装置和系统
CN110781084A (zh) * 2019-10-21 2020-02-11 腾讯科技(深圳)有限公司 卡顿识别参数确定方法和装置、存储介质及电子装置
CN110825466A (zh) * 2019-11-11 2020-02-21 腾讯科技(深圳)有限公司 一种程序卡顿的处理方法以及卡顿处理装置
CN110837420A (zh) * 2019-11-12 2020-02-25 Oppo广东移动通信有限公司 资源调度方法、装置、终端及存储介质
CN111367741A (zh) * 2020-02-28 2020-07-03 Oppo广东移动通信有限公司 用户界面卡顿检测方法与装置、电子设备
CN111726608A (zh) * 2020-06-28 2020-09-29 北京百度网讯科技有限公司 一种视频的卡顿测试方法、装置、电子设备及存储介质
CN111984544A (zh) * 2020-09-08 2020-11-24 网易(杭州)网络有限公司 设备性能测试方法、装置、电子设备及存储介质
CN112073714A (zh) * 2020-09-09 2020-12-11 福建新大陆软件工程有限公司 视频播放质量自动检测方法、装置、设备及可读存储介质
CN112948041A (zh) * 2021-02-26 2021-06-11 联想(北京)有限公司 一种信息处理方法及电子设备
CN113296858A (zh) * 2021-04-14 2021-08-24 惠州市德赛西威汽车电子股份有限公司 一种车机系统画面僵死的检测、恢复方法及存储介质
CN113407138A (zh) * 2021-06-30 2021-09-17 腾讯科技(深圳)有限公司 应用程序的画面处理方法、装置、电子设备及存储介质
CN113747237A (zh) * 2021-08-31 2021-12-03 深信服科技股份有限公司 数据处理方法、装置、电子设备及存储介质
CN113918002A (zh) * 2021-10-27 2022-01-11 杭州逗酷软件科技有限公司 调频方法、装置、存储介质及电子设备
CN114706626A (zh) * 2022-03-31 2022-07-05 联想(北京)有限公司 一种处理方法及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104052991A (zh) * 2014-06-17 2014-09-17 德科仕通信(上海)有限公司 检测has视频卡顿的方法及系统
CN104735485A (zh) * 2015-03-05 2015-06-24 上海小蚁科技有限公司 一种播放视频的方法及装置
WO2015119840A1 (en) * 2014-02-04 2015-08-13 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
CN104995923A (zh) * 2013-12-18 2015-10-21 华为技术有限公司 视频加速方法、客户端及网元
CN105376607A (zh) * 2015-10-29 2016-03-02 深圳云聚汇数码有限公司 一种网络抖动环境下的视频直播方法及装置
CN106068020A (zh) * 2016-05-26 2016-11-02 腾讯科技(深圳)有限公司 异常状态提示方法及装置
CN106851341A (zh) * 2015-12-04 2017-06-13 中国电信股份有限公司 用于测量网络视频传送质量的方法和移动终端
CN107038107A (zh) * 2017-03-09 2017-08-11 武汉斗鱼网络科技有限公司 一种获取应用卡顿信息的方法及装置
CN108647051A (zh) * 2018-03-13 2018-10-12 广东欧珀移动通信有限公司 优化策略获取方法、提供方法、装置及设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104995923A (zh) * 2013-12-18 2015-10-21 华为技术有限公司 视频加速方法、客户端及网元
WO2015119840A1 (en) * 2014-02-04 2015-08-13 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
CN104052991A (zh) * 2014-06-17 2014-09-17 德科仕通信(上海)有限公司 检测has视频卡顿的方法及系统
CN104735485A (zh) * 2015-03-05 2015-06-24 上海小蚁科技有限公司 一种播放视频的方法及装置
CN105376607A (zh) * 2015-10-29 2016-03-02 深圳云聚汇数码有限公司 一种网络抖动环境下的视频直播方法及装置
CN106851341A (zh) * 2015-12-04 2017-06-13 中国电信股份有限公司 用于测量网络视频传送质量的方法和移动终端
CN106068020A (zh) * 2016-05-26 2016-11-02 腾讯科技(深圳)有限公司 异常状态提示方法及装置
CN107038107A (zh) * 2017-03-09 2017-08-11 武汉斗鱼网络科技有限公司 一种获取应用卡顿信息的方法及装置
CN108647051A (zh) * 2018-03-13 2018-10-12 广东欧珀移动通信有限公司 优化策略获取方法、提供方法、装置及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
唐辉: "基于传输层的视频卡顿实时检测", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933960A (zh) * 2019-03-15 2019-06-25 Oppo广东移动通信有限公司 服务调用控制方法、服务调用方法、装置及终端
CN110022493A (zh) * 2019-05-21 2019-07-16 北京字节跳动网络技术有限公司 播放进度显示方法、装置、电子设备和存储介质
CN110266611A (zh) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 缓冲数据的处理方法、装置和系统
CN110266611B (zh) * 2019-07-08 2023-06-23 腾讯科技(上海)有限公司 缓冲数据的处理方法、装置和系统
CN110781084A (zh) * 2019-10-21 2020-02-11 腾讯科技(深圳)有限公司 卡顿识别参数确定方法和装置、存储介质及电子装置
CN110825466A (zh) * 2019-11-11 2020-02-21 腾讯科技(深圳)有限公司 一种程序卡顿的处理方法以及卡顿处理装置
CN110825466B (zh) * 2019-11-11 2021-11-02 腾讯科技(深圳)有限公司 一种程序卡顿的处理方法以及卡顿处理装置
CN110837420A (zh) * 2019-11-12 2020-02-25 Oppo广东移动通信有限公司 资源调度方法、装置、终端及存储介质
CN110837420B (zh) * 2019-11-12 2022-11-15 Oppo广东移动通信有限公司 资源调度方法、装置、终端及存储介质
CN111367741A (zh) * 2020-02-28 2020-07-03 Oppo广东移动通信有限公司 用户界面卡顿检测方法与装置、电子设备
CN111367741B (zh) * 2020-02-28 2022-07-08 Oppo广东移动通信有限公司 用户界面卡顿检测方法与装置、电子设备
CN111726608A (zh) * 2020-06-28 2020-09-29 北京百度网讯科技有限公司 一种视频的卡顿测试方法、装置、电子设备及存储介质
CN111984544B (zh) * 2020-09-08 2024-03-22 网易(杭州)网络有限公司 设备性能测试方法、装置、电子设备及存储介质
CN111984544A (zh) * 2020-09-08 2020-11-24 网易(杭州)网络有限公司 设备性能测试方法、装置、电子设备及存储介质
CN112073714A (zh) * 2020-09-09 2020-12-11 福建新大陆软件工程有限公司 视频播放质量自动检测方法、装置、设备及可读存储介质
CN112948041A (zh) * 2021-02-26 2021-06-11 联想(北京)有限公司 一种信息处理方法及电子设备
CN113296858B (zh) * 2021-04-14 2024-03-19 惠州市德赛西威汽车电子股份有限公司 一种车机系统画面僵死的检测、恢复方法及存储介质
CN113296858A (zh) * 2021-04-14 2021-08-24 惠州市德赛西威汽车电子股份有限公司 一种车机系统画面僵死的检测、恢复方法及存储介质
CN113407138A (zh) * 2021-06-30 2021-09-17 腾讯科技(深圳)有限公司 应用程序的画面处理方法、装置、电子设备及存储介质
CN113747237A (zh) * 2021-08-31 2021-12-03 深信服科技股份有限公司 数据处理方法、装置、电子设备及存储介质
CN113918002A (zh) * 2021-10-27 2022-01-11 杭州逗酷软件科技有限公司 调频方法、装置、存储介质及电子设备
CN114706626A (zh) * 2022-03-31 2022-07-05 联想(北京)有限公司 一种处理方法及电子设备

Similar Documents

Publication Publication Date Title
CN109343997A (zh) 卡顿检测方法、装置、终端及存储介质
CN108763012A (zh) 卡顿信息获取方法、装置及终端
CN109582463B (zh) 资源配置方法、装置、终端及存储介质
CN109641153B (zh) 视频流中的对象建模和替换
CN108924464B (zh) 视频文件的生成方法、装置及存储介质
CN109413480A (zh) 画面处理方法、装置、终端及存储介质
CN110138769B (zh) 一种图像传输的方法以及相关装置
CN110209501A (zh) 图形处理器的频率调整方法、装置、终端及存储介质
WO2020156132A1 (zh) Gpu性能瓶颈的确定方法、装置、终端及存储介质
US8434089B2 (en) Method and system for loading of image resource
WO2021159792A1 (zh) 虚拟物品交互方法、装置、计算机设备及存储介质
CN113254120B (zh) 数据处理方法和相关装置
CN109343902A (zh) 音频处理组件的运行方法、装置、终端及存储介质
CN106412702A (zh) 一种视频片段的截取方法和装置
CN107656671A (zh) 悬浮小窗控制方法及装置、终端装置及计算机可读存储介质
CN109992347B (zh) 界面显示方法、装置、终端及存储介质
CN109474850A (zh) 运动像素视频特效添加方法、装置、终端设备及存储介质
TW202139064A (zh) 互動物件的驅動方法、裝置、設備以及存儲介質
CN107221341A (zh) 一种语音测试方法及装置
CN109391734A (zh) 数据发送方法、装置、终端及存储介质
CN111338769B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN109782906A (zh) 一种广告机的手势识别方法、交互方法、装置和电子设备
CN115097994B (zh) 数据处理方法和相关装置
CN109146540A (zh) 广告可见曝光的监测方法、移动设备及服务器
CN107670276B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190215

RJ01 Rejection of invention patent application after publication