NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

AirBnb 开源动画引擎 Lottie:采用 Core Animation 提高性能

  • 2022-12-29
    北京
  • 本文字数:941 字

    阅读完需:约 3 分钟

AirBnb开源动画引擎Lottie:采用Core Animation提高性能

AirBnb宣布了其开源矢量动画引擎 Lottie 的第四次主要迭代。AirBnb iOS 工程师 Cal Stephens 表示,由于采用了核心动画(Core Animation),Lottie 4.0 提供了显著的性能改进,并降低了 CPU 负载。

 

Lottie 是一个用于 iOS 和 Android 的库,可以实时渲染 After Effects 动画。Lottie 中的动画是通过 JSON 文件描述的,可以使用Bodymovin插件从 After Effects 中导出。Lottie 将对 JSON 进行解码,并访问渲染动画所需的所有资源,就像它只是应用程序中的另一个静态资源一样。

 

在 Lottie 4.0 中,AirBnb 放弃了使用CADisplayLink在主 CPU 线程上制作图形动画的原始方法:

 

每帧一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容。这意味着动画在播放时将消耗 5–20%以上的 CPU,从而减少了用于应用程序其余部分的可用 CPU 周期。

 

根据 Stephens 的说法,这使得 Lottie 在更复杂的情况下无法维持所需的帧速并且开始丢弃帧会变得相对常见。此外,当主线程忙于一些昂贵的任务时,动画可能会出现一些抖动。

 

切换到核心动画(Core Animation)意味着动画被卸载到 GPU 上,这有三个好处:利用硬件加速,减少 CPU 负载,并在 CPU 繁忙时提高帧速。

 

例如,Airbnb 应用程序在首次启动时显示 Lottie 动画。我们在这里进行了一项实验,发现切换到新的渲染引擎可以缩短应用程序的总启动时间,同时还可以提高启动动画的帧速和用户体验。

 

除了新的基于核心动画(Core Animation)的渲染引擎外,Lottie 4.0 还带来了一种新的文件格式,它使用压缩将一个或多个 Lottie JSON 文件及其相关资源聚合到一个文件中。JSON 解码管道已被重写,速度提高了约 2 倍。

 

Lottie 最初是用 Objective-C 编写的,两年前在 Swift 中被完全重写,最终发布了第 3 版。你可以从GitHub repo或使用包管理器(如 CocoaPods、Carthage 或 Swift 包管理器)安装它。

 

作者简介:

Sergio De Simone 是一名软件工程师。Sergio 已经在一系列不同的项目和公司担任软件工程师超过 15 年,其中包括西门子、惠普和小型创业公司等不同的工作环境。在过去的几年里,他一直专注于移动平台和相关技术的开发。他目前就职于 BigML,Inc.,负责 iOS 和 OS X 的开发。

 

原文链接:

https://www.infoq.com/news/2022/12/airbnb-lottie-4/


相关阅读:

React 源码解读之 React Fiber

虚拟角色赛道的新“闯入者”:3D 引擎 Cocos 和它的新故事

2022-12-29 08:007565

评论

发布
暂无评论
发现更多内容

开源一夏 |我在滴滴做开源

石臻臻的杂货铺

开源 8月月更

融云「音视频架构实践」技术专场【内含完整PPT】

融云 RongCloud

音视频技术

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

Java全栈架构师

程序员 程序人生 jdk源码 Java 面试 架构师

完整的搭建内网穿透ngrok详细教程(有图有真相)

Geek_32c728

签约计划第三季

豆瓣评分9.0,“Linux命令行”经典巨著升级版上市了!

图灵教育

国内首发可视化智能调优平台,小龙带你玩转KeenTune UI

OpenAnolis小助手

开源 龙蜥社区 sig KeenTune 一键式性能调优

带你了解什么是 Web3.0

liuzhen007

Web 3.0

详谈RDMA技术原理和三种实现方式

C++后台开发

网络协议 C/C++后台开发 C/C++开发 RDMA技术 以太网

为何微博又双叒叕崩溃了?

华仔

CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统

华为云开发者联盟

IoT 华为云 冷链

绝无此例!用实例演示如何使用Spring搭建微服务框架

Java永远的神

spring 面试 微服务 springboot SpringCloud

浅谈Service Mesh对业务系统的价值

HelloGeek

微服务 云原生 server mesh 微服务治理

酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式

StarRocks

基于Java的插件化集成项目实践

阿提说说

微服务 插件化

「一篇终结JVM」:Java面试必问十个JVM核心知识点梳理

Java全栈架构师

Java 程序员 面试 程序人生 JVM

【技术白皮书】第一章:OCR智能文字识别新发展——深度学习的文本信息抽取

合合技术团队

自然语言处理 深度学习 AI OCR 信息抽取

基于云ModelArts的PPO算法玩“超级马里奥兄弟”【华为云至简致远】

科技怪咖

技术干货|如何将 Pulsar 数据快速且无缝接入 Apache Doris

SelectDB

数据库 Doris pulsar 数据导入 kafaka

出海季,互联网出海锦囊之本地化

融云 RongCloud

元宇宙 IT业界

2021年数据泄露成本报告解读

SEAL安全

DevSecOps 数据安全 混合云 零信任 软件供应链

从零开始搭建MySQL主从复制架构

杨杰灵

Java MySQL 主从复制

高效的组织信息共享知识库是一种宝贵的资源

Geek_da0866

关于 Intel 在 micro-vm 快速启动的探索及实例演示 | 第 36-38 期

OpenAnolis小助手

云原生 cpu 开源社区 sig 龙蜥大讲堂

不可忽略!户外LED显示屏的特点及优势

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案

ModelWhale

数据分析 代码复现 开放生态 协同软件 科研成果

视频人脸识别和图片人脸识别的关系

夏夜许游

人脸识别 视频人脸识别

面试不再被吊打!这才是Redis分布式锁的七种方案的正确打开方式

程序员小毕

Java 架构 面试 分布式 分布式锁

ICDAR比赛技术分享

之家技术

算法 人工只能 竞赛 ICDAR

如何避免无效的沟通

观测云

中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招

ToB行业头条

基于DMS的数仓智能运维服务,知多少?

华为云开发者联盟

数据库 后端 监控 智能运维

AirBnb开源动画引擎Lottie:采用Core Animation提高性能_语言 & 开发_Sergio De Simone_InfoQ精选文章