CN120935399A - 动图播放方法、装置、电子设备及存储介质 - Google Patents
动图播放方法、装置、电子设备及存储介质Info
- Publication number
- CN120935399A CN120935399A CN202410585440.1A CN202410585440A CN120935399A CN 120935399 A CN120935399 A CN 120935399A CN 202410585440 A CN202410585440 A CN 202410585440A CN 120935399 A CN120935399 A CN 120935399A
- Authority
- CN
- China
- Prior art keywords
- picture
- data
- moving picture
- frame
- data packet
- 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
Links
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请的实施方式提供了一种动图播放方法、装置、电子设备及存储介质。该动图播放方法包括:拦截目标网络请求;解析目标网络请求以获取动图画面数据进行缓存;基于动图画面数据形成每一帧画面对应的画面数据包并将画面数据包存储于数据包队列中;读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据;以及加载画面帧数据至目标渲染工具中以形成动图画面帧。利用本申请的技术方案,能够减少传输文件体积,节省网络流量成本,在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
Description
技术领域
本申请的实施方式涉及计算机领域,更具体地,本申请的实施方式涉及动图播放方法、装置、电子设备及存储介质。
背景技术
本部分旨在为权利要求书中陈述的本申请的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
GIF(Graphics Interchange Format)动图是指通过使用专门的动画制作工具或者采用逐帧拍摄对象的方法,让多个GIF图片按一定规律快速、连续播放运动的画面。在现有技术中,GIF动图的播放方式一般是将获取到的动图数据给后续的解码渲染模块进行渲染播放。在解码阶段还可以采用每次只解码少量的几张图片,随着时间轴推进不断地释放旧的图片并解码新的图片的方式以解决内存占用高的问题。但是,上述现有方案容易造成CPU占用过高的问题。另外,可以将GIF转换成视频,然后供客户端通过网络视频播放器进行下载和播放,基于这种情况下,在播放动图时容易干扰到用户设备的App内甚至其他App的其他音视频的播放。
有鉴于此,亟需提出一种创新的动图播放方法,以便能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
发明内容
为克服相关技术中存在的问题,本申请的实施方式期望提供一种动图播放方法、装置、电子设备及存储介质。该动图播放方法能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
在本申请实施方式的第一方面中,提供了一种动图播放方法,包括:拦截目标网络请求;解析目标网络请求以获取动图画面数据进行缓存;基于动图画面数据形成每一帧画面对应的画面数据包并将画面数据包存储于数据包队列中;读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据;以及加载画面帧数据至目标渲染工具中以形成动图画面帧。
在本申请的一个实施例中,解析目标网络请求以获取动图画面数据进行缓存包括:为目标网络请求中的每一动图资源总链接建立独立文件夹和独立信息描述文件;为画面播放索引文件中的每一切片文件创建切片下载描述信息,并将每一切片下载描述信息存储至独立信息描述文件中;下载画面播放索引文件中的每一切片文件,并且更新每一切片文件对应的切片下载描述信息。
在本申请的一个实施例中,在将每一切片下载描述信息存储至独立信息描述文件中之后,方法还包括:为每一切片文件中的连续画面数据创建独立数据信息实体,独立数据信息实体用于记录文件偏移量和独立数据信息实体的关系。
在本申请的一个实施例中,加载画面帧数据至目标渲染工具中以形成动图画面帧包括:响应于动图渲染指令获取画面帧数据中的媒体类型压缩样本;加载媒体类型压缩样本至目标渲染工具中以形成动图画面帧。
在本申请的一个实施例中,在响应于动图渲染指令获取画面帧数据中的媒体类型压缩样本之后,方法还包括:提取媒体类型压缩样本中的像素解码数据;加载像素解码数据至目标渲染工具中以形成动图画面帧。
在本申请的一个实施例中,在加载画面帧数据至目标渲染工具中以形成动图画面帧之前,包括:响应于动图渲染指令执行拦截目标网络请求的步骤至读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据的步骤。
在本申请的一个实施例中,在加载画面帧数据至目标渲染工具中以形成动图画面帧之后,方法还包括:对形成的多个动图画面帧进行逐一顺序播放。
在本申请实施方式的第二方面中,提供了一种动图播放装置,包括:请求拦截模块,用于拦截目标网络请求;数据缓存模块,用于解析目标网络请求以获取动图画面数据进行缓存;解封装模块,用于基于动图画面数据形成每一帧画面对应的画面数据包并将画面数据包存储于数据包队列中;数据解码模块,用于读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据;以及动图形成模块,用于加载画面帧数据至目标渲染工具中以形成动图画面帧。
本申请第三方面提供一种电子设备,包括:处理器;以及存储器,其上存储有用于动图播放的可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。
本申请第四方面提供一种非暂时性机器可读存储介质,其上存储有用于动图播放的可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。
本申请实施方式提供的技术方案具有以下有益效果:
本申请实施方式提供的动图播放方法、装置、电子设备及存储介质,通过拦截目标网络请求,进而解析目标网络请求以获取动图画面数据进行缓存。进一步地,基于动图画面数据形成画面数据包并将画面数据包存储于数据包队列中,进而读取数据包队列中的画面数据包进行解码,得到画面帧数据,进而加载画面帧数据至目标渲染工具中以形成动图画面帧。从而能够有序地对数据包队列中的画面数据包进行解码和渲染,降低CPU资源消耗和降低内存占用率。利用系统原生的底层的硬件解码工具进行GPU解码以及利用独立的渲染工具进行渲染,这样既能够避免和其他正在使用系统自带音视频播放器播放音视频的场景的相互干扰,又能够充分发挥GPU的能力。
总的来说,本申请能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
图1示意性地示出了适于实现本申请实施方式的示例性计算系统100的框图;
图2示意性地示出了根据本申请一实施例的动图播放方法的流程示意图;
图3示意性地示出了根据本申请又一实施例的动图播放方法的流程示意图;
图4示意性地示出了根据本申请再一实施例的动图播放方法的流程示意图;
图5示意性地示出了根据本申请一实施例的动图播放装置的结构示意图;
图6示意性地示出了根据本申请实施例的电子设备的示意框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本申请实施方式的示例性计算系统100的框图。如图1所示,计算系统100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本申请范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术人员知道,本申请的实施方式可以实现为一种系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本申请还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分在用户计算机上执行,部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本申请实施例的方法的流程图和设备(或系统)的框图描述本申请的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本申请的实施方式,提出了一种动图播放方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本申请的若干代表性实施方式,详细阐释本申请的原理和精神。
发明概述
本申请人发现,在现有技术中,GIF动图的播放方式一般是将获取到的动图数据给后续的解码渲染模块进行渲染播放。在解码阶段还可以采用每次只解码少量的几张图片,随着时间轴推进不断地释放旧的图片并解码新的图片的方式以解决内存占用高的问题。但是,上述现有方案容易造成CPU占用过高的问题。另外,可以将GIF转换成视频,然后供客户端通过网络视频播放器进行下载和播放,基于这种情况下,在播放动图时容易干扰到用户设备的App内甚至其他App的其他音视频的播放。
基于此,本申请通过拦截目标网络请求,进而解析目标网络请求以获取动图画面数据进行缓存。进一步地,基于动图画面数据形成画面数据包并将画面数据包存储于数据包队列中,进而读取数据包队列中的画面数据包进行解码,得到画面帧数据,进而加载画面帧数据至目标渲染工具中以形成动图画面帧。从而能够有序地对数据包队列中的画面数据包进行解码和渲染,降低CPU资源消耗和降低内存占用率。还可以利用系统原生的底层的硬件解码工具进行GPU解码以及利用独立的渲染工具进行渲染,这样既能够避免和其他正在使用系统自带音视频播放器播放音视频的场景的相互干扰,又能够充分发挥GPU的能力。
总的来说,本申请能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
在介绍了本申请的基本原理之后,下面具体介绍本申请的各种非限制性实施方式。
应用场景总览
本申请实施方式的动图播放方法适用于各类型的电子设备中,例如是手机、平板等移动设备,又例如个人电脑和智能显示屏等固定设备等等。在这些电子设备上采用本申请提供的动图播放方法,能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
示例性方法
下面参考图2来描述根据本申请示例性实施方式的动图播放方法。需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。相反,本申请的实施方式可以应用于适用的任何场景。
在方法200的步骤S201中,拦截目标网络请求。在本申请实施例中,前述的目标网络请求可以为以动图画面数据作为请求结果的HTTP请求。示例性地,可以在FFmpeg(FastForward Mpeg,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序)框架添加例如HTTP协议等的定制化协议来实现对该目标网络请求的拦截。前述的动图画面数据可以是通过FFmpeg对互联网中的GIF原图进行转码后所得的视频数据,例如是转码为H264编码的MP4格式的视频数据。
在步骤S202中,解析目标网络请求以获取动图画面数据进行缓存。在本申请实施例中,对目标网络请求进行解析后可以获取动图画面数据的下载链接以对动图画面数据进行下载,进而对下载获取得到的动图画面数据进行缓存。
在步骤S203中,基于动图画面数据形成每一帧画面对应的画面数据包并将画面数据包存储于数据包队列中。在本申请实施例中,前述的动图画面数据累积足够构成一个解封装的画面数据包时就会将形成的画面数据包存储于数据包队列中。示例性地,可以统计动图画面数据的累积文件大小,当达到预设文件大小时即视为构成一个解封装的画面数据包。
在步骤S204中,读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据。在本申请实施例中,可以示例性地采用VideoToolBox框架对画面数据包中的数据进行解码,得到画面帧数据(AVFrame)。该画面帧数据也可以通过一个画面帧队列进行排列储存。
在步骤S205中,加载画面帧数据至目标渲染工具中以形成动图画面帧。在本申请实施例中,前述的目标渲染工具可以为系统原生的底层的独立的渲染工具,示例性地,可以采用iOS系统的AVSampleBufferDisplayLayer,此为相对高层级的一个视频帧渲染工具,其内部使用的是Metal渲染框架,能够发挥GPU的高效硬解性能,有效释放了CPU的工作压力。而且其也兼容适配低版本系统或设备,使用它时内存占用也很低。使用前述的渲染工具呈现动图画面,可以避免引入不必要的音频资源占用问题。
本申请通过拦截目标网络请求,进而解析目标网络请求以获取动图画面数据进行缓存。进一步地,基于动图画面数据形成画面数据包并将画面数据包存储于数据包队列中,进而读取数据包队列中的画面数据包进行解码,得到画面帧数据,进而加载画面帧数据至目标渲染工具中以形成动图画面帧。从而能够有序地对数据包队列中的画面数据包进行解码和渲染,降低CPU资源消耗和内存占用率。可以利用系统原生的底层的硬件解码工具进行GPU解码以及利用独立的渲染工具进行渲染,这样既能够避免和其他正在使用系统自带音视频播放器播放音视频的场景的相互干扰,又能够充分发挥GPU的能力。总的来说,本申请能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。
在一些实施例中,为了提升性能,可以对动图画面数据的缓存方式进行进一步设计,以对动图画面数据进行细粒度管理。下文将结合图3来对动图画面数据的缓存方式进行详细描述。图3示意性地示出了根据本申请又一实施例的动图播放方法的流程示意图,请参阅图3,本申请实施例示出的动图播放方法300可以包括:
在步骤S301中,为目标网络请求中的每一动图资源总链接建立独立文件夹和独立信息描述文件,以便于分拆管理不同的画面数据。在本申请实施例中,画面数据可以是M3U8格式的视频数据,动图资源总链接即是M3U8格式的视频数据的URL(uniform resourcelocator)。M3U8是一种基于HTTP的流媒体文件格式,主要用来描述多段音频和视频数据的URL地址。
在步骤S302中,为画面播放索引文件中的每一切片文件创建切片下载描述信息,并将每一切片下载描述信息存储至独立信息描述文件中。在本申请实施例中,前述的切片下载描述信息用于记录切片下载信息,该画面播放索引文件可以通过动图资源总链接获取得到。可以理解的是,画面播放索引文件内部给出了一个个不同的视频切片的信息,包括具体的切片文件地址,所以解析这个画面播放索引文件的信息后,就可以逐个去下载不同的视频切片了,从而形成动图画面数据。
在步骤S303中,为每一切片文件中的连续画面数据创建独立数据信息实体。其中,前述的连续画面数据是指一段未发生跳跃的连续下载的文件数据,前述的独立数据信息实体用于记录文件偏移量和独立数据信息实体的关系。考虑画面进度的拖拽行为,因此下载的数据经常发生分段的情况。示例性地,看了前面一段数据段A后,用户拖拽到后半部分看了一段,这段就是构成了和刚才那段视频内容A不相接的但是连续且独立的数据段B。然后,用户又回到前面接着看之前中间没看的那段画面,形成了数据段C,这就是产生数据段的原因。为了记录每个独立数据段的信息,可以用一个命名为“entry”的结构来记录。在存储下载的内容的时候只能是按照下载顺序进行存储,因此下载文件的实际存储顺序为数据段A,后面连着数据段B,再后面连着数据段C。当实际中拿到这个已下载的文件和与之匹配的索引文件时,按照正常的顺序播放时就需要先找到数据段A播放,然后找到数据段C的内容播放,最后再去找到数据段B播放。为此,对于每一个数据段,为了准确地找到它并进行读取,就产生两个概念:逻辑意义上的数据起始点以及物理意义上的数据起始点。一个切片文件的数据分段下载的记录信息例如可以如下所示:
其中,logical_pos记录的是用户眼中的时间轴,前一个“entry”的logical_pos+entry_size等于后一个entry的logical_pos。直到最后一个为止,所有的entry_size之和等于前面相对应的一个切片文件的tree_file_size。而physical_pos记录的则是数据段在一个连续文件中的位置,因此,能够记录文件偏移量(即数据段在连续文件中的位置)以及文件偏移量与独立数据信息实体(即连续文件)之间的对应关系。
在步骤S304中,下载画面播放索引文件中的每一切片文件,并且更新每一切片文件对应的切片下载描述信息。示例性地,该切片下载描述信息可以如下所示:
其中,每个切片下载描述信息内部的tree对应视频各个切片文件的信息,以此分隔管理不同切片文件。
在一些实施例中,可以对渲染过程进行进一步设计。下文将结合图4来对渲染过程进行详细描述。图4示意性地示出了根据本申请再一实施例的动图播放方法的流程示意图,请参阅图4,本申请实施例示出的动图播放方法400可以包括:
在步骤S401中,响应于动图渲染指令获取画面帧数据中的媒体类型压缩样本。在本申请实施例中,可以响应于动图渲染指令执行拦截目标网络请求的步骤至读取数据包队列中的画面数据包进行解码,得到每一帧画面对应的画面帧数据的步骤,从而为渲染流程提供画面帧数据(AVFrame),进而在画面帧数据内部获取得到媒体类型压缩样本(CMSampleBuffer,一个核心基础对象,包含零个或多个特定媒体类型(音频、视频、多路混合等)的压缩(或未压缩)样本)。也能够避免数据全时间获取而带来的CPU资源消耗和内存占用,即在接收到动图渲染指令时才会进行目标网络请求的拦截以获取动图画面数据。
在步骤S402中,加载媒体类型压缩样本至目标渲染工具中以形成动图画面帧。在本申请实施例中,还可以进一步地提取媒体类型压缩样本中的像素解码数据(CVPixelBuffer),即是解码后的画面像素数据,进而加载像素解码数据至目标渲染工具中以形成动图画面帧。媒体类型压缩样本和像素解码数据都能够通过AVSampleBufferDisplayLayer渲染形成动图画面帧。
在步骤S403中,对形成的多个动图画面帧进行逐一顺序播放。可以理解的是,在本申请实施例中会不断地进行“加载所述画面帧数据至目标渲染工具中以形成动图画面帧”的工作,从而生成一个动图对应的多个动图画面帧,从而能够对形成的多个动图画面帧进行逐一顺序播放以播放完整的动图。
示例性设备
在介绍了本申请示例性实施方式的方法之后,接下来,请参考图5和图6对本申请示例性实施方式的动图播放方法的相关产品进行描述。
图5示意性地示出了根据本申请一实施例的动图播放装置的结构示意图,请参阅图5,本申请实施例示出的动图播放装置500可以包括:
请求拦截模块501,用于拦截目标网络请求;
数据缓存模块502,用于解析所述目标网络请求以获取动图画面数据进行缓存;
解封装模块503,用于基于所述动图画面数据形成每一帧画面对应的画面数据包并将所述画面数据包存储于数据包队列中;
数据解码模块504,用于读取所述数据包队列中的所述画面数据包进行解码,得到每一帧画面对应的画面帧数据;其中,数据解码模块504可以用于读取所述数据包队列中的所述画面数据包进行硬件解码,而硬件解码是通过调用系统底层开放的硬件解码模块所提供的功能实现的;
动图形成模块505,用于加载所述画面帧数据至目标渲染工具中以形成动图画面帧。
本申请示出的动图播放装置,通过拦截目标网络请求,进而解析目标网络请求以获取动图画面数据进行缓存。进一步地,基于动图画面数据形成画面数据包并将画面数据包存储于数据包队列中,进而读取数据包队列中的画面数据包进行解码,得到画面帧数据,进而加载画面帧数据至目标渲染工具中以形成动图画面帧。从而能够有序地对数据包队列中的画面数据包进行解码和渲染,降低CPU资源消耗和内存占用。还利用系统原生的底层的硬件解码工具进行GPU解码以及利用独立的渲染工具进行渲染,这样既能够避免和其他正在使用系统自带音视频播放器播放音视频的场景的相互干扰,又能够充分发挥GPU的能力。
总的来说,本申请能够在低内存占用率和低CPU使用率的情况下高效播放动图,并且避免干扰到用户的其他音视频播放,提升用户的体验感。由于动图播放装置实现的具体功能与前面所述的动图播放方法相同,因此具体细节或进一步的实施方式,可以参考上述针对动图播放方法描述的内容,在此不再进行详细描述。
图6示意性地示出了根据本申请实施例的电子设备的示意框图。请参阅图6,电子设备600可以包括处理器601。进一步,该电子设备还可以包括存储器602,其存储有计算机指令,当所述计算机指令由所述处理器601运行时,使得所述电子设备600执行根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,电子设备600可以包括服务器或者终端设备,例如物理服务器、云端服务器、服务器集群、数据处理装置、应用测试机器人、电脑终端、智能终端、PC设备和物联网终端等等。
根据不同的实施场景,上文的处理器601可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
基于上文,本申请还公开了一种计算机可读存储介质,包含程序指令,当所述程序指令由处理器执行时,使得实现根据前文多个实施例或实施方式所述的方法。
在一些实施场景中,上述计算机可读存储介质可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(StaticRandom-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic RandomAccess Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(HybridMemory Cube)等等,或者可以用于存储所需信息并且可以由应用程序、模块或两者访问的任何其他介质。任何这样的计算机存储介质可以是设备的一部分或可访问或可连接到设备。本发明描述的任何应用或模块可以使用可以由这样的计算机可读介质存储或以其他方式保持的计算机可读/可执行指令来实现。
应当注意,尽管在上文详细描述中提及了动图播放装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本申请的精神和原理,但是应该理解,本申请并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本申请旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (10)
1.一种动图播放方法,其特征在于,包括:
拦截目标网络请求;
解析所述目标网络请求以获取动图画面数据进行缓存;
基于所述动图画面数据形成每一帧画面对应的画面数据包并将所述画面数据包存储于数据包队列中;
读取所述数据包队列中的所述画面数据包进行解码,得到每一帧画面对应的画面帧数据;以及
加载所述画面帧数据至目标渲染工具中以形成动图画面帧。
2.根据权利要求1所述的动图播放方法,其特征在于,所述解析所述目标网络请求以获取动图画面数据进行缓存包括:
为所述目标网络请求中的每一动图资源总链接建立独立文件夹和独立信息描述文件;
为画面播放索引文件中的每一切片文件创建切片下载描述信息,并将每一切片下载描述信息存储至所述独立信息描述文件中;
下载所述画面播放索引文件中的每一切片文件,并且更新每一切片文件对应的切片下载描述信息。
3.根据权利要求2所述的动图播放方法,其特征在于,在所述将每一切片下载描述信息存储至所述独立信息描述文件中之后,所述方法还包括:
为每一切片文件中的连续画面数据创建独立数据信息实体,所述独立数据信息实体用于记录文件偏移量和所述独立数据信息实体的关系。
4.根据权利要求1所述的动图播放方法,其特征在于,所述加载所述画面帧数据至目标渲染工具中以形成动图画面帧包括:
响应于动图渲染指令获取所述画面帧数据中的媒体类型压缩样本;
加载所述媒体类型压缩样本至目标渲染工具中以形成动图画面帧。
5.根据权利要求4所述的动图播放方法,其特征在于,在所述响应于动图渲染指令获取所述画面帧数据中的媒体类型压缩样本之后,所述方法还包括:
提取所述媒体类型压缩样本中的像素解码数据;
加载所述像素解码数据至目标渲染工具中以形成动图画面帧。
6.根据权利要求4所述的动图播放方法,其特征在于,在所述加载所述画面帧数据至目标渲染工具中以形成动图画面帧之前,包括:
响应于所述动图渲染指令执行所述拦截目标网络请求的步骤至所述读取所述数据包队列中的所述画面数据包进行解码,得到每一帧画面对应的画面帧数据的步骤。
7.根据权利要求3所述的动图播放方法,其特征在于,在所述加载所述画面帧数据至目标渲染工具中以形成动图画面帧之后,所述方法还包括:
对形成的多个动图画面帧进行逐一顺序播放。
8.一种动图播放装置,其特征在于,包括:
请求拦截模块,用于拦截目标网络请求;
数据缓存模块,用于解析所述目标网络请求以获取动图画面数据进行缓存;
解封装模块,用于基于所述动图画面数据形成每一帧画面对应的画面数据包并将所述画面数据包存储于数据包队列中;
数据解码模块,用于读取所述数据包队列中的所述画面数据包进行解码,得到每一帧画面对应的画面帧数据;以及
动图形成模块,用于加载所述画面帧数据至目标渲染工具中以形成动图画面帧。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,其上存储有用于动图播放的可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
10.一种非暂时性机器可读存储介质,其上存储有用于动图播放的可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410585440.1A CN120935399A (zh) | 2024-05-11 | 2024-05-11 | 动图播放方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202410585440.1A CN120935399A (zh) | 2024-05-11 | 2024-05-11 | 动图播放方法、装置、电子设备及存储介质 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120935399A true CN120935399A (zh) | 2025-11-11 |
Family
ID=97580896
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202410585440.1A Pending CN120935399A (zh) | 2024-05-11 | 2024-05-11 | 动图播放方法、装置、电子设备及存储介质 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120935399A (zh) |
-
2024
- 2024-05-11 CN CN202410585440.1A patent/CN120935399A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111277869B (zh) | 视频播放方法、装置、设备和存储介质 | |
| US10645405B2 (en) | Script-based video rendering | |
| CN109840879B (zh) | 图像渲染方法、装置、计算机存储介质及终端 | |
| CN110784750B (zh) | 视频播放方法、装置及计算机设备 | |
| US10791160B2 (en) | Method and apparatus for cloud streaming service | |
| CN111669645B (zh) | 视频的播放方法、装置、电子设备及存储介质 | |
| US10419798B2 (en) | Method and apparatus for just-in-time transcoding | |
| US8706803B1 (en) | Client-side generation of preliminary version of network page | |
| WO2021233123A1 (zh) | 视频处理方法、装置、计算机设备和存储介质 | |
| US12210558B2 (en) | Multimedia file storage and access method | |
| US20220256226A1 (en) | Video data processing method, electronic device and computer-readable medium | |
| CN115460183A (zh) | 基于浏览器的流媒体数据播放方法、装置及相关设备 | |
| CN114040245A (zh) | 视频播放方法、装置、计算机存储介质和电子设备 | |
| CN111356023B (zh) | 播放方式确定方法及装置 | |
| CN105992018B (zh) | 流媒体转码方法和装置 | |
| CN120935399A (zh) | 动图播放方法、装置、电子设备及存储介质 | |
| CN111447490A (zh) | 流媒体文件处理方法及装置 | |
| CN114979719B (zh) | 视频播放方法、装置、介质和电子设备 | |
| US20230239328A1 (en) | Computer implemented method for processing streaming requests and responses | |
| CN119402708A (zh) | 视频文件的传输方法、装置、设备及可读存储介质 | |
| US10938939B2 (en) | Client-side quality-of-service (QOS) for viewing of adaptive bitrate (ABR) streams | |
| HK40023559B (zh) | 视频播放方法、装置、设备和存储介质 | |
| HK40023559A (zh) | 视频播放方法、装置、设备和存储介质 | |
| CN117241091A (zh) | 用于处理图像解码数据的方法、装置及计算机可读介质 | |
| CN119402706A (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 |