一种帧动画的播放控制方法、装置和移动设备与流程

文档序号:15685530发布日期:2018-10-16 21:01阅读:199来源:国知局
本发明涉及图像播放
技术领域
:,特别是涉及一种帧动画的播放控制方法、装置和移动设备。
背景技术
::为了吸引用户并为用户创造良好的使用体验,移动设备上的应用程序一般会在启动时以动画方式播放启动画面,或者在启动时或启动后播放相应内容的动画。然而,由于移动设备的多样性和碎片性,在动画播放过程中或多或少存在一些问题,特别是在资源文件较大时,会造成播放的卡顿,从而使播放效果较差,降低了用户的使用体验。技术实现要素:有鉴于此,本发明提供了一种帧动画的播放控制方法、装置和移动设备,以解决目前移动设备在播放帧动画时卡顿的问题,以提高播放效果。为了解决上述问题,本发明公开了一种帧动画的播放控制方法,应用于移动设备,所述播放控制方法包括步骤:根据预设步骤对帧动画进行播放;在播放过程中,对播放的帧率进行检测;当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。可选的,所述对所述帧动画的资源文件进行资源处理,包括:将所述帧动画的图片保持原比例压缩至所述移动设备的显示屏的尺寸,并将所述图片的格式变为png格式。可选的,所述对所述帧动画的资源文件进行资源处理,还包括:如果所述帧率依然低于所述预设帧率下限,则依次降低所述图片的清晰度和/或所述图片的尺寸,直到所述帧率不低于所述预设帧率下限。可选的,所述对所述帧动画的资源文件进行资源处理,包括:维护一个全局的历史记录,所述历史记录用于记载所述资源文件的处理过程。可选的,所述移动设备为安卓设备,所述播放控制方法还包括步骤:对所述安卓设备的build.version.sdk_int和可用cpu数进行检测;当所述build.version.sdk_int小于23时,对所述帧动画的资源文件进行资源处理。可选的,所述根据预设步骤对帧动画进行播放,包括:利用第一线程依次读取所述帧动画的图片;利用第二线程依次对所述图片进行渲染;对经过渲染的图片进行加载并播放。可选的,所述第一线程和第二线程为同一线程。相应的,为了保证上述方法的执行,本发明还提供了一种帧动画的播放控制装置,应用于移动设备,所述播放控制装置包括:播放执行模块,用于根据预设步骤对帧动画进行播放;帧率检测模块,用于在播放过程中,对播放的帧率进行检测;资源处理模块,用于当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。可选的,所述资源处理模块具体用于将所述帧动画的图片保持原比例压缩至所述移动设备的显示屏的尺寸,并将所述图片的格式变为png格式。可选的,所述资源处理模块还具体用于在所述帧率依然低于所述预设帧率下限时,则依次降低所述图片的清晰度和/或所述图片的尺寸,直到所述帧率不低于所述预设帧率下限。可选的,所述资源处理模块还用于维护一个全局的历史记录,所述历史记录用于记载所述资源文件的处理过程。可选的,所述移动设备为安卓设备,所述播放控制装置还包括优化控制模块,所述优化控制模块具体用于对所述安卓设备的build.version.sdk_int和可用cpu数进行检测;当所述build.version.sdk_int小于23时,对所述帧动画的资源文件进行资源处理。可选的,所述播放执行模块具体用于利用第一线程依次读取所述帧动画的图片;利用第二线程依次对所述图片进行渲染;对经过渲染的图片进行加载并播放。可选的,所述第一线程和第二线程为同一线程。另外,本发明还提供了一种移动设备,该移动设备设置有如上所述的播放控制装置。从上述技术方案可以看出,本发明提供了一种帧动画的播放控制方法、装置和移动设备,该方法和装置应用于移动设备,具体为根据预设步骤对帧动画进行播放;在播放过程中,对播放的帧率进行检测;当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。通过降低帧动画的画面尺寸或者清晰度,或者同时降低画面尺寸和清晰度,可以使移动设备的处理压力得到减轻,从而使帧率回复到正常水平,进而能够解决在播放帧动画时卡顿的问题,提高了播放效果。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种帧动画的播放控制方法的步骤流程图;图2为本发明实施例提供的一种帧动画的播放控制装置的结构框图;图3为本发明实施例提供的另一种帧动画的播放控制装置的结构框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一图1为本发明实施例提供的一种帧动画的播放控制方法的步骤流程图。参照图1所示,本实施例提供的帧动画的播放控制方法应用于智能手机、平板电脑等移动设备,该方法具体包括如下步骤:s101:依据预设步骤对帧动画进行播放。具体的步骤包括将帧动画的资源文件进行读取、加载,然后进行渲染播放,以使用户观赏到应用程序开机时或开机后的动画,以提高用户的使用体验。帧动画在播放过程中是移动设备的显示屏幕按时间顺序依次显示连续的图片实现的,每显示一张图片为一帧,单位时间内所显示的图片数量为帧率。帧率反映了动画播放的流程程度。s102:在播放过程中对帧率进行检测。为使帧动画播放起来流畅,其播放时的帧率不能低于一定的下限值,这个下限值是相应帧动画进行流畅显示所需要的帧数的一定比例,例如可以选择帧动画所要求帧率的80%。为了保证帧率,这里首先对帧动画的帧率进行检测,即检测在单位时间内所播放图片的数量。具体检测可以是依次检测两帧之间的时间间隔,然后将将多次见到的时间间隔进行平均,将得到的平均间隔进行倒数处理即可得到帧率,该帧率用x帧/s表示,这里的x为正整数。s103:在帧率较低时对帧动画的资源文件进行资源处理。如果帧率低于上述下限值,则无法保证帧动画的流畅播放,这里将该下限值称为预设帧率下限值。为了保证帧动画的流畅播放,在帧率低于预设帧率下限时,对帧动画的资源文件进行资源处理,通过降低资源文件的画面尺寸或者清晰度的方法降低移动设备的处理压力,已达到提高帧率的效果;或者可以同时降低画面尺寸和清晰度的办法降低移动设备的处理压力。具体的资源处理的方法步骤如下所述:资源处理是指将帧动画的资源文件处理成可以被更快速加载的资源的过程。处理的维度可以是图片文件的大小、编码格式、清晰度等。本方案对资源处理的维度有一个先后顺序。每次按一个维度处理后,如果在播放时依然出现帧率不符合要求的情况,则继续使用后一个维度对资源进行处理。这个顺序因具体情况可以进行一些调整,推荐的做法是:(1)将图片保持原比例压缩到屏幕大小,格式变为.png;(2)如果还需要进一步处理,则将图片清晰度降低到70%;(3)如果还需要进一步处理,则将图片长宽变为二分之一;(4)如果还需要进一步处理,则将图片清晰度再降低到70%;(5)如果还需要进一步处理,则将图片长宽再变为二分之一;(6)如果还需要进一步处理,则将图片清晰度再降低到70%;(7)以此类推。为此,移动设备的处理器必须在设备内部维护一个历史记录,用来记录当前资源处理的历史过程,并在需要进一步处理的时候能够根据该历史过程确定下一步应该采取的处理措施,例如上一步降低了清晰度,根据记载的历史过程则可以知道应该采取图片的长宽。这个历史记录是操作系统全局的,即使在app被杀死或者系统重启后依然存在。png(portablenetworkgraphics,便携式网络图形)是一种无损压缩的位图片形格式,其设计目的是试图替代gif和tiff文件格式,同时增加一些gif文件格式所不具备的特性。png的名称来源于“可移植网络图形格式(portablenetworkgraphicformat,png)”,也有一个非官方解释“png'snotgif”。png使用从lz77派生的无损数据压缩算法,一般应用于java程序、网页或s60程序中,原因是它压缩比高,生成文件体积小。上述做法中,也可以仅降低清晰度,即仅执行步骤(1)、(2)、(4)、(6);还可以仅降低尺寸,如仅执行步骤(1)、(3)、(5)。除了记录资源文件的处理历史外,还需要记录其他的东西。同一个app内可能同时播放同一个帧动画,那么两个播放动画的线程可能同时对资源文件进行处理。为了避免资源文件处理中出现的并发冲突,必须使用一个管理器进行管理。这个管理器在进程内是个单例(singleton),内部维护一个资源处理的状态列表,记录某个资源是否在被处理。如果线程a请求管理器处理资源r,那么管理器在内部记录r的状态,标记为“正在被处理”;当线程b请求管理器处理r时,管理器先查看r是否在被处理,如果是,则阻塞,当r被处理完成后,直接恢复b的运行并且通知b资源已经处理好。下面介绍具体资源文件的处理流程。资源文件通常在一个文件夹下,必须对文件夹内的每个资源进行处理。处理资源时,可能出现进程可能被杀死等情况,这样就会导致文件夹内部分文件尚未被处理。为了避免这种情况的发生,必须维护处理进度,这样可以在下次处理的时候继续上次的处理。具体做法如下:(1)假设待处理的资源文件位于文件夹a,名字为s,那么将此文件夹重命名成s.backup。(2)在同一个目录下新建文件夹b,命名为s。(3)在b中新建文件progress.tmp,里面记录当前的处理进度。(4)取出a中的第一个文件f。(5)处理f,将处理过的文件保存在b的对应位置。(6)将progress.tmp重命名为progress.tmp.backup。(7)读取progress.tmp.backup的内容,更新进度。(8)新建文件progress.tmp,将进度写入。(9)删除progress.tmp.backup。(10)读取a中的下一个文件f,如果不存在,转(11);如果存在,转(5)。(11)删除文件夹a。(12)将此资源的处理历史记录在操作系统内。(13)删除progress.tmp。通过上述方式,假设处理过程被中断,下次进入的时候,我们能够很容易地恢复。要检测文件夹a的处理进度,可以按下面的方法恢复并且完成资源处理:(1)如果不存在备份文件夹,那么我们只需要检测文件夹a。如果a中存在progress.tmp不存在progress.tmp.backup,说明处理历史可能没有被记录在操作系统内,那么就从(12)开始执行。(2)如果存在备份文件夹,存在progress.tmp,且不存在progress.tmp.backup,那么根据progress.tmp获取已经被处理的文件,从(10)开始执行。(3)如果存在备份文件夹,存在progress.tmp,且存在progress.tmp.backup,那么从(9)开始执行。(4)如果存在备份文件夹,不存在progress.tmp,且存在progress.tmp.backup,那么从(7)开始执行。(5)如果存在备份文件夹,不存在progress.tmp,且不存在progress.tmp.backup,那么从(2)开始执行。从上述技术方案可以看出,本发明提供了一种帧动画的播放控制方法,该方法应用于移动设备,具体为根据预设步骤对帧动画进行播放;在播放过程中,对播放的帧率进行检测;当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。通过降低帧动画的画面尺寸或者清晰度,或者同时降低画面尺寸和清晰度,可以使移动设备的处理压力得到减轻,从而使帧率回复到正常水平,进而能够解决在播放帧动画时卡顿的问题,提高了播放效果。帧动画中的资源文件的数据结果为一个数组,每个数组元素是一个结构体,对应一个资源,其中包含一个时间戳、一个标记“是否正在加载此资源”的布尔值,一个存储纹理id的数据字段。数组长度根据方案实现时的实际情况决定。对于内存限制比较严格的场景,可以取可用cpu数作为长度;对于内存无限制的场景,可以取剩下可用内存的三分之一除以可能读到的最大图片的大小的商。当本发明中的移动设备选用安卓设备时,如果build.version.sdk_int大于等于23,不执行上述的资源处理;如果build.version.sdk_int大于等于21且可用cpu数大于等于8,同样不执行上面的资源处理;其他情况则执行上面的资源处理。另外,本申请中根据预设步骤播放帧动画时,根据生成纹理的线程的不同,资源加载与渲染的方案分为两种:一种是在资源加载的线程内生成相应的纹理,渲染线程直接使用此纹理进行渲染;另一种是资源加载的线程只负责资源文件的加载,渲染线程获取到载入的资源后生成相应的纹理并进行渲染。现将两种方案分别进行介绍:一、对于利用同一个线程进行加载和渲染的方案来说,具体的播放过程如下所述:首选,读取图片,读取图片的过程发生在后台线程池中,线程池中的线程数目推荐使用可用cpu数,最多不能超过可用cpu数乘2。通过多种设备的实验,原则上线程池中的线程数尽可能保持与存储资源的数组长度一致,这样可以做到资源显示、销毁与载入的平衡。读取图片时先读取原始图片长和宽,再根据我们需要的长和宽计算采样率,之后根据这个采样率进行文件读取。这样即可以有效加快读取速度,也可以减少内存的消耗。同时,图片使用完,图片所占的内存将立刻被回收以供下次读图时复用,下次读图时即可直接使用此内存区域存储图片,这样可以避免内存的抖动和毛刺。由于本方案在各个读取图片的线程中生成纹理,所以加载图片后必须立马生成纹理并将图片所占用的内存区域回收,以供之后读取图片的时候复用。因为移动设备一般采用openglapi进行渲染,所以我们也使用openglapi生成纹理。由于openglapi要求每个加载纹理的线程都需要拥有egl上下文,同时各个线程是独立的,如果需要相互可以访问对方的纹理,必须共享上下文的记录才可以做到纹理的共享,所以在各个加载图片的线程加载图片之前,必须基于渲染线程中的egl上文生成对应的egl下文,以达到纹理在多线程中的共享。如果渲染线程的egl上下文还没有准备好,那所有的过程必须等待。预加载的资源帧数等于存储数据的数组长度。预加载的时候,数组的每个元素对应一个序列帧,先给每个元素的时间戳赋上当前时间戳t,将加载标志置为“正在加载”,然后在后台读取这个序列帧对应的图片资源,随后生成相应的纹理,之后比较数组对应的那个元素的当前时间戳是否等于t,如果相等,则将纹理id赋给那个元素的数据字段,将加载标志置为“未加载”;如果不相等,则仅将加载标志置为“不加载”。等待数组的每个元素都加载上资源后,开始播放帧动画。设当前在播放的序列帧在数组中的序号是pos。那么播放动画的流程为:(1)pos置为0。(2)检测数组第pos个元素的加载标志位是否为“未加载”,如果否,则一直等待,直至“未加载”。(3)读取第pos个元素的数据字段,将它传递给渲染线程,让渲染线程显示,同时渲染线程销毁上一帧的纹理。(4)在后台线程池读取下一个序列帧,存储在第pos个元素中,此步骤立马返回,并不会等到加载完成之后再返回。(5)pos加1。为了防止数组越界,此时检查pos是否为数组长度,如果是,则置为0。(6)如果动画已播放完,结束;如果否,转至(2)。当不再需要播放帧动画的时候,必须销毁底层gpu等资源。大部分资源的销毁和opengl库的销毁相近,但在销毁egl上下文时需要特别关注。由于涉及到多个线程共享渲染线程的egl上下文,所以必须等待其他线程的egl上下文销毁后,再进行渲染线程的egl上下文销毁。这样才不会出现显示异常。二、对于利用两个线程进行加载和渲染的方案来说,具体的播放过程如下所述:在此方案中,资源加载的线程只负责资源文件的加载,渲染线程获取到载入的资源后生成相应的纹理并进行渲染。读取图片的方法也和上一方案相同,此处不再赘述。读取图片后也不是立马生成纹理,而是等待播放该帧的时候,传递给渲染线程生成纹理。因此此方案不涉及egl上下文的共享。预加载资源的方法也和上一方案类似,只是读取到相应的图片资源后,直接将位图存放在数组中,而不需要生成纹理。等待数组的每个元素都加载上资源后,开始播放帧动画。设当前在播放的序列帧在数组中的序号是pos。那么播放动画的流程为:(1)pos置为0。(2)检测数组第pos个元素的加载标志是否为“未加载”,如果否,则一直等待,直至“未加载”。(3)读取第pos个元素的数据字段中的位图,将它传递给渲染线程,让渲染线程生成纹理并显示,同时渲染线程将位图占用的内存回收,同时销毁上一个纹理。(4)在后台读取下一个序列帧的位图,存储在第pos个元素中,此步骤立马返回,并不会等到加载完成之后再返回。(5)pos加1。为了防止数组越界,此时检查pos是否为数组长度,如果是,则置为0。(6)如果动画已播放完,结束;如果否,转至(2)。此方案由于不涉及egl上下文共享,因此销毁过程和普通opengl的销毁相同。对于一和二两种方案来说,方案一因为涉及到egl上下文的共享以及由此产生的并发问题,实现难度较大;方案二由于不存在egl上下文共享,因此实现难度相对较易。另外,方案一使用多线程加载纹理,加载速度很快,在播放复杂图片的时候,效果很好;方案二使用渲染线程加载纹理,对于特别复杂的图片,在首次播放时帧率可能达不到要求,需要进行后续的资源处理方可达到要求。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。实施例二图2为本发明实施例提供的一种帧动画的播放控制装置的结构框图。参照图2所示,本实施例提供的帧动画的播放控制装置应用于智能手机、平板电脑等移动设备,该装置具体包括播放执行模块10、帧率检测模块20和资源处理模块30。播放执行模块用于依据预设步骤对帧动画进行播放。具体的步骤包括将帧动画的资源文件进行读取、加载,然后进行渲染播放,以使用户观赏到应用程序开机时或开机后的动画,以提高用户的使用体验。帧动画在播放过程中是移动设备的显示屏幕按时间顺序依次显示连续的图片实现的,每显示一张图片为一帧,单位时间内所显示的图片数量为帧率。帧率反映了动画播放的流程程度。帧率检测模块用于在播放过程中对帧率进行检测。为使帧动画播放起来流程,其播放时的帧率不能低于一定的下限值,这个下限值是相应帧动画进行流畅显示所需要的帧数的一定比例,例如可以选择帧动画所要求帧率的80%。为了保证帧率,这里首先对帧动画的帧率进行检测,即检测在单位时间内所播放图片的数量。具体检测可以是依次检测两帧之间的时间间隔,然后将将多次见到的时间间隔进行平均,将得到的平均间隔进行倒数处理即可得到帧率,该帧率用x帧/s表示,这里的x为正整数。资源处理模块用于在帧率较低时对资源文件进行资源处理。如果帧率低于上述下限值,则无法保证帧动画的流畅播放,这里将该下限值称为预设帧率下限。为了保证帧动画的流畅播放,在帧率低于预设帧率下限时,对帧动画的资源文件进行资源处理,通过降低资源文件的画面尺寸或者清晰度的方法降低移动设备的处理压力,已达到提高帧率的效果;或者可以同时降低画面尺寸和清晰度的办法降低移动设备的处理压力。该资源处理模块的具体处理的方法步骤如下所述:资源处理是指将帧动画的资源文件处理成可以被更快速加载的资源的过程。处理的维度可以是图片文件的大小、编码格式、清晰度等。本方案对资源处理的维度有一个先后顺序。每次按一个维度处理后,如果在播放时依然出现帧率不符合要求的情况,则继续使用后一个维度对资源进行处理。这个顺序因具体情况可以进行一些调整,推荐的做法是:(1)将图片保持原比例压缩到屏幕大小,格式变为.png;(2)如果还需要进一步处理,则将图片清晰度降低到70%;(3)如果还需要进一步处理,则将图片长宽变为二分之一;(4)如果还需要进一步处理,则将图片清晰度再降低到70%;(5)如果还需要进一步处理,则将图片长宽再变为二分之一;(6)如果还需要进一步处理,则将图片清晰度再降低到70%;(7)以此类推。为此,移动设备的处理器必须在设备内部维护一个历史记录,用来记录当前资源处理的历史过程,并在需要进一步处理的时候能够根据该历史过程确定下一步应该采取的处理措施,例如上一步降低了清晰度,根据记载的历史过程则可以知道应该采取图片的长宽。这个历史记录是操作系统全局的,即使在app被杀死或者系统重启后依然存在。除了记录资源文件的处理历史外,还需要记录其他的东西。同一个app内可能同时播放同一个帧动画,那么两个播放动画的线程可能同时对资源文件进行处理。为了避免资源文件处理中出现的并发冲突,必须使用一个管理器进行管理。这个管理器在进程内是个单例(singleton),内部维护一个资源处理的状态列表,记录某个资源是否在被处理。如果线程a请求管理器处理资源r,那么管理器在内部记录r的状态,标记为“正在被处理”;当线程b请求管理器处理r时,管理器先查看r是否在被处理,如果是,则阻塞,当r被处理完成后,直接恢复b的运行并且通知b资源已经处理好。下面介绍具体资源文件的处理流程。资源文件通常在一个文件夹下,必须对文件夹内的每个资源进行处理。处理资源时,可能出现进程可能被杀死等情况,这样就会导致文件夹内部分文件尚未被处理。为了避免这种情况的发生,必须维护处理进度,这样可以在下次处理的时候继续上次的处理。具体做法如下:(1)假设待处理的资源文件位于文件夹a,名字为s,那么将此文件夹重命名成s.backup。(2)在同一个目录下新建文件夹b,命名为s。(3)在b中新建文件progress.tmp,里面记录当前的处理进度。(4)取出a中的第一个文件f。(5)处理f,将处理过的文件保存在b的对应位置。(6)将progress.tmp重命名为progress.tmp.backup。(7)读取progress.tmp.backup的内容,更新进度。(8)新建文件progress.tmp,将进度写入。(9)删除progress.tmp.backup。(10)读取a中的下一个文件f,如果不存在,转(11);如果存在,转(5)。(11)删除文件夹a。(12)将此资源的处理历史记录在操作系统内。(13)删除progress.tmp。通过上述方式,假设处理过程被中断,下次进入的时候,我们能够很容易地恢复。要检测文件夹a的处理进度,可以按下面的方法恢复并且完成资源处理:(1)如果不存在备份文件夹,那么我们只需要检测文件夹a。如果a中存在progress.tmp不存在progress.tmp.backup,说明处理历史可能没有被记录在操作系统内,那么就从(12)开始执行。(2)如果存在备份文件夹,存在progress.tmp,且不存在progress.tmp.backup,那么根据progress.tmp获取已经被处理的文件,从(10)开始执行。(3)如果存在备份文件夹,存在progress.tmp,且存在progress.tmp.backup,那么从(9)开始执行。(4)如果存在备份文件夹,不存在progress.tmp,且存在progress.tmp.backup,那么从(7)开始执行。(5)如果存在备份文件夹,不存在progress.tmp,且不存在progress.tmp.backup,那么从(2)开始执行。从上述技术方案可以看出,本发明提供了一种帧动画的播放控制装置,该装置应用于移动设备,具体为根据预设步骤对帧动画进行播放;在播放过程中,对播放的帧率进行检测;当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。通过降低帧动画的画面尺寸或者清晰度,或者同时降低画面尺寸和清晰度,可以使移动设备的处理压力得到减轻,从而使帧率回复到正常水平,进而能够解决在播放帧动画时卡顿的问题,提高了播放效果。帧动画中的资源文件的数据结果为一个数组每个数组元素是一个结构体,对应一个资源,其中包含一个时间戳、一个标记“是否正在加载此资源”的布尔值,一个存储纹理id的数据字段。数组长度根据方案实现时的实际情况决定。对于内存限制比较严格的场景,可以取可用cpu数作为长度;对于内存无限制的场景,可以取剩下可用内存的三分之一除以可能读到的最大图片的大小的商。当本发明中的移动设备选用安卓设备时,该播放控制装置还包括一个优化控制模块(未示出),该模块在build.version.sdk_int大于等于23时,不执行上述的资源处理,在build.version.sdk_int大于等于21且可用cpu数大于等于8时,同样不执行上面的资源处理,其他情况则执行上面的资源处理。另外,本申请中根据预设步骤播放帧动画时,播放执行模块根据生成纹理的线程的不同,在执行资源加载与渲染时候采用不同的方案执行,方案分为两种:一种是在资源加载的线程内生成相应的纹理,渲染线程直接使用此纹理进行渲染;另一种是资源加载的线程只负责资源文件的加载,渲染线程获取到载入的资源后生成相应的纹理并进行渲染。具体的方案参照上一实施例的介绍,这里不再赘述。实施例三本实施例提供了一种移动设备,该移动设备设置有如上面实施例所提供的播放控制方法,该方法具体用于根据预设步骤对帧动画进行播放;在播放过程中,对播放的帧率进行检测;当所述帧率低于预设帧率下限时,对所述帧动画的资源文件进行资源处理,以便降低所述帧动画的画面尺寸和/或清晰度。通过降低帧动画的画面尺寸或者清晰度,或者同时降低画面尺寸和清晰度,可以使移动设备的处理压力得到减轻,从而使帧率回复到正常水平,进而能够解决在播放帧动画时卡顿的问题,提高了播放效果。另外,参照图3所示,本实施例的播放控制装置还可以包括资源加载器、资源获取器、渲染器和位图会收器。其中,资源获取器是关键节点,它将已经播放的资源对应的位图传递给位图回收器,让回收器销毁位图,并且将内存空间回收,供下次加载位图时使用;同时将资源生成的纹理传递给渲染器,让渲染器渲染相应的帧,达到动画播放的目的。在播放的过程中,为了获取后续的帧,资源获取器通知资源加载器加载相应的资源,资源加载器从位图回收器中获取内存空间用于加载位图,然后加载资源并将资源传递给资源获取器。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本发明所提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1