整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

js 播放 图片 序列帧

js 播放 图片 序列帧

s播放图片序列帧

1 先预加载

var load_img=[];

for(k=0;k<=16;k++){

load_img.push( '/cjsxy/images/chuanyue/'+k+'.jpg' );

}

//资源图片加载

jQuery.imgpreload(load_img, {

all: function() {

}

});

然后html

最后js定时器播放

$('.chuansuo').css('display', 'block'); i++;

if (i >=16) { $('.chuansuo').css('display', 'none'); i=0; return false; } $('.chuansuo').attr('src', "/cjsxy/images/chuanyue/" + i + ".jpg");

ss=setTimeout(chuanyue, 200); 注意的问题 尽量吧图片压缩的小一点 这样渲染速度会快

前有分享一些动效落地的方案,例如:

直播App中Android酷炫礼物动画实现方案(上篇)

动效从设计到代码-网易云音乐2018年度听歌报告的背后

干货 | 淘宝设计师谈动效的高效设计与交付

这个系列还有很多篇,可以在公众号的“干货文章”的“动效落地”专栏查看更多。


今天再给大家分享一篇关于 SVGA 的动效落地方案的干货文章,相信认真看完对你很有裨益。

转自公众号:墨染动效

作者:Tomatao_

作者站酷:https://www.zcool.com.cn/u/14129343

以下是文章内容


前言

首先想说下为啥要写这篇文章,最近接到个项目任务制作直播间礼物赠送视觉效果,由于之前没有接触过此类设计,因此在多方打听,并在网上到处探索后发现 SVGA 是个不错的选择,在与开发同学沟通并尝试了另外几种格式输出文件后,我们最终敲定了用 SVGA。

在网上搜索了很多相关资料学习,发现网上关于SVGA的资料相当少,而且很大部分还是介绍关于开发的,关于设计制作的少的可怜,这也是我打算写这篇内容的的原因,我觉得或许应该有这么一篇文章,帮助到一些正在做这个事儿的设计同学,如果有什么表达有问题的地方欢迎大家指正…


礼物动效输出方法


A:导出关键帧动画制作礼物动效

缺点:需要把图片带到安装包中,增大了安装包体积


B:使用属性动画

缺点:开发代价较大,每一套礼物动画基本都不一样,开发人员需要去细细调参,花在业务上编码的时间会变得非常有限,从代码复用率极低


C:输出GIF文件

缺点:输出效果差,并且资源占用高


D:使用SVGA

SVGA支持位图,并且输出后直接封装打包好的,直接给开发SVGA文件就OK,并且SVGA更贴合直播类应该场景,SVGA所提供的动态文本、动态图像功能都是其它库所不能提供的,在实现炫酷动画的基础上,性能表现也比较棒。

SVGA是开源工具可以跨平台使用,支持Android、iOS、React Native、Web、微信小程序,但是在微信小程序上表现会差一些。


什么是SVGA

SVGA 是由YY团队开发出来的一种跨平台的开源动画格式,同时兼容 iOS / Android / Web。SVGA 除了使用简单,性能卓越,同时让动画开发分工明确,各自专注各自的领域,大大减少动画交互的沟通成本,提升开发效率,动画设计师专注动画设计,通过工具输出svga动画文件,提供给开发工程师在集成 svga player 之后直接使用。

SVGA 不同于 Lottie,Lottie 需要在 Player 一层完整地将 After Effects 所有逻辑实现,而 SVGA 则将这些逻辑免去。也因此,SVGA 可以同时支持 Flash。SVGA 做的事情,实际上,非常简单,Converter 会负责从 Flash 或 AE 源文件中提取所有动画元素(位图、矢量),并将其在时间轴中的每帧表现(位移、缩放、旋转、透明度)导出。Player 会负责将这些信息还原至画布上。


AE基础属性制作输出 SVGA


笔者常用的动效制作软件是After Effects,因此主要讲如何通过AE制作导出SGAV动效,利用AE制作基础属性动画,基础属性动画包括(位移、缩放、旋转、透明度)。

第一步:从sketcg或者PS中将礼物和礼物效果元素切图导出,根据个人需可以将礼物拆分成几块分别导出,方便AE中制作动态效果。

第二步:将导出的切图素材导入AE中,利用AE制作基础属性动画,制作完成后结果如下

第三步:将背景隐藏在窗口-扩展中找到SVGAConverter_A

第四步:用SVGAConverter_AE插件导出SVGA文件,输出SVGA时记得把背景调成透明背景,输出后如

通过下图可以看到SVGA输出格式后文件大小仅为145KB,如果是序列帧的话文件大小高达10几M

AE预设效果制作输出 SVGA


接触过SVGA的同学应该都知道,SVGA支持位图、矢量和一些基础属性动画,很多时候我们制作礼物特效的时候,都是用自己做好的位图素材导入AE进行一些基础属性的动画制作,这次我将利用序列帧位图制作出一些更炫的礼物特效。

第一步:在AE中用预设效果制作出自己满意的礼物特效

第二步:将制作的特效动画导出序列帧,然后在将序列帧从新导回AE中,新建预合成将每一帧拼接起来,这样做的目的是因为SVGA无法识别AE的表达式和效果预设,所以我们将特效转为序列帧后在重新放进AE,序列帧是位图所以SVGA可以识别并导出特效。

第三步:接下来将制作好的序列帧预合成放置到礼物特效合成中,打开SVGA插件输出SVGA礼物特效动画


AE插件制作输出 SVGA

这次我用AK大佬的插件saber为大家做案例,saber是一款很不错的光效制作插件,也比较容易上手,视觉表现力也非常棒,本篇文章主要是将SVGA,所以就不给大家具体说明saber如果做礼物特效了。

第一步:根据礼物的轮廓利用saber插件制作出火焰燃烧效果。

第二步:和刚才所说的预设效果特效动画一样,我们通过AE将特效动画导出PNG序列帧,然后在将序列帧导回AE,并将每一帧拼接起来,这里有个小技巧给大家说下,用过saber的同学都知道saber的用法是利用AE的图层样式“屏幕”将光效合成在图里,其实saber也可以导出透明背景的PNG的,方法很简单,将saber当前图层复制一层,然后对复制出来的副本进行用亮度遮罩。

第三步:接下来将制作好的序列帧预合成放置到礼物特效合成中,打开SVGA插件输出SVGA礼物特效动画。



总结

最后聊一下关于用其他软件制作的礼物动画,根据上面所说的几种方法可以发现,我们想要在SVGA中想要得到更好的效果,就是将制作的特效输出为序列帧后在AE中重新拼接起来,换一种说法就是我们可以不仅限于AE来制作,也可以使用C4D或者其他设计软件来做,只需要我们将最终效果已序列帧的形式进行输出即可。

并且我们也可以利用关键帧、基础属性和插件相结合来做,值得注意的是如果视觉效果做的太过复杂会导致文件过大,同时也会产生性能方面的问题,在制作的过程中大家还时要把握好一个度。


参考资料:

SVGA:http://svga.io/designer.html

https://juejin.im/entry/59f1648f5188254115700ee6

https://juejin.im/entry/59f6c0ec6fb9a0451d40bfbf

https://blog.csdn.net/gutaocslg/article/details/79908414


请私信我回复“666”,为严哥打Call~,还有更多惊喜哦~

.............................................................

UI严选—越努力,越幸运

近,国家政策开始鼓励“地摊经济”,一时间各家企业平台纷纷推出地摊扶持政策,地摊概念股顺势大涨,地摊生态及配套商品也开始走俏,甚至在网络上也涌现出各种“新摊主速成攻略”,万亿的烟火经济俨然已经走上风口。

实际上,早就有人已经在网上“摆地摊”了,那就是直播带货!受到疫情的影响,线下实体纷纷停摆,直播带货受到了前所未有的追捧,企业们纷纷选择通过直播的形式,来提升品牌形象、保持与用户的互动并完成商品的销售。

那么问题就来了,在搭建直播平台或者应用的过程中,都需要关注哪些技术呢?CDN又对直播起到什么作用呢?

一个直播系统都包括什么?

通常整个直播的系统可能包括:推流端经过一次边缘节点的加速,将视频直播流推到直播中心,在直播中心完成一系列转码、截图、录制、水印等处理,然后视频流再经过CDN分发,分发到不同的播放端,播放端有不同的SDK进行秒开、弱网等优化动作。

直播系统中的推流与播放

对于视频直播来讲,最重要的两个环节,一个是推流,一个是播放。推流一般采用RTMP协议,常用的推流端包括OBS、手机APP、FFmpeg等。播放除了采用RTMP协议,还可以采用HTTP FLV和HLS协议,RTMP和HTTP FLV是流式传输,HLS是文件加速传输,常见的播放端包括:Flash / VLC / HTML5 / 手机App等等。对于阿里云直播系统来讲,大部分直播分发都是通过流式传输完成的,只有一少部分量是使用文件加速分发完成的。

流式分发与CDN直播系统

其实在直播场景中,不管是推流还是播放,流式分发都是长连接的,一场直播可能5个小时,推流在这5小时内不会中断。对于播放器来讲,服务器端获取到的是一帧一帧的音视频数据,不管是什么传输协议,都是采用FLV tag来封装。每一帧音频或者视频,都会有一个时间戳的属性。

视频直播流会传输音频帧和视频帧,对于音频帧来讲,它每一帧都可以独立解码,播放器从服务器获取到任何一帧音频帧之后,都可以独立渲染,听到声音。而视频分为视频关键帧和非关键帧,关键帧可以独立解码渲染,播放器拿到后可以直接看到画面,一般10K以上甚至几十K;其他非关键帧解码依赖于前面的一些视频帧,播放器会根据前面的帧和这一帧来解码产生画面,非关键帧一般大小是几K甚至不到1K。对于播放器来说,服务器一般会从视频关键帧开始发送,这样才不会产生花屏。

对于节点上直播服务器存储的内容,如果是文件加速,节点上存储的内容很明确,就是文件数据, URL不变的话文件数据内容也不变。但是对于直播来讲,传输的就是帧数据,缓存的也是不断变化的帧序列数据。下面的图里可以看到,当前的服务器缓存了V1-V3五帧数据,当V4这个关键帧出现了,服务器把之前的丢掉,开始缓存V4开始的音视频数据,以这个策略保证过来的播放端都是当前最新的数据。一般直播服务器都是用这个策略来进行服务器缓存的。

直播平台面临的挑战?

1、 前面也说了,直播系统包含推流、转码、分发、播放等各个环境,经历了冗长复杂的网络环境,尤其是当业务场景逐渐丰富起来之后,功能需求也越来越多2、 一些关键指标的提升,比如:卡顿率、打开速度、流畅度、回源率等,任何指标的下降都可能会导致整个应用的用户体验下降,影响直播效果3、 直播平台经常会面临业务突发,数十万甚至数百万用户的同时在线,对服务器和带宽考验十分巨大

直播平台为什么要使用CDN?

1、减少卡顿率,提升用户体验

直播,尤其是电商直播,对网络抖动十分敏感,稍有问题就会出现卡顿、花屏等问题,严重影响用户体验,甚至直接掉线影响销售。CDN借助负载均衡系统能够将内容推送到接近用户的边缘节点,使得用户就近取得资源,可以大大提升访问效率。

2、业务峰值来临的时候,为流量高峰护航

在确保直播流畅度上,全球覆盖的CDN节点和精准调度系统缺一不可。CDN节点是采用分布式架构,节点资源与带宽储备就代表了能够覆盖的用户的量级和广度。当突发峰值特别高的时候,CDN系统会确保用更精准的调度策略,比如DNS、IP调度,来降低对直播的影响。打比方有一个装了很多冰块和水的杯子,如果我们要把杯子里面的狭小空间全部用上,我们先要把冰块放进去,再倒液态水。在智能调度的场景里,把“固体”和“液体”结合起来考虑,才能做到所有的节点、水位的精准控制,实现更精准的调度。

所以,选择节点和带宽资源覆盖广泛,综合实力强,质量有保证,具备大型项目最佳实践的CDN服务提供商对直播带货平台来说至关重要。想要在云上开启“地摊经济”,阿里云CDN,了解一下~

阿里云全速重构年中大促中,CDN/全站加速、视频直播、视频点播等多款产品都推出限时折扣,点击登陆活动页面了解优惠详情