PAG动画研究

news2025/5/10 2:16:57

阅读文章大约需要6分钟

一、什么是PAG

官方定义:PAG(Portable Animated Graphics) 是一套完整的动画工作流。提供从AE导出插件,到桌面预览工具PAGViewer,再到各端的跨平台渲染 SDK。

image.png

二、PAG的优势

1、动画文件小,解码速度快
  • 相比Lottie的json数据,PAG借鉴SWF开源文件格式,采用二进制数据结构,压缩效率更高,解码速度更快,可单文件交付的优势。
  • 文件大小,PAG利用动画文件特点,获得极高压缩率,跳过大量默认存储,使用比特位紧凑存储,相同动画内容比同类型方案平均减少50%左右的文件大小。性能方面,PAG实时渲染性能可以达到lottie的1.5~2.5倍。
2、AE特性支持
  • Lottie仅支持矢量导出,矢量主动只能实现AE特性的一个子集。
  • PAG不仅矢量导出支持更多AE特性,还引入视频序列结合矢量混合导出功能,实现AE特性同时,保持动画运行的可编辑性。
3、配套工具全,支持实时预览
  • 不同Lottie、SVGA, PAG动画渲染绘制是C++层实现的,自研2D图形渲染库,不依赖平台渲染接口,实现各平台渲染一致性。
  • 桌面预览工具PAGViewer确保了渲染结果和移动端一致,方便设计师看到移动端效果。同时提供性能检测面板,帮助工程师根据素材量化性能指标优化。

三、实验分析

实验一:小礼物-真机
环境
  • 测试文件:勋章动画
  • 测试设备:华为p30
  • 性能检测工具:adb、as profiler
性能数据
指标\类型pagsvgaMP4
文件大小402kb509kb1462kb
内存大小11M20M10M
cpu占比50% - 70%30% - 45%25 - 35%
FPS卡顿率0.6% - 1%2% - 3%7 - 10%
结论
  • PAG相对SVGA和MP4,CPU占比较高,其它方面表现都较好。官方支持组件在文件格式、UI渲染、缓存机制等方面实现较好。
实验二:小礼物-模拟器
环境
  • 测试文件:勋章动画
  • 测试设备:雷电模拟器
  • 性能检测工具:adb、as profiler
性能数据
指标\类型pagsvgaMP4
文件大小402kb509kb1462kb
内存大小11M21M9M
cpu占比18% - 22%9% - 14%25 - 30%
FPS卡顿率0.7% - 1%0.8% - 1.2%20% - 22%
结论
  • pag 各项指标表现不错,相对真机cpu降了些,部分高级编辑功能不支持,多个播放,无明显异常。
  • svga 内存多,其它表现不错,多个播放,内存翻倍。
  • MP4 文件大,FPS卡顿严重,cpu占比高,内存较少,多个播放,无明显异常。
实验三:大礼物
环境
  • 测试文件:大动画(mp4文件大小3M、pag文件大小4M)
  • 测试设备:华为p30、雷电模拟器
  • 性能检测工具:adb、as profiler
现象
  • 礼物动画,模拟器pag超过5个会卡死,mp4超过6个会卡死,华为p30真机能正常播。
结论
  • pag对cpu占用多些,会引起手机发烫,模拟器cpu占用比真机稍好。
  • 对内存消耗少些,不容易被系统杀死,卡顿差不多,渲染好些但cpu占用多些。

总结

  • 从性能上说,pag和MP4、svga等动画方案相比性能各有优缺,如果是少量动画文件,既不会负载cpu,内存和渲染又比较好,pag性能还是比较好的。可以多往实用场景、功能性、跨平台、可维护性考虑。
  • PAG提供了一套简化并完善的动画工作流,在缩小体积的情况,仍然支持所有AE特性,并保留了动画运行可编辑灵活性。仅需接入一次,设计师可快速上手使用高效组件,不再因研发成本消弱呈现效果。

相关链接

官网

https://pag.art/

源码地址

https://github.com/Tencent/libpag/tree/main/android

资料

https://cloud.tencent.com/developer/article/2023747

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计工程车辆动力电池管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【DevOps实战系列】第四章:详解Jenkins搭建及使用

个人亲自录制全套DevOps系列实战教程 :手把手教你玩转DevOps全栈技术 Jenkins概述 根据jenkins官网对自己的描述,它是一个可集成有1800插件的自动化服务, 提供构建、部署和自动化的工程,可以说是opsdev的大总管,将开发…

zabbix部署+报警模块+图形模块+管理模块+添加监控模板

目录 安装zabbix 部署zabbix 配置zabbix 1. 修改语言 2. 监控linux端 3. 修改中文乱码 报警功能 报警音报警 邮件报警 脚本报警 邮件通知内容 图形模块 创建图形 创建聚合图形 percona mysql模板 nginx模板 克隆主机 网络发现 自动注册 主被动模式 🍁如果对你有帮助…

Vue + Element-ui实现后台管理系统---项目搭建 + ⾸⻚布局实现

目录:导读 项目搭建 ⾸⻚布局实现 一、项目搭建 1、环境搭建 2、项目初期搭建 二、Main.vue 三、左侧栏部分(CommonAside.vue) 四、header部分(CommonHeader.vue) 五、Home.vue 写在最后 项目搭建 ⾸⻚布局实现 这篇主要讲解 项目搭建 后台⾸⻚布局实现…

Oracle项目管理之设施与资产管理Facilities and Asset(中文)

目录 维护管理 独立或集成 设施状况评估 空间管理 租赁管理 交易管理 资产组合管理 投资组合管理能力 可持续性和能源管理 单一综合设施和资产生命周期管理 Oracle Primavera Unifier 设施与资产管理是一个功能强大且易于使用的解决方案,用于管理您的财产…

第九章服务器内部转发和客户端重定向

文章目录为什么需要转发和重定向服务器内部转发客户端重定向重定向的相关的状态码对比转发和重定向的应用场景为什么需要转发和重定向 发一个请求给Servlet,接力棒就传递到了Servlet手中。而绝大部分情况下,Servlet不能独自完成一切,需要把接…

云原生之使用docker部署qbittorrent

云原生之使用docker部署qbittorrent一、qbittorrent介绍二、检查本地docker状态三、下载qbittorrent四、部署qbittorrent1.创建数据目录2.创建qbittorrent容器3.查看qbittorrent容器状态五、访问qbittorrent1.进入qbittorrent 登录页2.进入qbittorrent 首页六、qbittorrent的基…

在 Vue 中,使用 $attrs 构建高级组件

我们来看下 Vue3 中的 $attrs 属性。首先,我们会介绍它的用途以及它的实现与 Vue2 有哪些不两同点,并通过事例来加深对它的理解。 真正理解了 $attrs 属性有助于我们构建易于使用和可扩展的高级组件 什么是 $attrs 对 $attrs 定义, Vue2 与…

百亿诈骗案频出,欧科云链用“技术责任”拓宽Web3安全边界

2022年12月1日,《中华人民共和国反电信网络诈骗法》正式实施,中国正式迈入“全民反诈时代”。据CNNIC和智研咨询统计显示,截至2021年12月,国内网民遭遇网络诈骗比例为16.6%,数千万人深受网络诈骗的危害。 以新兴技术区…

第05讲:Security之基于注解的用户授权

使用注解进行用户授权只需要两个步骤: 在SecurityConfig配置类上添加开启用户授权的注解EnableGlobalMethodSecurity(securedEnabled true)在需要被授权的Controller上添加授权的注解 一、新建项目,并进项相关配置 参考:第04讲&#xff1…

重大变化:Documents for Excel (GcExcel) 6.0-Crack

GrapeCity Documents for Excel,Java 版 在 Java 应用程序中以编程方式轻松生成、加载、修改和转换 Excel .xlsx 电子表格。GrapeCity Documents for Excel (GcExcel) 是一个跨平台的高速、占用空间小的电子表格 API 库,不需要依赖 Excel。使用此电子表…

《山本耀司》- 我不烦你,请你也不要来烦我

《山本耀司: 我投下一枚炸弹》 关于作者 山本耀司是时尚界日本新浪潮的新掌门 人,与川久保玲、三宅一生并称日本时尚 界的三驾马车,同时也是20世纪80年代闯 入巴黎时装舞台的先锋派人物之一。他的设计以黑色为主色调,奔放且宽松,…

Mac环境编译安装tesseract-4.1.1

Mojave 编译安装 tesseract-4.1.1 前言 顺便学习下Python,尝试使用Python3安装tesseract进行文字识别,结果踩了好深一个坑,特此记念…… 好多坑,好多坑…… 参考彭世瑜的这一篇:https://blog.csdn.net/mouday/arti…

一起从零开始学VUE(15)初识VUE3

创建Vue3.0工程 使用vue cli 需要保证vue的版本在4.5以上使用vite创建——新一代前端构建工具 开发环境中&#xff0c;无需打包操作&#xff0c;可快速的冷启动轻量快速的热重载HMR真正的按需编译&#xff0c;不再等待整个应用编译完成 步骤 创建工程 npm init vite-app <…

docker安装达梦数据库最佳实践

达蒙数据库 数据库安装部署 下载地址&#xff1a;产品下载 | 达梦数据库 安装博客地址&#xff1a;安装前准备 | 达梦技术文档 到官网docker部署那一章节&#xff0c;下载镜像tar包&#xff0c;上传到服务器上后&#xff0c;运行下面的命令 docker安装启动脚本&#xff1a;…

window10录屏怎么录?看完这篇文章,快速掌握

Windows系统的电脑用户有不少&#xff0c;有时我们需要录制屏幕与朋友分享电脑屏幕上的内容&#xff0c;windows10录屏怎么录&#xff1f;其实windows10录屏的操作很简单&#xff0c;今天小编就和大家分享详细的windows10录屏的操作步骤。 一、使用QQ对windows10录屏 很多小伙…

java计算机毕业设计基于安卓Android的跨校区班车乘车预约系统APP

项目介绍 网络的广泛应用给生活带来了十分的便利。所以把班车乘车预约与现在网络相结合,利用java 技术建设班车乘车预约APP,实现谷惠农产品线上销售的信息化。则对于进一步提高乘车发展,班车乘车预约经验能起到不少的促进作用。 班车乘车预约APP能够通过互联网得到广泛的、全面…

SSM整合xml方式(精简版)

注&#xff1a;本次只介绍ssm整合的核心部分&#xff0c;不重要的部分进行了省略 1、maven核心依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2…

BEPUphysicsint碰撞事件详解

上一节我们給大家介绍了BEPUphysicsint的基本使用,在游戏开发中我们经常要使用物理引擎的事件&#xff0c;所以本节我们详细的讲解BEPUphysicsint 的物理事件。此物理引擎会产生了碰撞事件与非碰撞事件&#xff0c;碰撞事件大家好理解&#xff0c;非碰撞事件例如: 物理Entity的…

携程季报图解:营收69亿同比增29% 净利为2.45亿

雷递网 雷建平 12月15日携程集团有限公司&#xff08;纳斯达克&#xff1a;TCOM&#xff1b;香港联交所&#xff1a;9961&#xff09;今日发布财报。财报显示&#xff0c;携程2022年第三季度营收为69亿元&#xff0c;同比增长29%&#xff1b;净利润为2.45亿元&#xff1b;经调整…