直播动画框架探索

2022-12-13 18:57:38 浏览数 (2)

目录

直播动画框架探索

方案对比

动画库对比


直播动画框架探索

方案对比

方案

优点

缺点

帧动画OpenGL

实现简单

播放图片资源占用高;

属性动画

资源占用小

1. 播放图片资源占用高; 2. 实现难度大,实现效率低;

GIF

实现简单

1. 播放图片资源占用高; 2. 资源文件包比较大; 3. 效果不是很好(只支持8位颜色)

webp

1. 实现简单; 2. 相对GIF,资源文件包变小;

1. 播放图片资源占用高

动画库

1. 一套引擎,三端公用; 2. 一套协议,三端各自实现

动画库对比

动画库

Lottie

SVGA

支持平台

Android/iOS/Web

Android/iOS/Web

设计工具支持

After Effects

AE & Flash

导出工具

插件

插件

资源包大小zip

2.6M

767k

优点

三端可用自行缓存不需要二次开发

资源包小测试工具齐全三端可用Protobuf 序列化结构数据格式,传递效率比xml,json 更高

缺点

资源包相较SVGA而言会大一倍多

每个礼物播放时都去重新解压,需要自行实现一套缓存策略svga 用zlib打包,不方便解压和追踪包内容。

实现方式

一层一层完全按照设计工具的设计思路来进行还原,将动画脚本导出并解析。动画脚本非常的轻量。将所有的动画拆成多个层级,每个层级layer都有一个动画配置,播放时解析多个layer的配置,并给每个layer做相应的动画。也达到了图片可以复用。当需要解析高阶插值(二次线性方程,贝塞尔曲线方程)时,性能相对而言差一点。

一帧一帧通过设置帧率,来生成一个配置文件,使得每一帧都有一个配置,每一帧都是关键帧,通过帧率去刷每一帧的画面,这个思路跟gif很像,但是通过配置使得动画过程中图片都可以得到复用。性能就提升上来了。并且不用解析高阶插值(二次线性方程,贝塞尔曲线方程)

官网

地址

地址

官网地址地址

结论:

直播场景下(动画时间短,播放频率高),主要考虑资源占用: Lottle 因为要在绘制时间计算一些高阶曲线导致绘制效率比较低,并且动画资源文件比较大; SVGA动画资源更小,由于是一帧一帧绘制,并且复用图片,所以在直播场景下资源占用更加小;

最终选用SVGA。

0 人点赞