强!腾讯开源的kotlin高性能特效动画组件!

2023-06-03 0 564

先看呵呵效用展现:

强!腾讯开源的kotlin高性能特效动画组件!

强!腾讯开源的kotlin高性能特效动画组件!

1. VAP

VAP(Video Animation Player)是北极熊电竞合作开发,用作播映酷炫动画电影的同时实现计划。

较之Webp, ApngZopfli计划,具备高位元率(片断更小)、硬体音频(解码更慢)的缺点较之Lottie,能同时实现更繁杂的动画电影效用(比如说光子特技) 所以VAP还能在动画电影中带入自订的特性(比如说使用者中文名称, 肖像)

2. 工程项目大背景

北极熊电竞是个现场直播网络平台,须要在北京人民广播电台里表明酷炫的赠礼动画电影。

动画电影越酷炫,对片断大小不一与音频操控性明确要求越高,考察了许多计划,先给对照表:

强!腾讯开源的kotlin高性能特效动画组件!

测试参数:

手机: 小米mix3片断: 736 × 576 80帧Apng: 75质量; Webp: 75质量; VAP: 2000码率考察计划:

1.矢量动画电影计划(代表Lottie): Lottie矢量动画电影位元率很高,但因为无法表明特殊效用(比如说光子特技),所以此计划不适合;

2.Zopfli计划(代表GIF, Apng, Webp):

GIF: 只支持8位颜色,颜色丢失严重,音频操控性低,无法满足特技效用;Apng, Webp: 能够满足特技效用,但文件大,软解效率低(低端的手机上,比如说当年的红米1,音频过程甚至能导致整个现场直播间卡顿),这些问题很难接受;

3.视频计划(代表mp4): 采用H264编码,较之Zopfli计划,有很高的位元率,硬体音频效率很高,缺点很明显,无法支持透明大背景;

考察后发现,要么特技表现无法达到明确要求(Lottie, GIF),要么文件太大所以还是软解(Webp, Apng),要么不支持透明度(mp4),这些计划都不能满足我们的需求,高效能动画电影模块VAP诞生。

3. 同时实现原理

计划选择

mp4视频计划无论从效用、大小不一与音频操控性上都是最优的,但H264的里存的是YUV数据,并没有带透明通道。VAP计划基于mp4,解决视频里透明度的问题,这样就能兼具更好的压缩效率,与更好的音频操控性。

视频透明度同时实现

H264音频出来每一帧的数据是YUV,转换为RGB后是不带Alpha通道的,而我们可以在视频中额外开辟一块区域,在RGB通道里存储Alpha的值,最后利用OpenGL将这些数据合成为ARGB图像(带透明通道的图像)。

举个例子,音频器音频出一帧原始图像后,合成原理如图所示: 

强!腾讯开源的kotlin高性能特效动画组件!

每一帧都做相同的事情,就是得到带透明度的视频,实际视频如下:原始视频中,黑白区域承载Alpha数据。VAP最新版本里同时实现了Alpha区域大小不一可变,通过缩小Alpha区域大小不一,在不影响最终表明效用的同时,能有效减少视频分辨率,提高机型兼容性,所以为VAP的融合特性空余出多余的区域。

动画电影配置信息

动画电影播映过程中,须要一些配置信息协助播映(比如说Alpha区域声明,包括融合动画电影信息),配置是JSON格式。为了模块更方便使用,所有相关文件都合并到mp4文件里,这样播映动画电影只须要一个mp4文件即可。

mp4的组织方式与JSON的key-value组织方式很像,被称为一个BOX,我们创建一个新的BOX(vapc VAP Config),JSON内容放到这个BOX里,播映前先读取此BOX然后播映(ps: mp4规范里定义如果无法识别的BOX自动忽略,不影响mp4正常播映流程)。

强!腾讯开源的kotlin高性能特效动画组件!

VAP融合动画电影

VAP还支持在动画电影中带入自订特性,比如说使用者中文名称, 肖像。我们称其为VAP融合动画电影。

视频内容无法直接同时实现特性的插入,只能曲线救国,通过对特性图片进行修剪,欺骗使用者的眼睛,让其看起来像是在视频内容里,同时实现最终的融合效用(效用如文章开头展现)。

为同时实现特性图片处理,须要引入“遮罩”片断,利用遮罩与特性图片进行Porter-Duff操作,就能得到须要的形状 

强!腾讯开源的kotlin高性能特效动画组件!

再将结果贴到视频对应坐标位置,就能同时实现最后的融合效用。

“遮罩”片断保存在每一帧视频内容里,之前通过缩小Aplha区域,空出来的区域得到利用。

配套工具

为大家更方便的使用模块,还有配套的片断制作工具

强!腾讯开源的kotlin高性能特效动画组件!

工程项目地址

开放源码地址:https://github.com/Tencent/vap

———-  END  ———-

重磅!BATcoder技术交流群已成立!BATcoder是Android进阶三部曲番外篇,会以视频形式分享给大家。Android合作开发可扫码添加皇叔微信!记得备注:BATcoder,可更慢被通过且邀请进群强!腾讯开源的kotlin高性能特效动画组件!▲长按加群

推荐阅读

• 刘望舒的自我救赎

• 耗时2年,Android进阶三部曲第三部《Android进阶指北》出版!

• 『BATcoder』视频分享安卓应用合作开发如何高效学习系统底层原理

• 『BATcoder』是时候安装Ubuntu了!

•  写一本技术书到底有多赚?实话告诉你200万轻轻松松!

最近写了一套 6000 页的 Java 学习手册,以及珍藏四本 Java 人必读4大神器,分享到知乎已经 3 万赞了!

每篇文章图文并茂,附有源码。还有电子书合集强!腾讯开源的kotlin高性能特效动画组件!

如果你想获得完整PDF可以通过以下方式获得

资料

GitHub实验室即可领取

GitHub实验室002

强!腾讯开源的kotlin高性能特效动画组件!

明天见(。・ω・。)

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务