Android学习——VAP源码

2021-06-07  本文已影响0人  callme大帅

一、背景介绍

1. VAP(Video Animation Player)是直播中台使用的一个视频动画特效SDK,可以通过制作Alpha通道分离的视频素材,再在客户端上通过OpenGL ES重新实现Alpha通道和RGB通道的混合,从而实现在端上播放带透明通道的视频。

已经接入的app

image

同原理实现也用在其他app

 抖音、西瓜视频、今日头条、爱奇艺、比心等
2. 方案对比

目前较常见的动画实现方案有帧动画、gif/webp、lottie/SVGA,对于复杂动画特效的实现做个简单对比

方案 文件大小 解码方式 特效支持 应用表现
Lottie/SVGA 无法导出 软解 部分复杂特效不支持 绘制耗时,内存抖动
gif/webp 4.6M 软解 只支持8位色彩 文件资源消耗大
apng 10.6M 软解 全支持 资源消耗大
vap 1.5M 硬解码 全支持 性能好,复杂动画支持好
3. 运行效果
image
4. 本文主要内容

主要介绍VAP如何实现,从MediaCodec视频解码到OpenGL ES 渲染RGB及Alpha通道,最后输出到TextureView上。

二、VAP实现架构

1. 需要的技术
2. 实现流程图
image
image
3. 整体工作流程

为了方便查看各个类的职责及顺序执行的流程,这里用泳道图:

image
image

三、其他


完结,撒花🎉

上一篇 下一篇

猜你喜欢

热点阅读