先看呵呵效用展现:
1. VAP
VAP(Video Animation Player)是北极熊电竞合作开发,用作播映酷炫动画电影的同时实现计划。
较之Webp, ApngZopfli计划,具备高位元率(片断更小)、硬体音频(解码更慢)的缺点较之Lottie,能同时实现更繁杂的动画电影效用(比如说光子特技) 所以VAP还能在动画电影中带入自订的特性(比如说使用者中文名称, 肖像)2. 工程项目大背景
北极熊电竞是个现场直播网络平台,须要在北京人民广播电台里表明酷炫的赠礼动画电影。
动画电影越酷炫,对片断大小不一与音频操控性明确要求越高,考察了许多计划,先给对照表:
测试参数:
手机: 小米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图像(带透明通道的图像)。
举个例子,音频器音频出一帧原始图像后,合成原理如图所示:
每一帧都做相同的事情,就是得到带透明度的视频,实际视频如下:原始视频中,黑白区域承载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正常播映流程)。
VAP融合动画电影VAP还支持在动画电影中带入自订特性,比如说使用者中文名称, 肖像。我们称其为VAP融合动画电影。
视频内容无法直接同时实现特性的插入,只能曲线救国,通过对特性图片进行修剪,欺骗使用者的眼睛,让其看起来像是在视频内容里,同时实现最终的融合效用(效用如文章开头展现)。
为同时实现特性图片处理,须要引入“遮罩”片断,利用遮罩与特性图片进行Porter-Duff操作,就能得到须要的形状
再将结果贴到视频对应坐标位置,就能同时实现最后的融合效用。
“遮罩”片断保存在每一帧视频内容里,之前通过缩小Aplha区域,空出来的区域得到利用。
配套工具为大家更方便的使用模块,还有配套的片断制作工具
工程项目地址开放源码地址:https://github.com/Tencent/vap
———- END ———-重磅!BATcoder技术交流群已成立!BATcoder是Android进阶三部曲番外篇,会以视频形式分享给大家。Android合作开发可扫码添加皇叔微信!记得备注:BATcoder,可更慢被通过且邀请进群▲长按加群
推荐阅读
• 刘望舒的自我救赎
• 耗时2年,Android进阶三部曲第三部《Android进阶指北》出版!
• 『BATcoder』视频分享安卓应用合作开发如何高效学习系统底层原理
最近写了一套 6000 页的 Java 学习手册,以及珍藏四本 Java 人必读4大神器,分享到知乎已经 3 万赞了!
每篇文章图文并茂,附有源码。还有电子书合集
如果你想获得完整PDF可以通过以下方式获得
资料
GitHub实验室即可领取
在GitHub实验室002
明天见(。・ω・。)