CN114071225B - 一种帧动画播放方法、装置和系统 - Google Patents
一种帧动画播放方法、装置和系统 Download PDFInfo
- Publication number
- CN114071225B CN114071225B CN202010789181.6A CN202010789181A CN114071225B CN 114071225 B CN114071225 B CN 114071225B CN 202010789181 A CN202010789181 A CN 202010789181A CN 114071225 B CN114071225 B CN 114071225B
- Authority
- CN
- China
- Prior art keywords
- animation
- frame
- memory
- main process
- offset
- 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
- 238000000034 method Methods 0.000 title claims abstract description 208
- 230000008569 process Effects 0.000 claims abstract description 130
- 238000002360 preparation method Methods 0.000 claims abstract description 52
- 238000013507 mapping Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/44004—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/70—Information retrieval; Database structures therefor; File system structures therefor of video data
- G06F16/74—Browsing; Visualisation therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/4424—Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种帧动画播放方法、装置和系统,其中播放方法包括:针对待播放的目标帧动画,主进程向资源子进程发送该目标帧动画的动画播放命令,动画播放命令包括目标帧动画的文件存储路径,主进程与资源子进程映射到同一虚拟内存;接收资源子进程发送的动画准备通知,动画准备通知包括初始内存偏移量,初始内存偏移量为资源子进程从文件存储路径中加载第一帧图像帧进虚拟内存后,记录的该第一帧图像帧在虚拟内存的内存偏移量;根据初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;根据内存偏移量从虚拟内存中读取对应的图像帧进行播放。本申请可以提高了图像帧的缓存命中率,减少主进程的工作量和内存使用率,以及可实现任意帧读取。
Description
技术领域
本申请实施例涉及多媒体技术,尤其涉及一种帧动画播放方法、装置和系统。
背景技术
序列帧动画,即设计师提前将动画输出成未连续的图像序列,应用程序按顺序加载、解码、显示图像即可渲染出既定动画。序列帧动画可以说是最原始的一种动画载体,但由于其兼容性高,动画复杂度不受限制,因此有大量的使用场景,例如场景动画,背景特效等等。
在相关技术中,应用程序为了保证动画的流畅性,一般都会选择提前加载多张动画帧到内存中,这就导致了应用程序内存短时间内暴涨,OOM(Out of Memory,内存不足,当应用程序使用内存过高,将会被系统强制关闭,是一种致命错误)或者bad_alloc(当应用程序一次性申请较大量的内存,如果系统没有足够的连续内存空间,系统会触发异常,强制关闭应用程序,此致命错误一般发生在PC端)时有发生,且用户设备越低端、动画分辨率越高,发生率越高。而且此种方式缓存的动画帧是针对顺序读取帧动画,一旦动画重置需要从头播放或者多个播放目标播放不同的帧位置,缓存将全部失效,需要重新加载。
发明内容
本申请提供一种帧动画播放方法、装置和系统,以解决提前加载多张动画帧到内存中,导致应用程序内存短时间内暴涨的问题。
第一方面,本申请实施例提供了一种帧动画播放方法,所述方法包括:
针对待播放的目标帧动画,主进程向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存;
接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量;
根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;
根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
第二方面,本申请实施例还提供了一种帧动画播放方法,所述方法包括:
资源子进程接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存;
从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;
根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
第三方面,本申请实施例还提供了一种帧动画播放系统,所述系统包括应用程序,所述应用程序包括主进程以及资源子进程,所述主进程与所述资源子进程映射到同一虚拟内存;
所述主进程用于,针对待播放的目标帧动画,向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,
所述资源子进程用于,从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程;
所述主进程还用于,根据所述初始内存偏移量确定各图像帧在虚拟内存的内存偏移量,并根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
第四方面,本申请实施例还提供了一种帧动画播放装置,所述帧动画播放装置应用于主进程中,所述装置包括:
动画播放命令发送模块,用于针对待播放的目标帧动画,向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存;
动画准备通知接收模块,用于接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量;
内存偏移量确定模块,用于根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;
图像帧读取模块,用于根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
第五方面,本申请实施例还提供了一种帧动画播放装置,所述帧动画播放装置应用于资源子进程中,所述装置包括:
动画播放命令接收模块,用于接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存;
图像帧加载模块,用于从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;
动画通知模块,用于根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
第六方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述的方法。
第七方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的方法。
本申请所提供的技术方案,具有如下有益效果:
在本实施例中,主进程和资源子进程共用虚拟内存,由资源进程加载帧动画的所有图像帧进虚拟内存,并将帧动画的动画分辨率以及初始内存偏移量通知主进程。然后主进程可以根据动画分辨率以及初始内存偏移量计算其他图像帧在虚拟内存的内存偏移量,并根据计算出的内存偏移量从虚拟内存中读取对应的图像帧进行播放,通过上述的将多进程与虚拟内存结合的处理方式进行帧动画播放,有如下有益效果:
一方面,主进程可以根据第一帧图像帧的内存偏移量计算任意图像帧的内存偏移量,从而可以读取任意帧进行播放,在播放帧动画时不仅可以顺序播放,还可以做到随机帧播放。
另一方面,帧动画中的图像帧的加载由资源进程完成,图像帧加载到虚拟内存中,由于虚拟内存的高度复用,确保在长期的播放过程中,帧动画中的所有图像帧只需要被加载、解码一次,后续如果需要用到,主进程可以直接从虚拟缓存中读取对应的图像帧,提高了图像帧的缓存命中率,缓存命中率的提高使得珍贵的性能资源可以更多地留给其他任务。
同时,由于主进程无需进行图像帧的加载、解码等工作,可以减少主进程的工作量和内存使用率,提高主进程的效率,让主进程在固定内存使用量的基础上,能够以高帧率播放序列帧动画。这样也有利于设计师可以大胆地提高序列帧动画的分辨率而不必担心上线后导致应用程序崩溃。
附图说明
图1是本申请实施例一提供的一种帧动画播放系统实施例的结构示意图;
图2是本申请实施例二提供的一种帧动画播放方法实施例的流程图;
图3是本申请实施例三提供的另一种帧动画播放方法实施例的流程图;
图4是本申请实施例四提供的一种帧动画播放装置实施例的结构框图;
图5是本申请实施例五提供的另一种帧动画播放装置实施例的结构框图;
图6是本申请实施例六提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
实施例一
图1为本申请实施例一提供的一种帧动画播放系统实施例的结构示意图,本实施例可适用于播放序列帧动画的场景,例如在直播过程中播放序列帧动画的场景。如图1所示,该帧动画播放系统中包括应用程序,该应用程序中至少可以包括主进程110以及资源子进程120,当应用程序启动时,可以首先启动主进程110,然后启动资源子进程120;当应用程序结束时,可以同时结束主进程110和资源子进程120。
在一种实施例中,主进程110与资源子进程120可以通过全双工通信进行命令交互。并且,主进程110与资源子进程120映射到同一虚拟内存中。
具体的,主进程110用于在启动时,创建内存映射文件,并将该内存映射文件映射为虚拟内存。资源子进程120用于在启动时,可以获取主进程创建的内存映射文件的文件路径,并根据该文件路径映射虚拟内存。
在该实施例中,内存映射文件mappedFile可以是一种大空间文件,主进程110在启动以后,创建mappedFile,然后主进程110可以调用系统mmap命令将该mappedFile映射为虚拟内存,并维护对应的数据指针p。
对于资源子进程120而言,当资源子进程120启动时,可以从主进程110的启动参数中获得mappedFile的文件路径,并调用系统mmap命令映射mappedFile作为虚拟内存。
在播放帧动画的过程中,主进程110用于针对待播放的目标帧动画,向资源子进程120发送该目标帧动画的动画播放命令。
示例性地,上述动画播放命令可以包括目标帧动画的文件存储路径。
在该实施例中,针对待播放的目标帧动画,主进程110可以获取该目标帧动画在磁盘中的文件存储路径,然后基于该文件存储路径生成动画播放命令,并通过与资源子进程120建立的通信信道传递该动画播放命令至资源子进程120中,以请求资源子进程120加载该目标帧动画。
当接收到动画播放命令以后,资源子进程120用于从该文件存储路径中加载图像帧到虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;根据该初始内存偏移量生成动画准备通知,并将该动画准备通知发送至主进程110。
在该实施例中,资源子进程120接收到主进程110发送的动画播放命令以后,则对该动画播放命令进行解析,以获得该动画播放命令中的文件存储路径。然后根据该文件存储路径,尝试加载第一帧图像帧。如果加载成功,则将该第一帧图像帧存储到虚拟内存中,以及记录该第一帧图像帧在虚拟内存的内存偏移量作为初始内存偏移量。接着,资源子进程120根据该初始内存偏移量生成动画准备通知,并将该动画准备通知发送至主进程110中,以通知主进程110当前动画资源准备完毕,可以开始读取相关图像帧。然后资源子进程120接着加载下一帧图像帧到虚拟内存,但无需再给主进程110发送动画准备通知,以此类推,直到该帧动画的所有的图像帧加载完毕。
在一种实施例中,资源子进程120还可以在加载第一帧图像帧时获取帧动画的动画分辨率,并根据该动画分辨率以及初始内存偏移量生成动画准备通知,即,生成动画准备通知中携带初始内存偏移量以及动画分辨率。
在一种实施例中,如果资源子进程120对图像帧加载失败,则资源子进程120可以通知主进程110动画加载失败。
对于主进程110而言,当其发出动画播放命令以后,则开始尝试播放动画,如果主进程110尚未接收到资源子进程120发送的动画准备通知,则继续等待。如果接收到该动画准备通知,主进程110还用于根据所述初始内存偏移量确定各图像帧在虚拟内存的内存偏移量,并根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
在一种实现中,当主进程110接收到动画准备通知,则可以判定资源子进程的资源准备完毕,此时可以对该动画准备通知进行解析,获得初始内存偏移量以及帧动画的动画分辨率。然后主进程110通过该初始内存偏移量以及该动画分辨率,可以确定各图像帧在虚拟内存的内存偏移量,并根据各图像帧在虚拟内存的内存偏移量确定该图像帧的存储地址,然后从存储地址中读取图像帧进行播放。
在一种实施方式中,上述通过初始内存偏移量以及该动画分辨率,确定各图像帧在虚拟内存的内存偏移量的方式,进一步可以包括如下步骤:确定当前待读取的图像帧与第一帧图像帧的偏移帧数;根据所述动画分辨率,确定各图像帧的图像帧大小;根据所述图像帧大小、所述偏移帧数以及所述初始内存偏移量,计算当前待读取的图像帧的内存偏移量。
在一种例子中,偏移帧数=当前待读取的图像帧的序号-第一帧图像帧的序号,例如,第十帧与第一帧的偏移帧数=10-1=9。
在一种例子中,图像帧大小=动画分辨率*图像帧的通道数,例如,假设动画分辨率为100*100,图像帧的格式是RGBA的四通道格式,则图像帧大小=动画分辨率*通道数=100*100*4。
假设第一帧图像帧的内存偏移量为1024,则第十帧与第一帧的偏移帧数为9,第十帧的内存偏移量=1024+100*100*4*9。
在本实施例中,主进程110和资源子进程120共用虚拟内存,由资源进程120加载帧动画的所有图像帧进虚拟内存,并将帧动画的动画分辨率以及初始内存偏移量通知主进程110。然后主进程110可以根据动画分辨率以及初始内存偏移量计算其他图像帧在虚拟内存的内存偏移量,并根据计算出的内存偏移量从虚拟内存中读取对应的图像帧进行播放,通过上述的将多进程与虚拟内存结合的处理方式进行帧动画播放,有如下有益效果:
一方面,主进程110可以根据第一帧图像帧的初始内存偏移量计算任意图像帧的内存偏移量,从而可以读取任意帧进行播放,在播放帧动画时不仅可以顺序播放,还可以做到随机帧播放。
另一方面,帧动画中的图像帧的加载由资源进程完成,图像帧加载到虚拟内存中,由于虚拟内存的高度复用,确保在长期的播放过程中,帧动画中的所有图像帧只需要被加载、解码一次,后续如果需要用到,主进程可以直接从虚拟缓存中读取对应的图像帧,提高了图像帧的缓存命中率,缓存命中率的提高使得珍贵的性能资源可以更多地留给其他任务。
例如,针对一个动画贴纸被多次使用在不同播放目标(如不同的直播视频)的场景,针对各播放目标,由于使用的是同一个动画贴纸,该动画贴纸被资源子进程加载一次进虚拟内存以后,主进程可以直接从虚拟内存中读取该动画贴纸的图像帧进行播放,而无需对该动画贴纸进行多次加载。
又如,如果一个直播视频,第0时刻添加动画贴纸A,10秒后再次添加动画贴纸A,这时候资源进程只需要加载一份动画贴纸A的各图像帧进虚拟内存,主进程可以直接从虚拟内存读取两次动画贴纸A的图像帧即可。
同时,由于主进程无需进行图像帧的加载、解码等工作,可以减少主进程的工作量和内存使用率,提高主进程的效率,让主进程在固定内存使用量的基础上,能够以高帧率播放序列帧动画。这样也有利于设计师可以大胆地提高序列帧动画的分辨率而不必担心上线后导致应用程序崩溃。
实施例二
图2为本申请实施例二提供的一种帧动画播放方法实施例的流程图,本实施例可以由主进程执行,具体可以包括如下步骤:
步骤210,针对待播放的目标帧动画,主进程向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存。
在一种实施例中,在主进程向资源子进程发送该目标帧动画的动画播放命令之前,本实施例还可以包括如下步骤:
当所述主进程启动时,创建内存映射文件,并将所述内存映射文件映射为虚拟内存。
步骤220,接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量。
其中,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量。
步骤230,根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量。
在一种实施方式中,所述动画准备通知还可以包括动画分辨率,步骤230进一步可以包括如下步骤:
确定当前待读取的图像帧与第一帧图像帧的偏移帧数;
根据所述动画分辨率,确定各图像帧的图像帧大小;
根据所述图像帧大小、所述偏移帧数以及所述初始内存偏移量,计算当前待读取的图像帧的内存偏移量。
步骤240,根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
关于实施例二的说明,可以参考实施例一中的相关描述,本实施例对此不再赘述了。
在本实施例中,在进行帧动画播放的过程中,主进程可以根据资源子进程发送的动画分辨率以及初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量,然后根据该内存偏移量从虚拟内存中读取对应的图像帧进行播放,这样,主进程可以根据初始内存偏移量计算任意图像帧的内存偏移量,从而可以读取任意帧进行播放,在播放帧动画时不仅可以顺序播放,还可以做到随机帧播放。
同时,由于图像帧的加载的工作由资源子进程完成,可以减少主进程的工作量和内存使用率,提高主进程的效率,让主进程在固定内存使用量的基础上,能够以高帧率播放序列帧动画。这样也有利于设计师可以大胆地提高序列帧动画的分辨率而不必担心上线后导致应用程序崩溃。
实施例三
图3为本申请实施例三提供的另一种帧动画播放方法实施例的流程图,本实施例可以由资源子进程执行,具体可以包括如下步骤:
步骤310,资源子进程接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存。
在一种实施例中,在资源子进程接收主进程发送的针对待播放的目标帧动画的动画播放命令之前,本实施例还可以包括如下步骤:
当所述资源子进程启动时,获取所述主进程创建的内存映射文件的文件路径,并根据所述文件路径映射所述虚拟内存。
步骤320,从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量。
步骤330,根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
在一种实施方式中,步骤330进一步可以包括如下步骤:
在加载第一帧图像帧时获取帧动画的动画分辨率;
根据所述初始内存偏移量以及所述动画分辨率生成动画准备通知。
关于实施例三的说明,可以参考实施例一中的相关描述,本实施例对此不再赘述了。
在本实施例中,资源子进程从主进程中接收目标帧动画的文件存储路径以后,从该文件存储路径中加载图像帧到虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量。然后根据该初始内存偏移量生成动画准备通知,并将该动画准备通知发送至主进程,以通知主进程开始读取图像帧。本实施例由资源子进程负责帧动画中的图像帧的加载,并将图像帧加载到虚拟内存,而资源子进程是单一进程,可以提高图像帧的加载效率。
实施例四
图4为本申请实施例四提供的一种帧动画播放装置实施例的结构框图,所述帧动画播放装置应用于主进程中,具体可以包括如下模块:
动画播放命令发送模块410,用于针对待播放的目标帧动画,向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存;
动画准备通知接收模块420,用于接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量;
内存偏移量确定模块430,用于根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;
图像帧读取模块440,用于根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
在一种实施方式中,所述动画准备通知还包括动画分辨率,所述内存偏移量确定模块430进一步可以包括如下子模块:
偏移帧数确定子模块,用于确定当前待读取的图像帧与第一帧图像帧的偏移帧数;
图像帧大小确定子模块,用于根据所述动画分辨率,确定各图像帧的图像帧大小;
内存偏移量计算子模块,用于根据所述图像帧大小、所述偏移帧数以及所述初始内存偏移量,计算当前待读取的图像帧的内存偏移量。
在一种实施方式中,所述装置还包括如下模块:
第一虚拟内存映射模块,用于当所述主进程启动时,创建内存映射文件,并将所述内存映射文件映射为虚拟内存。
本申请实施例所提供的一种帧动画播放装置可执行本申请任意实施例所提供的由主进程执行的一种帧动画播放方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本申请实施例五提供的另一种帧动画播放装置实施例的结构框图,所述帧动画播放装置应用于资源子进程中,具体可以包括如下模块:
动画播放命令接收模块510,用于接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存;
图像帧加载模块520,用于从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;
动画通知模块530,用于根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
在一种实施方式中,所述动画通知模块530还用于:
在加载第一帧图像帧时获取帧动画的动画分辨率;
根据所述初始内存偏移量以及所述动画分辨率生成动画准备通知。
在一种实施方式中,所述装置还可以包括如下模块:
第二虚拟内存映射模块,用于当所述资源子进程启动时,获取所述主进程创建的内存映射文件的文件路径,并根据所述文件路径映射所述虚拟内存。
本申请实施例所提供的一种帧动画播放装置可执行本申请任意实施例所提供的由资源子进程执行的一种帧动画播放方法,具备执行方法相应的功能模块和有益效果。
实施例六
图6为本申请实施例六提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器610、存储器620、输入装置630和输出装置640;计算机设备中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;计算机设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的上述实施例对应的程序指令/模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的方法实施例中提到的方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
实施例七
本申请实施例七还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行上述方法实施例中的方法。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本申请任意实施例所提供的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (12)
1.一种帧动画播放方法,其特征在于,所述方法包括:
针对待播放的目标帧动画,主进程向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存;
接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量;
根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;
根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
2.根据权利要求1所述的帧动画播放方法,其特征在于,所述动画准备通知还包括动画分辨率,所述根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量包括:
确定当前待读取的图像帧与第一帧图像帧的偏移帧数;
根据所述动画分辨率,确定各图像帧的图像帧大小;
根据所述图像帧大小、所述偏移帧数以及所述初始内存偏移量,计算当前待读取的图像帧的内存偏移量。
3.根据权利要求1或2所述的帧动画播放方法,其特征在于,在所述主进程向资源子进程发送该目标帧动画的动画播放命令之前,所述方法还包括:
当所述主进程启动时,创建内存映射文件,并将所述内存映射文件映射为虚拟内存。
4.一种帧动画播放方法,其特征在于,所述方法包括:
资源子进程接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存;
从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;
根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
5.根据权利要求4所述的帧动画播放方法,其特征在于,所述根据所述初始内存偏移量生成动画准备通知包括:
在加载第一帧图像帧时获取帧动画的动画分辨率;
根据所述初始内存偏移量以及所述动画分辨率生成动画准备通知。
6.根据权利要求4或5所述的帧动画播放方法,其特征在于,在所述资源子进程接收主进程发送的针对待播放的目标帧动画的动画播放命令之前,所述方法还包括:
当所述资源子进程启动时,获取所述主进程创建的内存映射文件的文件路径,并根据所述文件路径映射所述虚拟内存。
7.一种帧动画播放系统,其特征在于,所述系统包括应用程序,所述应用程序包括主进程以及资源子进程,所述主进程与所述资源子进程映射到同一虚拟内存;
所述主进程用于,针对待播放的目标帧动画,向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,
所述资源子进程用于,从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程;
所述主进程还用于,根据所述初始内存偏移量确定各图像帧在虚拟内存的内存偏移量,并根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
8.根据权利要求7所述的帧动画播放系统,其特征在于,
所述主进程还用于,在启动时,创建内存映射文件,并将所述内存映射文件映射为虚拟内存;
所述资源子进程还用于,在启动时,获取所述主进程中创建的内存映射文件的文件路径,并根据所述文件路径映射所述虚拟内存。
9.一种帧动画播放装置,其特征在于,所述帧动画播放装置应用于主进程中,所述装置包括:
动画播放命令发送模块,用于针对待播放的目标帧动画,向资源子进程发送该目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述主进程与所述资源子进程映射到同一虚拟内存;
动画准备通知接收模块,用于接收所述资源子进程发送的动画准备通知,所述动画准备通知包括初始内存偏移量,所述初始内存偏移量为所述资源子进程从所述文件存储路径中加载第一帧图像帧进虚拟内存以后,记录的该第一帧图像帧在虚拟内存的内存偏移量;
内存偏移量确定模块,用于根据所述初始内存偏移量,确定各图像帧在虚拟内存的内存偏移量;
图像帧读取模块,用于根据所述内存偏移量从所述虚拟内存中读取对应的图像帧进行播放。
10.一种帧动画播放装置,其特征在于,所述帧动画播放装置应用于资源子进程中,所述装置包括:
动画播放命令接收模块,用于接收主进程发送的针对待播放的目标帧动画的动画播放命令,所述动画播放命令包括目标帧动画的文件存储路径,所述资源子进程与所述主进程映射到同一虚拟内存;
图像帧加载模块,用于从所述文件存储路径中加载图像帧到所述虚拟内存,并在加载完第一帧图像帧以后记录该第一帧图像帧的内存偏移量,作为初始内存偏移量;
动画通知模块,用于根据所述初始内存偏移量生成动画准备通知,并将所述动画准备通知发送至所述主进程,以通知所述主进程开始读取图像帧。
11.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一项和/或权利要求4-6中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一项和/或权利要求4-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010789181.6A CN114071225B (zh) | 2020-08-07 | 2020-08-07 | 一种帧动画播放方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010789181.6A CN114071225B (zh) | 2020-08-07 | 2020-08-07 | 一种帧动画播放方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114071225A CN114071225A (zh) | 2022-02-18 |
CN114071225B true CN114071225B (zh) | 2024-03-01 |
Family
ID=80232611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010789181.6A Active CN114071225B (zh) | 2020-08-07 | 2020-08-07 | 一种帧动画播放方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114071225B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905783A (zh) * | 2012-12-25 | 2014-07-02 | 杭州海康威视数字技术股份有限公司 | 对视频流进行解码显示的方法及设备 |
CN105094797A (zh) * | 2014-05-15 | 2015-11-25 | 奥克兰联合服务有限公司 | 用于电子设备的应用分析系统 |
CN106651999A (zh) * | 2016-12-27 | 2017-05-10 | 北京智能管家科技有限公司 | 帧动画加载加速方法及装置 |
CN110413420A (zh) * | 2019-01-23 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、终端及存储介质 |
-
2020
- 2020-08-07 CN CN202010789181.6A patent/CN114071225B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905783A (zh) * | 2012-12-25 | 2014-07-02 | 杭州海康威视数字技术股份有限公司 | 对视频流进行解码显示的方法及设备 |
CN105094797A (zh) * | 2014-05-15 | 2015-11-25 | 奥克兰联合服务有限公司 | 用于电子设备的应用分析系统 |
CN106651999A (zh) * | 2016-12-27 | 2017-05-10 | 北京智能管家科技有限公司 | 帧动画加载加速方法及装置 |
CN110413420A (zh) * | 2019-01-23 | 2019-11-05 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114071225A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7817900B2 (en) | GPU timeline with render-ahead queue | |
CN113457160B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN110366033A (zh) | 一种视频播放方法、装置、设备及存储介质 | |
US11128879B2 (en) | Hybrid decoding | |
CN108924582A (zh) | 视频录制方法、计算机可读存储介质及录播系统 | |
CN109672902A (zh) | 一种视频抽帧方法、装置、电子设备和存储介质 | |
CN110708609A (zh) | 一种视频播放方法及装置 | |
CN107071550B (zh) | 一种视频数据共享方法和装置 | |
CN110102057B (zh) | 一种过场动画衔接方法、装置、设备及介质 | |
JP2019509547A (ja) | Gpuリソース再構築方法、ユーザー・デバイス、システム及び記憶媒体 | |
CN113365150B (zh) | 视频处理方法和视频处理装置 | |
CN114449334A (zh) | 视频录制方法、装置、电子设备及计算机存储介质 | |
CN111475240B (zh) | 数据处理方法及系统 | |
CN114071225B (zh) | 一种帧动画播放方法、装置和系统 | |
CN111314777B (zh) | 视频生成方法及装置、计算机存储介质、电子设备 | |
CN115811621A (zh) | 一种直播流播放方法、装置、计算机设备及存储介质 | |
CN113559503A (zh) | 视频生成方法、设备及计算机可读介质 | |
CN112511887A (zh) | 视频播放控制方法及相应的装置、设备、系统和存储介质 | |
CN115643462B (zh) | 一种交互动画展示方法、装置、计算机设备及存储介质 | |
CN114071229B (zh) | 一种解决SurfaceView渲染器重载视频解码时回收延迟的方法 | |
CN112711727B (zh) | 一种移动终端的网页跳转方法及装置 | |
CN115037960B (zh) | 互动视频的生成方法及装置 | |
CN111813994B (zh) | 一种基于互动白板的数据处理、文件回放方法及装置 | |
CN117156177A (zh) | 视频生成方法、装置、电子设备和存储介质 | |
CN117177015A (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 |