一、GIF动画
一种无损压缩的8位图像文件。大多用于网络传输上,速度要比传输其他格式的图像文件快,但不能用于存储真彩的图像文件。
优点:
兼容性好,播放简单,可以多平台支持。
缺点:
1、GIF格式仅支持 8 位,也就是256种不同的颜色会有色彩失真,所以效果差
2、动画文件大,播放资源内存、CPU占用高。
二、序列帧动画
PNG序列帧就是把一张一张的PNG图片按照顺序播放,跟GIF相比不会产生边缘锯齿的效果,也比GIF支持的色彩范围大。
优点:
1、制作方便简单,还原度高,颜色偏差损失基本没有(PNG图片压缩可能会有颜色偏差)。
2、可以通过代码控制动画的播放、停止、循环、播放速度等。
缺点:
需要加载全部图片,文件占用内存大,内存一大就容易造成打开页面的时候卡顿,大的文件用户体验感很差。
三、SVGA动画
Svga背后的故事:https://jianshu.com/p/dfa16d9d67cd
官方网站:https://svga.dev/svga-preview.html
官方插件:https://svga.dev/designer.html
官方文章:https://svga.dev/article.html
优点:
1、跨平台、开源:同时兼容 iOS / Android / Flutter / Web 多个平台的动画格式。SVGA的转换器和播放器都开源。
2、设计简单:使用设计师工具,可以轻松的将 Aep 或 Fla 格式的动画文件导出成 SVGA 格式资源文件。动画设计师通过工具输出 svga 动画文件,提供给开发工程师在集成 svga player 之后直接使用。
3、动画文件体积小:Protobuf 序列化结构数据格式,序列化的数据体更小,传递效率比xml,json 更高
4、播放资源占用优,动画还原效果好,使用方法简便,大大提高了工作效率。
缺点:
1、有损压缩,不支持图层渐变和插件特效,有的平台并不支持Svga。
2、每个礼物播放时都去重新解压,需要改一套缓存策略
3、svga 用zlib打包(字节流数据压缩程序库),不方便解压和追踪包内容。
四、Lottie动画
Lottie是Airbnb开发的一款能够为原生应用添加动画效果的开源工具。Lottie目前提供了iOS,Android和ReactNative版本。
Lottie通过AE设计好的动画效果,通过Bodymovin插件直接导出json文件,并允许开发人员直接调用它们。Lottie库使开发人员能够实现动画效果,提升了工作效率,减少了码代码的时间。
优点:
前端可以方便地调用动画和控制动画,以减少前端码代码的时间。json文件的小,性能表现也很好。
缺点:
不支持渐变、粒子、阴影透视等效果,表达式也只支持一部分,图层命名需要英文。
五、MP4动画
优点:
1、广泛兼容性:MP4格式被几乎所有设备和平台支持,包括计算机、智能手机、平板电脑和大多数浏览器。它在播放时通常不需要额外的插件或解码器。
2、高压缩率:MP4文件通常使用H.264或H.265编码,能够在保持较好视频质量的同时,提供较高的压缩率,使文件大小相对较小,适合在网页中嵌入或通过网络传输。
3、多功能性:MP4不仅可以包含视频,还可以包含音频、字幕等多种媒体内容,适合制作包含多媒体内容的复杂动效。
4、流媒体支持:MP4格式支持流媒体传输,可以实现边下载边播放(逐帧播放),在网页或应用中使用时,用户体验较好。
缺点:
1、编辑困难:由于MP4的压缩特性,对其进行编辑和修改比较困难。每次编辑都可能导致视频质量的进一步损失。相比无损格式(如AVI),MP4的可编辑性较差。
2、不支持透明背景:MP4视频不支持透明背景,因此在需要透明效果的动效中(例如网页上的动画图标或按钮),MP4并不适用。这种情况下通常会选择其他动效类型(PS:目前已有开源的支持可插入动态元素的MP4动效播放器解决方案,如yy语音的YYEVA,字节跳动的AlphaPlayer,腾讯的vap
)。
3、文件体积仍较大:虽然MP4的压缩率较高,但对于复杂动效或高分辨率视频,文件体积仍然可能较大,可能不适合网络环境要求严格的应用。
4、浏览器兼容性问题:尽管大多数现代浏览器都支持MP4格式,但某些旧版或特定设备上的浏览器可能对MP4的某些功能支持不完善。