Vap 和 AlphaPlayer 的对比

date
Sep 17, 2021
slug
comparevapandalphaplayer
status
Published
tags
Animation
Android
summary
type
Post
最新:2023-07-15,可使用腾讯推出的 PAG

AlphaPlayer

来自腾讯的 Vap 和来自字节跳动的 AlphaPlayer

已知问题

Vap

添加一个 View 后,对 View 进行初始化,设置监听器、资源拉取监听后即可播放本地文件的动画。

工具资源

有图形化页面进行操作 VapTool

已知问题

  1. 可能在特殊机型上会出现色差的情况,比如:美术做出的视频效果为纯黑,但实际使用时,亮度不太相同,UI 可能会觉得有问题,但身为程序员的我没看出来……
  1. 特定机型上只能同时播放 2 个,其他手机均可同时播放 3 个「目前发现 Redmi 9T 有这个问题 系统 MIUI Global 12.0.8 Android 10」;
 
注意:同时使用 AlphaPlayer 和 Vap 时,AlphaPlayer 的资源最好不要使用非完整透明通道的视频。

AlphaPlayer

需要自己封装 View,以及接入 Exo 播放器 Json 解析(Json 文件可省,可在代码中动态配置),最终完成动画的播放,不可添加自定义资源及音频。

工具资源

AE 可直接导出带有 Alpha 通道的 mp4 文件;通过序列帧导出 mp4 文件仅提供一个 Python 版本的转换脚本

横向对比

notion image
notion image
说明
  1. mp4 文件中插入特定区域写入 Alpha 值,运行时利用 OpenGL 动态生成 ARGB 图形;
  1. 字节的 AlphaPlayer Android 端没有带有音频的测试文件,iOS 版本明确不能播放音频;
  1. 图表数据为 10 次测试产生数据取平均值单位 MB,图表源数据文件下载地址
  1. CPU 占用率均相差无几;
  1. 峰值指页面从创建到展示整个过程中的内存占用峰值;

注意事项

  1. Vap 导出动画所需的图片尺寸宽高尽量不要高于 1504,部分 Android 机器上可能导致出现绿块的问题;
  1. 同一动画文件大小的对比,仅对比 Ohla 3.0 版本登录页面动画文件大小;
  1. 画质方面,未观察出有明显差异,可下载Demo Apk 下载地址后再二次确认;
 

可能遇到的问题

  1. 无论 vap 还是 Alpha Player 的视频分辨率最好都要小于 1504;
  1. 单个 Activity 中尽可能少的存在视频播放 View,否则在部分手机上可能存在视频解码失败的问题。
  1. Vap 的封装工具可能会有导出的视频文件解析泛白的问题;
  1. 利用播放器的 endStatus 再去控制播放器可能会出现播放器资源未及时释放等问题,例如,视频播放的同时把播放器的透明度设置为 1F-0F,但是不能在播放结束后立即将播放器的透明度改为 1F,否则可能会出现页面闪烁的问题。
 

© Craig Hart 2021 - 2025