前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PAG 4.2 版本正式发布:新增 3D 图层与视频替换能力,大幅优化 UI 播放性能

PAG 4.2 版本正式发布:新增 3D 图层与视频替换能力,大幅优化 UI 播放性能

作者头像
陈仁健
发布于 2023-04-18 03:40:39
发布于 2023-04-18 03:40:39
2K0
举报

PAG 4.2 版本在以下几个层面进行了完善:AE 特性支持方面,新增支持了 3D 图层、色相/饱和度、亮度和对比度;推出了全新的 UI 场景播放组件 PAGImageView,相比之前方案可以大幅降低 70% 以上的内存和 28.6% ~ 41.6% 的 CPU 占用;针对音视频的垂直使用场景,增加了内置的占位图替换视频、音频播放及导出视频文件的能力;针对素材防盗用的需求推出了 PAG 素材加密的能力。

4.2 版本主要修改内容

AE 特性新增支持

● 3D 图层 (3D Layer)

● 色相/饱和度(Hue/Saturation)

● 亮度和对比度(Brightness & Contrast)

接口新增

● 新增 PAGImageView 类:针对 UI 场景设计的专用播放组件,基于图片解码器+磁盘缓存模式,能够避免 OpenGL 跟 UI 视图桥接的额外开销,大幅降低内存和 CPU 占用。

● 新增 PAGDecoder 类:支持通过 PAGFile 或 组合的 PAGComposition 创建,将 PAG 当作标准图片解码器使用,快捷获取某一帧的渲染内容。

● PAGSurface 类:新增 copyPixelsTo 接口,支持将 PAGSurface 渲染的像素内容拷贝至业务方给定的内存地址。

能力新增

● 占位图替换视频,视频文件可以像普通图片一样一键替换到指定的占位图上,快速实现视频模板能力。

● 导出视频文件,替换占位图或修改文本之后的 PAG 动效可以快速导出成视频文件。

● 音频播放,内置音频播放能力,包含 PAG 素材自带的音频以及用户替换的视频包含的音频轨道。

● 素材加密播放,支持通过桌面 PAGViewer 工具加密后的 PAG 素材进行授权播放。

能力优化

● 文本渲染支持含有多个 unicode 的 emoji 表情 (Android 端需要使用带 -harfbuzz 后缀的版本)。

● DisplacementMap 现已支持所有图层类型,不限制用于 BMP 预合成图层。

● PAGView 首帧播放渲染优化,避免出现首帧跳帧的情况。

● 优化存在多个图层交错引用同一个 BMP 预合成情况下的播放卡顿问题。

桌面端配套工具

● macOS 平台导出插件和桌面预览工具全面支持苹果 M1 芯片架构。

● 桌面端预览工具支持素材加密以及批量添加水印的能力。

4.2 版本主要功能解读

AE 特性新增支持

● 3D 图层 (3D Layer)

3D 图层的支持使得 3D 特效不再需要通过 BMP 预合成导出折衷实现,从而可以矢量导出特效素材,降低特效文件的大小以及提升渲染的性能,同时支持 3D 图层中的文本和占位图二次编辑,更好的发挥设计师的创意。

● 色相/饱和度(Hue/Saturation)

● 亮度和对比度(Brightness & Contrast)

色相/饱和度、亮度和对比度的支持, 使得占位图支持更丰富的颜色调节能力,替换占位图后这些效果也将得到保留,用户素材与整个素材色调和谐统一,为设计师提供了更多可发挥的空间。

全新 UI 场景播放组件

从 4.2 版本开始增加了针对 UI 场景的专用播放组件 PAGImageView,可以有效绕开 GPU 实时渲染方案在 UI 场景下劣势。尤其是对 UI 列表或同一页面中同时播放多个 PAG 文件的场景(如下图),可以显著降低内存占用同时提升渲染性能。其主要原理是充分利用了磁盘缓存,在渲染当前帧的同时,也将当前帧的渲染数据缓存到本地。单个动效文件在整个生命周期中用户只会看到一次短暂基于 GPU 实时渲染的画面,后续都是直接读取高速的磁盘缓存来呈现,并且即使重启 App 后缓存也仍然有效。从而降低整个渲染过程中因为 GPU 实时渲染而引入的额外基础开销。另外由于 PAGImageView 跟 UI 框架之间并没有 GPU 桥接层,天然的能够高性能混合,也就无需处理任何额外的合并播放逻辑。

性能数据

测试条件:

机型:iOS:iPhone 12 Pro,

          Android:三星 S21

测试方法:进入一个空白页面记录起始内存,然后添加多个 View,记录稳定后的内存,得到内存增量和 CPU 占用。

从上图的测试数据可以看出,iOS / Android 平台在 UI 场景中渲染数量众多的独立 View 时,使用 PAGImageView 相对于之前 PAGView 的方案,以同时渲染 20 个为例(渲染效果如上),内存占用分别减少了 89.1%、75.5%, CPU 相比之减少了 41.2%、28.6%。如果渲染场景对于清晰度要求不高,还可以通过 setRenderScale 降低缓存尺寸,进一步降低内存和 CPU 占用,当 RenderScale 为 0.5 时,相比之前内存占用减少了 96%、84.8%, CPU 减少了 65.7%、42.9%。优化非常显著。

除此之外, PAGImageView 还提供了开启全内存缓存的开关,针对一些极度流畅但对分辨率又不高的动效内容,可以使用这种模式将所有帧数据缓存至内存,实现极低的 CPU 占用率,适用于对于 CPU 占用要求较高且渲染尺寸较小的场景,如上表中 PAGImageView 全内存缓存模式下,渲染 5 个、10 个 和 20 个 iOS 平台的 CPU 占用分别为 4%、6%、11%, Android 端分别为 4%、5%、5%。刨除 App 本身的基础 CPU 占用,可以看到随着动画个数的增长 CPU 占用的增量几乎没有变化。

这里需要说明一下内存增量的测试方法,由于 OpenGL 环境一旦执行,系统可能会缓存对应的动态库和运行环境以加速后续的调用。这部分内存增量虽然无法释放,但它并不会跟随动画数量线性增长,而且会跟 App 中其他 OpenGL 模块共享占用。因此为了更加准确地反映真实使用场景中的实际内存增量,在测试过程中我们需要在首次文件缓存完成后杀掉 App,重启 App 再播放动画查看内存占用,这样得到的才是排除 OpenGL 环境缓存后的实际内存增量。

以上测试主要针对 PAG 在 UI 播放的场景下的对比数据,但如果是非 UI 场景下播放,例如视频编辑处理,要实时渲染海量的同屏动效素材,使用 PAGView 合并渲染仍然是最优的方案。另外 PAGImageView 在极大分辨率的渲染场景下也会有劣势,虽然可以通过 renderScale 提升性能,但是也降低了清晰度,而 PAGView 在保持清晰度的前提下,渲染大分辨率动画的性能还是更加优异。可以根据具体的业务需求特点进行选择使用。

开箱即用视频模板能力

PAG 诞生之初就是为了解决音视频编辑场景下的复杂动效渲染需求,并提供了相关接口可以便捷地与原生视频渲染链路相整合。但从原理上 PAG 本身并不是音视频编辑框也不包含对应处理能力,它只负责通用动效素材的渲染和还原。在各种垂直的使用场景下,需要业务方自己开发对应的业务框架或者接入行业里成熟的解决方案搭配使用。但这部分的研发工作对大部分业务来说还是太过复杂,例如常见的视频模板相关功能,不仅需要理解跨平台的 GPU 渲染框架,同时处理海量的硬件兼容性问题。

针对这块的业务痛点,从 4.2 版本我们也开始探索将部分垂直使用场景的需求进行开箱即用的封装。我们首次在 PAG 内提供了视频模板处理能力的 PAGMovie 模块,包含占位图一键替换视频,音频播放,以及导出视频等完整的能力。这个模块整体上基于已在腾讯系产品中广泛使用的成熟音视频框架 TAVMedia,并进行了精简抽离。接入后除了可以显著降低从头研发音视频处理能力的成本外,内置到 PAG 的使用模式也极大简化了接口调用的复杂度。让业务方可以无需关心底层复杂的音视频处理细节,像操作图片库一样轻松完成视频模板相关的需求。

● 占位图替换视频

占位图替换视频功能允许业务方直接将视频文件替换到图片图层中。替换时,SDK 支持设置视频的速度,音量,截取时间范围等参数,满足接入方对视频细粒度的修改。同时,通过结合导出插件在 AE 中设置的 TimeRemap 参数,视频可以一键应用各种 PAG 时间特效,完成视频定格、慢放、快放、巡回等等视频效果。

● 内置音频播放

在之前的版本中,音频播放需要业务方读取 PAG 素材中的 PCM 音频数据自己处理音频播放与音画同步。在 4.2 版本中,我们内部实现了音频播放的能力,支持通过 PAGView 播放动画的同时播放音效,且支持占位图中传入的视频中的音频也可以和 PAG 素材中的音频相混合。

● 导出视频文件

4.2 版本支持了 PAGComposition 的导出功能。当接入方编辑完PAGComposition后,可以直接将 PAGComposition 导出成视频,极大地减少接入方开发成本。在导出时,音视频轨道会分别异步导出,从而尽可能利用设备的硬件条件,保证整体导出效率。

官方素材加密能力

随着 PAG 接入的业务方数量日益增多和素材格式的广泛普及,素材的安全性也变得越来越重要。第三方通过 hook 等技术手段,可以很轻松盗取业务方耗费大量人力设计出来的通用 PAG 素材。为此,我们在 4.2 版本中也开始提供了第一方的素材加密保护能力,为业务提供法务途径之外的有效技术保护手段。业务团队目前也可以基于 PAG 开源的代码自行加密素材,但都没法做到有效的保护。核心原因是无法绕过内存抓取这个最大的漏洞。业务的加密手段无论再复杂,都还是需要在内存解密后再依赖开源 SDK 渲染,第三方只需要 hook 开源 SDK 里解码函数的对应指针地址,就可以无视任何加密手段,直接提取内存中解密后的素材文件。而 PAG 官方提供的素材加密模块确保了渲染过程中都不存在解密后的文件,也完全无法再次被编码成 PAG 文件。从源头上彻底杜绝了内存抓取的问题

新增商业化版本

参考行业里成熟且活跃维护的开源项目,无一例外背后都有完善的商业化体系支撑。只有充分商业化开源项目,才可能有更多的资源持续投入到免费功能的迭代以及社区用户对接中。因此 PAG 团队也将从 4.2 版本开始逐步探索最合适自身的配套商业化路径,整体策略会在开源免费版本的基础上,额外为更多的重度使用场景提供高阶的增值技术能力和服务。目前 PAG 的桌面预览工具和 AE 导出插件仍然完全免费,而 PAG SDK 从 4.2 版本开始将会提供两个版本:

社区版完全开源免费,采用 Apache 2.0 协议,可以自由商用,社区版只专注于通用的动效渲染还原以及动效文件格式的标准化,并针对动效播放等轻度使用场景提供开箱即用的支持。历史已有的开源免费能力都包含其中,未来也都不会转为付费,而且后续还会不断更新 AE 新特性支持。

企业版付费授权使用,在通用功能的基础上会持续增加一些针对重度使用场景的高阶能力封装,例如开箱即用的视频模板相关能力,以及素材加密等。业务侧选购后除了能显著减少自行封装实现的大量研发成本外,还可以获得官方团队一对一的即时技术支持服务,加速产品需求的高效落地。

社区版和企业版详细的功能对比可以点击阅读原文访问 PAG 官网。

总结

PAG 4.2 版本新增支持了大家需求比较强烈的 3D 图层,针对需要同时播放多个 PAG 动效的 UI 及列表场景进行了优化,同时在视频后编辑和素材加密等垂直领域进行了封装,满足特定场景的用户需求。PAG 4.3 版本我们将会针对 PAG 素材中的 BMP 预合成做磁盘缓存,进一步优化 PAG 在 UI 场景的性能,同时也会支持更多的 AE 特性。

微信公众号:PAG 动效

 已正式开源

 Github地址:https://github.com/Tencent/libpag

 如果想了解、接入 PAG,欢迎访问 PAG 的官网或微信公众号

 PAG 官网:https://pag.art/

 加入 QQ 群进行用户交流&官方互动:893379574

 PAG 动效经验交流可访问官方论坛:https://bbs.pag.art/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PAG动效 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
运维体系之做好一个纽带(下)
系统的优化比较常见,一般是更改配置文件,使得服务可以承接更多并发,可以抗更多压力。
用户1348170
2021/07/09
4680
做运维的感悟(做运维需要考虑事,运维组织结构,运维学习地图....)
不过大公司会专门做某一部分,例如应用运维不需要关注测试和安全等方面,但建议都学学,触类旁通有好处。 有这些基础,进到公司就可以去完成基础的建设工作了。比如会安排你搭建服务,整理资产报表,清理一些日志,这些基本工作可以帮助你了解公司当前有哪些服务,各种服务之间是如何运作的,之后再慢慢参与到业务中,薪资一线城市可以达到6-10k左右。
iginkgo18
2020/12/23
6.7K0
做运维的感悟(做运维需要考虑事,运维组织结构,运维学习地图....)
运维人必看:DeepSeek如何落地运维场景
作为一名运维工程师,你是否正在寻找一种更智能、更高效的方式来管理复杂的IT基础设施?DeepSeek(或类似AI工具)可能是你的答案。今天,我们将深入探讨如何将DeepSeek融入运维工作,并提供多个实际场景的详细解决方案。
lyb-geek
2025/03/06
1.5K0
运维人必看:DeepSeek如何落地运维场景
自动化运维中的脚本管理和工单管理
蓝色的部分是我们已有的部分,另外的部分是我们当时做得不好的地方。 当然这个过程说起来都是辛酸泪。都是一点一滴的改进。
jeanron100
2018/08/22
3K1
自动化运维中的脚本管理和工单管理
运维规范:线上故障处理的流程模板
建立专门的应急群,将这些事故产品的关键角色纳入其中,当有故障发生时会第一时间在群通报。
星哥玩云
2022/06/21
3.2K0
运维规范:线上故障处理的流程模板
统一运维平台建设的一些思路和实践
企业构建一站式运维平台的目的是为了提升运维效率。那么一个成熟的运维系统应该要解决哪些问题呢?笔者认为首先是运维对象要被管理起来,然后是监控这些对象,接着是这些对象的自动化运维,最后是所有的运维操作都要有所规范。概括起来对应的系统就是CMDB、统一监控、自动化平台、ITSM,如下图所示。
用户1107783
2023/10/31
1.3K0
统一运维平台建设的一些思路和实践
Zabbix与乐维监控对比分析(八)——其他功能篇
前面我们详细介绍了Zabbix与乐维监控的架构与性能、Agent管理、自动发现、权限管理、对象管理、告警管理、可视化、图形图表及网络功能方面的对比分析,接下来我们将对二者其他功能进行对比分析。
乐维_lwops
2023/01/13
3460
Zabbix与乐维监控对比分析(八)——其他功能篇
工单管理模块建设思路
工单是运维工作里面的硬通货,在多年之前我们口口相传,no 工单,no work,但是似乎在很多公司里面对于工单的管理都不够给力或者给予的重视程度有一些落差。
jeanron100
2018/08/22
2.2K0
深度好文-饿了么进化史(你一定会有收获)
大家都知道这两年饿了么的发展迅速,作为一名运维人员如果你工作在饿了么,你可曾这样分析过?之前分享过一篇关于饿了么的文章。 大家好,首先,先简单介绍下自己,我是徐巍,目前在饿了么负责基础设施的运维及开发工作,早些年就职于PPTV、携程、游族等公司,也算是一个运维的老兵了。饿了么成立于2008年,2014年底开始迎来业务的大规模爆发性增长,2015-2016年饿了么进入高速发展期,业务和服务器的增长都在数十倍的规模,这种大规模的增长必然带来很多挑战,本文将通过饿了么运维基础设施的进化史和大家分享不同时期应
老七Linux
2018/05/31
2.6K0
运维体系之做好一个纽带(上)
运维的工作通常是针对现有系统的,例如服务器、在运行的服务、监控、添加白名单、添加权限等等,是宽泛而繁琐的,少有建设性的内容。
用户1348170
2021/07/09
6370
IT运维支持如何转化为服务
关于IT服务能力的介绍,本期标题中主动式、可量化、构建IT运营服务三个关键词概括了我对IT服务能力的理解,其中IT运营服务在上一篇《IT运营转型中的ITOM》作了一些分析,本篇从ITIL、ISO20000、ITSS方法论对服务做补充。另外,IT服务能力主要以ITSM方式提供IT服务,关于ITSM的实现方式在之前关于servicenow的文档中也作了介绍,本篇不介绍在ITSM上的服务具体实现,而是从主动式、可量化两个角度进行扩展。
彭华盛
2020/03/06
1.8K0
YesDev多功能项目协作,推荐一款简易强大的研发协同工具
YesDev是一款简易强大的研发协同工具,可以帮助每一个团队,提升产品研发效能,结合敏捷开发和DevOps双引擎,实现研发全流程扁平化协作和闭环管理,解码研发“黑洞”。它的作用和价值是帮助每一个产品研发团队,持续、稳定、高效交付更有价值的软件!
dogstar
2023/01/14
1K0
YesDev多功能项目协作,推荐一款简易强大的研发协同工具
【重磅】大众点评运维架构图文详解 @高效运维
本文根据高效运维系列群「运维讲坛」的嘉宾分享整理而成。运维讲坛,邀请国内运维领域优秀技术专家作为分享嘉宾,其中线上分享每周一次,线下沙龙活动每月一次。欢迎点击上面蓝字,关注“高效运维”公众号以了解更多运维讲坛活动、第一时间查阅原创文章,请参见文末。 本次运维讲坛线上分享沙龙活动,特别感谢群友@陶豆及华三通信(H3C)。H3C连续多年在网络市场国内和全球的份额名列前茅,服务于国内百行百业。涉及领域包括数据中心交换、路由产品、SDN、Overlay、NFV等;长期合作伙伴包括3BAT、京东和小米等。 编辑 •
小小科
2018/05/02
2.5K0
【重磅】大众点评运维架构图文详解 @高效运维
普元DevOps平台的安全可靠设计
普元DevOps平台覆盖从需求到运维,力求帮助团队提升工作效率、保障系统质量。在安全可靠层面,平台需要考虑自身如何跨环境且流程合规,还需保障所生产的软件的安全可靠。
yuanyi928
2019/10/31
8470
曾老湿带你了解运维需求-实现自动化运维平台
1)崩溃率:通过分析日志(底层Logstash将日志导入到数据库中),实时获取日志的状态码,计算出4xx,5xx的状态,和当前日志总量相比,得出结果,通过获取数据库中的数据,以画图的形式展示在页面中。
DriverZeng
2022/10/31
7460
曾老湿带你了解运维需求-实现自动化运维平台
运维不仅仅是 Linux,居然还要知道这么多?
运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,向windows运维人员致敬。 当然我们这篇文章不是说运维除了懂Linux,还要懂Windows,而是涉及运维的其他方方面面。 如:环境部署、排错和调优、备份、高可用和集群、监控告警、安全和审计、自动化和DevOps、虚拟化和云服务。 环境部署 一开始这个世界是开发的,然后才是运维的。 开发实现产品逻辑,将产品开发完成后,然后提交运维进行部署。此时允许就需要准备好部署环境,如部署在Linux服务器上,安装相应的软件,如Apache、Ng
码云Gitee
2018/03/29
1.1K0
运维不仅仅是 Linux,居然还要知道这么多?
基于Jira的运维发布平台的设计与实现
环节看似简单,但是中间其实是有断层的。一般企业在走上线流程都是通过一些公共渠道,比如邮件、钉钉、飞书的流程,这些都很难和运维执行上线发布平台进行关联上,而且也不够直观。所以我们就需要解决以下几个问题:
没有故事的陈师傅
2021/06/24
1.6K0
基于Jira的运维发布平台的设计与实现
必看,运维还要懂这么多?
听说你精通运维?Apache、Nginx、tomcat、vmstat、iftop、awk、sed、sar、iostat、LVS、HA-proxy、MHA、Zookeeper、Zabbix、Nagios、Cacti、Prometheus、shell、python、go、rundeck、ansible、saltstack、puppet、chef、cobbler、fabric、docker、Moby, kubernetes 了解一下?
zhangdd
2018/08/01
6390
运维不简单
好长一段时间没有更新公众号,回忆当初开这个公众号的初衷是为了将工作中一些零散的知识点汇总整合,形成为一个相对完整的知识体系。客观的讲,通过总结一些工作心得,让自己的运维知识体系的建设有些效果。年初与一个行业大牛的朋友交流时,在听到他年轻时在思科的一些关于将工作方法升华为方法论,比如“监、管、控”、“新网点”理念,并推动整个行业建设时为之一震。这个触动让我有了让自己的运维知识体系建设做第一次飞跃的打算,即如何将知识体系通过一个主线串起来。关于这个主线,找过一些朋友做了交流,比如“风险可控”、“一体化”、“更高效更优化的资源配置”、“可扩展性”。由于自己主要身处一线运维团队,所以选了“可扩展性”的主线,接下来打算根据这条主线,不断完善知识体系,目标是体系化的整理知识体系,主要从组织、流程、工具的可持续整合。
彭华盛
2020/03/06
1.6K1
AI不是来抢饭碗的,它是来帮咱运维“抄作业”的!
可别怕,咱今天就来聊聊“人工智能”怎么在这事上帮我们一把。别误会,AI不是来抢你饭碗的,它是来“帮你整理饭桌”的。
Echo_Wish
2025/05/19
570
AI不是来抢饭碗的,它是来帮咱运维“抄作业”的!
推荐阅读
相关推荐
运维体系之做好一个纽带(下)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档