前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >动效歌词之全新实践

动效歌词之全新实践

作者头像
QQ音乐技术团队
发布于 2019-01-12 07:51:09
发布于 2019-01-12 07:51:09
2.6K20
代码可运行
举报
运行总次数:0
代码可运行

一、 背景

1. 现状

歌词浏览已经成为音乐app的标配,展示和动画效果也基本上大同小异,主要是单行的逐字染色的卡拉OK效果和多行的滚动效果。当然,我们也不例外。

2. 目标

我们的目标十分明确,一是提升歌词的基础体验,二是在此基础上,能提供差异化的VIP特效,来吸引用户开通VIP。

二、探索技术方案

经过多次的需求评审和沟通讨论,各方在需求的目标和细节上也达成了初步的统一。 产品的希望 :效果炫酷,能实现逐字动画(位移,翻转,渐隐渐现,模糊,粒子特效等),可配置等。开发的思考: 技术架构方案,性能挑战等,接下来我们简单介绍一下确定技术方案的过程。

1. 技术方案选型

这里最初的思路有两个方向,升级现有歌词组件和开发全新歌词组件。所谓知已知彼,百战不殆, 通过对移动端面主流竞品的技术方案和PC端类似方案的技术调研与分析。最终将技术方案锁定在以下三种:

  • 现有歌词组件升级
  • Shader序列帧动画
  • ASS序列帧动画

2. 备选技术方案介绍

下面简单介绍一下三种方案的原理和特点,如下表所示:

总的来说,就是在原生动画开发和帧动画方案中进行选择。

3. 技术方案对比

以下主要是从是否实现特效,开发的难度,方案的性能,实现的成本,跨平台等方面对比三种方案,具体细节如下表所示:

4. 确定方案

通过以上几个维度的综合考量:

  1. 现有歌词组件基本上无法实现逐字动画。
  2. Shader帧动画开发周期长,实现成本高,逐字动画支持不是很好。
  3. ASS实现逐字动画,可通过植入动画标签实现复杂的特效,有开源支持,且跨平台。
  4. 综上所述,ASS方案性价比最高。

最终方案也确定采用ASS序列帧动画方案。

三、 技术架构

1. ASS技术工作原理介绍

前面简单介绍了一下什么ASS字幕和帧动画的原理。我们知道ASS是一种字幕文件格式,属于高级字幕,可以制作出华丽的特效字幕。所以,要想在电影或者视频上显示ASS效果,首先要做的是编写ASS特效文件,然后再将ASS特效文件解析成序列帧动画的位图,最后将这些位图按照特定的顺序和一定的帧率进行播放,就能看到各种特效的动画。如下图所示:

2. 如何接入ASS方案

2.1 合成

如下下图所示:,首先,需要准备展示内容(字幕或者歌词内容),比如一个文本文件,有了最基本的文本文件,怎么转换成ASS解析器能解析的ASS文件呢?答案是打K值,打K值是指给字幕文件加上时间轴属性。而是什么K值呢,就是ASS中K拉OK的效果标签代码,即每行甚至每个字的时间坐标。有了打完K值的ASS文件,我们就可以在视频播放器中浏览,也就有了最基本的逐字染色动画。如果要开发更复杂的特效,就需要加入更多的特效标签。而这一部分,就可以通过脚本加上动画模板(动效模板就是具有特定动画效果的ASS文件),将动画标签注入到打完K值ASS文件中,生成最终的ASS特效文件。至此,一个具有特效的ASS文件就诞生了。

2.2 解析

解析的过程相对比较简单。解析一个ASS文件,不仅需要ASS文件本身,还需要知道ASS文件是用什么字体合成的。这里补充一下,前面合成的时候,其中的动画模板也是需要指定是使用哪种字体来合成的。因为这里会涉及到字体的大小,间距等,对动画效果和排版的影响。然后,再回到解析上来,通过ASS文件加上字体库就可以解析生成特定序列的帧动画位图。

3. 技术架构

最终方案的技术架构:功能上划分如下,后负责存储和合成;客户端负责解析和绘制,呈现用户最终的动画效果。

4. 通用性

上面提到了这套方案的通用性和易复用的特点。那除了动效歌词之外,我们还可以做些什么呢?

首先,我们脱离业务对架构进行更高一层的抽象,梳理出了更通用的架构方。这里还需要补充一点,“字体库”,从字面上理解应该是一堆字体的容器,所以字体库应该是保存了一大堆的文字信息等。但其实不仅是文字也可以是图形,所以我们的动画效果可以不只是针对文字的,还可以设计一些图形动画效果。所以,这里可以有更多的想像空间。前面解析的过程我们提到,解析出一帧帧的图,就拿去直接播放了,这样我们就能实时看到动画效果。那如果把这些图片保存下来,根据业务需求在需要的时候再播放呢。这里就可以拆分出实时渲染和离线渲染两种方案。

这里的渲染提供了两种方案:

1. 实时渲染

将解析出来的位图立即绘制到屏幕上。

适用场景:实时要求高的场景。

特点: 对系统性能消耗大,需要注意当前场景的性能开销。

2. 离线渲染

将解析出来的位图保存到磁盘上,并可以此基础上建立序列帧动画的资源管理。

适用场景:适用于异步化的场景。

特点: 建议采用异步线程在后台处理,减少对主线程消耗。

大家可以根据各自业务场景和特点灵活选择或者组合使用这两种方案。

以上主要是介绍动效歌词技术方案的实现原理与架构介绍。

四、技术难点与挑战

在开发过程中,我们遇到了两个重要的问题:一个是在运行复杂的效果时,动画效果出现了肉眼可见的卡顿;另一个则是内存的问题,即使是比较简单的效果播放以后也会占用大量的内存。本文后半部分将重点阐述K歌是如何解决这两个问题的。

1. 卡顿问题描述

我们选取了一个较为复杂的效果,包含了大量的烟雾、花瓣等动画元素 及 位移、形变与模糊等效果,它的每一帧画面约由1000个元素构成。

在三星Note 3(Android 5.0,4核,ARMv7)上运行起来平均只能达到7帧的效果。

2. 解码与渲染的过程

为了解决上述问题,我们需要对ASS由文本文件到渲染至屏幕的整个过程有基本的认识。这里以Android为例(Ios在渲染的处理上略有不同,而其它是一致的),先看JNI的接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private native int decodeFrame(long time, int[] pixels);

Java层会传入时间戮time及名为pixels的Int数组,time代表当前需要获取哪个时间点的动画效果,libass接着会对与这一时间点有关的每一行文本进行解析,生成一个或多个的小图,从而得到一系列的图片,然后合成到一个大图里面去,最终通过像素拷贝的方式把合成后的结果输出到pixels,回到Java以后,再把pixels设置至Bitmap,最后交给Canvas进行渲染。

3. 过程耗时分析

通过对各关键过程的打点并运行前述复杂效果,我们得到了各过程的耗时占比:解析46%、合成37%、输出与渲染各8%,其它1%。分解到每一帧并以毫秒计算则如下表:

接下来,我们将会按解析、合成、输出、渲染这样的顺序来逐步优化。

4. 卡顿优化实践
1)过滤透明小图

前面提到,每一行ass文本都会生成一个或多个的小图,这是因为一个文字会被拆解成文体、边框及背景三个部分,除此之外,libass并不关心这些构成部分的颜色及透明度。这就导致了这样的一个问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dialogue: 1,0:00:00.00,0:01:00.00,Default,,0,0,0,fx,{\pos(120,100)\1a&HFF&\blur3}全民K

以上ass文本所实现的是一个文字镂空效果:

1a&HFF&表示文字主体是完全透明的,而这样的一个透明的元素,libass依然会生成一个小图对它进行各种各样的处理,但这是完全没有必要的,于是我们对libass进行了第一点改造:不再生成无效的透明小图,提高ass解析效率的同时也减少了内存的分配,对后续合成的处理也有正向的影响

2)像素透明度判断

在合成的处理中,需要遍历小图的每一个像素并拆分为ARGB4个通道进行颜色的运算

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dstA = (255 * 255 - (255 - k) * (255 - dstA)) / 255; 
dstB = (k * b + (255 - k) * dstB) / 255; 
dstG = (k * g + (255 - k) * dstG) / 255; 
dstR = (k * r + (255 - k) * dstR) / 255;

与普通的图片合成不同,在歌词动效的场景中,小图由文字或点线之类的图形构成,往往存在着大量的透明像素及完全不透明像素,可通过判断来减少这部分的合成运算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(k == 0){   // 完全透明,跳过
    continue;
} if(k == 255){   // 完全不透明,直接使用小图颜色 
    dst = color; 
    continue;
}

测试了5个在K歌上线的动效,合成时间减少了10%~50%。

3)简化计算

虽然通过透明度的判断减少了一定计算,但无法完全避免。以Alpha通道的计算为例,包含了2次乘法、1次除法和3次的减法,而除法是特别耗时的。所以,对于这些必要的计算,我们进行了简化,先进行等式变换:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dstA = (255 * 255 - (255 - k) * (255 - dstA)) / 255; 
     = (255 - (255 - k) * (255 - dstA) / 255);

然后利用255 - x = ~xx / 255 ≈ x >> 8进行替换,得到简化后的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dstA = ~((~k) * (~dstA)) >> 8);

可见,一次计算变成了1次乘法与4次位运算,测得合成时间减少了26%。

4)并行计算

经过上述几项优化,合成速度快了许多,但这还不够。在合成的算法中,像素点与像素点间是没有任何联系的,所以可以通过并行计算的方式来提高合成的效率。我们采用了NEON的解决方案,利用CPU专用模块的128位寄存器同时对多个像素点进行计算,因32位色彩中ARGB各占8位,再考虑乘法处理后可能达到的16位,由此,可用128位寄存器同时处理8个像素点的计算,实现约8倍的加速效果,对CPU和帧率可起到明显的作用。 具体实现如下:

5)合成优化前后对比

至此,合成的优化告一段落,每一帧的合成耗时由原来的52ms,降到了3ms以内

6)取消像素拷贝

输出的过程实际上只是做了一次像素拷贝的操作,把合成后的大图输出到JNI传入的Int数组里面去,除了耗时以后,还会产生额外的一次Native内存分配,于是,我们优化了这个过程,让合成直接在Int数组进行,这样就把原来输出的11ms完全去掉了

前面提到,数据到了Java层,还会调用Bitmap的setPixels方法把像素信息传给Bitmap,最后才交给Canvas进行绘制,而这里的setPixels做的事跟刚刚输出的过程一样,会把像素点全都拷贝一次。所以,我们希望把这一过程的拷贝也给取消掉,但Java并没有提供接口给我们去获取Bitmap的Buffer,也就采用了反射的方案,优化后,渲染耗时降低了65%。

7)双缓冲异步渲染

我们知道,卡顿的原因在于处理一帧的耗时太久,达不到我们想要的帧率要求,那很容易会想到,我们是否可以使用多线程同时处理多帧数据呢?结果是失败了,因为libass是单例的模式,同时处理多个时间点的解析合成会导致其内部一些状态的错乱,并以crash告终。虽然解码无法使用多线程,但渲染与libass无关,还是可以拿出来放到一个单独的线程去处理的。这就引入了一个新的问题,解码与渲染两个线程都会操作同一块内存,一边在写、一边在读,数据容易出错。于是,我们多申请了一块内存,一个解码用,一个渲染用,每次解码完成时进行交换,我们的双缓冲异步渲染方案就这样出现了

这一实现让libass不需要等待渲染的完成就可以进行下一帧数据的解码,有效地提高了动效的帧率

8)卡顿优化效果汇总

经历上述各项优化后,前述复杂动效在低端机Note 3上由原来的7帧达到15帧

2. 内存问题描述

在不干预内存的情况下,在一个3分多钟的作品上播放了K歌线上的一个普通效果,期间内存的变化见下图:

内存增量达到了180M,且主要是Native层的内存,这是我们面临的一个很严重的问题,有OOM的风险,系统也有可能因此产生频繁的GC而引起卡顿

1)深入内存分配

通过对libass源码的阅读,我们了解到了更为详细的ASS解析过程

每一行动效文本在libass中被定义一个事件,先是对事件中的动画标签及参数进行解析,得到某一瞬间的所有属性值后创建文字或图形的轮廓;接着是对它进行栅格化的处理,后续还有拼接、模糊等处理,最终生成小图并进行重排,就得到了卡顿问题中所说的一系列小图。

在这样的一个过程中,内存分配主要消耗在栅格化和拼接这2个过程中,且libass内部已经实现了一套完整的缓存管理机制,只是其默认缓存较大,分别为128M和64M,总大小达到了192M,再加上些其它的内存分配,最大会占用超过200M的内存才会趋于平稳。除此之外,libass还提供了接口给我们设置缓存的大小,但只能设置总的缓存大小,不能自定义Bitmap和Composite Bitmap分别是多少,其内部会按2:1进行分配。

有了对libass的认识,内存问题也就变成了:如何寻找一个合适的缓存总大小 及 内存的2:1分配是否适合我们的场景。

2)寻找合适的缓存总大小

统计动效在一次播放的过程中查询缓存的次数M,查询后命中的次数为N,从而得到缓存命中率N/M。下图横轴表示了我们给libass设置的缓存总大小,纵轴则是2类缓存的命中率

通过上面的曲线,我们可以得到2个结论:1. 随着缓存总大小的增加,新增内存所获得的收益逐渐变小,对于K歌的场景,设置4M~16M比较合理; 2. Bitmap 与 Composite Bitmap 的分配不合理,可将更多的内存用于Composite Bitmap。

2)寻找合适的缓存比例

从K歌线上的10几个动效中,随机选取了5个,统计各个动效处理1500帧数据对2类缓存的访求并制成了表格

通过表格的数据可以看到,Composite Bitmap需要更大的缓存,平均约为Bitmap的1.8倍,于是我们把libass内2:1的分配规则调整为了1:1.8,最终使用8M的内存基本上达到了原来16M的效果

3)内存优化效果

设置缓存大小后,内存增长得到了控制且处于稳定状态;而调整分配比例提高了缓存命中率,减少了CPU在内存分配与栅格化等处理上的耗时。

小结

本文主要介绍了动效歌词开发的关键技术和优化策略。技术方案经历了数次讨论和预研,采用了并行计算大幅减少运算时间,优化了编译策略解决了跨平台问题。在架构设计上,也充分考虑性能,跨平台,可扩展,组件化,复用性等各方面的因素。在该方案的落地实现过程中,团队的John、Harvey、Wing、 Comic,、Jerry、rey等同学通力合作,付出了不懈的努力!

招聘启事

腾讯音乐技术团队诚聘研发、测试。有意者请发送简历至tmezp@tencent.com,请注明来自公众号,我们将优先拜读。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯音乐技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
强大,跟着这个做,完全解决了卡顿的现象
强大,跟着这个做,完全解决了卡顿的现象
回复回复点赞举报
卧槽 真的优秀 满满的干货!
卧槽 真的优秀 满满的干货!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践
QQ 作为国民级应用,从互联网兴起就一直陪伴着大家,是很多用户刚接触互联网就开始使用的应用。
JackJiang
2023/09/14
2.5K1
IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践
前端:浏览器、GPU 工作原理简要及动画编程启示
“ 最近作者在 VIPKID 企业内部做了一次关于‘动画增强技术方案’的分享,在原分享的基础之上,加入了对浏览器工作原理的考察,并补充动画编码启示若干,烩成此篇,欢迎讨论雅正。本文大约 3300 字。老外 2011 年写的浏览器原理,内容很丰富,单击原文可查看。”
LIYI
2019/11/18
1.8K0
前端:浏览器、GPU 工作原理简要及动画编程启示
【干货】PAG 动效组件受邀参加行业峰会,公开技术架构演进细节
腾讯 PAG 动效组件自 2022 年 1 月 14 日在 Github 上开源以来,受到了行业的广泛关注,业务接入数量也从最初的 40 个迅速扩大到超过 600+。其中不仅包含微信,手 Q,王者荣耀等腾讯系的头部业务,也包含小红书,知乎,B站,京东等大量外部的头部 App。随着业务接入方的持续增长,PAG 团队也有幸被邀请到了参加 《GMTC 全球大前端技术大会》和《LiveVideoStack 音视频技术大会》,进行动效解决方案相关的技术分享。在这里我们也将之前做的技术分享专题整理成了图文逐字稿,希望让
陈仁健
2023/04/05
2.1K0
【干货】PAG 动效组件受邀参加行业峰会,公开技术架构演进细节
PAG 4.2 版本正式发布:新增 3D 图层与视频替换能力,大幅优化 UI 播放性能
PAG 4.2 版本在以下几个层面进行了完善:AE 特性支持方面,新增支持了 3D 图层、色相/饱和度、亮度和对比度;推出了全新的 UI 场景播放组件 PAGImageView,相比之前方案可以大幅降低 70% 以上的内存和 28.6% ~ 41.6% 的 CPU 占用;针对音视频的垂直使用场景,增加了内置的占位图替换视频、音频播放及导出视频文件的能力;针对素材防盗用的需求推出了 PAG 素材加密的能力。 4.2 版本主要修改内容 AE 特性新增支持 ● 3D 图层 (3D Layer) ● 色相/饱
陈仁健
2023/04/18
2K0
PAG 4.2 版本正式发布:新增 3D 图层与视频替换能力,大幅优化 UI 播放性能
腾讯自主研发动画组件PAG开源
PAG (Portable Animated Graphics) 是一套完整的动画工作流。它提供从AE导出插件,到桌面预览工具,再到各端的跨平台渲染SDK,助力于将AE动画方便快捷的应用于各平台终端。PAG目前是公司AVGenerator OTeam开源协同小组的核心组件之一,广泛应用于公司内外40余款主流APP或业务,涵盖UI动画、视频编辑、特效模板、服务端特效渲染等多个场景,于2022年1月开源至GitHub。 PAG(Portable Animated Graphics)是腾讯自主研发的一套完整的动画
腾讯技术工程官方号
2022/01/17
4.8K0
新 QQ NT 桌面版如何实现内存优化探索?
QQ 作为国民级应用,从互联网兴起就一直陪伴着大家,是很多用户刚接触互联网就开始使用的应用。而 QQ 桌面版最近一次技术架构升级还是在移动互联网兴起之前,在多年迭代过程中,QQ 桌面版也积累了不少技术债务,随着业务的发展和技术的进步,当前的架构已经无法很好支撑对 QQ 的发展了。在 2022 年初,我们下定决心对 QQ 进行全面的技术架构升级,对于这样一个国民级应用的重构,挑战无疑是巨大的。
深度学习与Python
2023/09/08
4840
新 QQ NT 桌面版如何实现内存优化探索?
王者QQ微信都在用的动画神器要开源了:把交付时间缩短90%
给1分钟的王者“击杀”合集做一系列炫酷动画,并集成到客户端的一键战报生成功能中,需要多长时间?
量子位
2022/01/14
1.1K0
王者QQ微信都在用的动画神器要开源了:把交付时间缩短90%
岁岁年年人不同——LVS2019多媒体会议见闻(一)
2017年参加了在北京举办的第一届LiveVideoStack多媒体技术大会,去年没能参加,今年则远赴上海参加了第三届大会。会议的票价几乎每年上涨一千元,今年8月在北京还有一场,全价票已经达到了3000元的水平,令人咂舌。要不是抽到了一张免费门票,这次我大概也不会来上海参加这次会议。
灰度五十
2022/03/22
4930
岁岁年年人不同——LVS2019多媒体会议见闻(一)
消除动效研发成本:腾讯 PAG 动效解决方案
本文作者 陈仁健,腾讯 OVBU 媒资产品中心副总监,曾主导过开源 UI 框架 FlexLite 与 Egret 游戏引擎的设计研发。2018 年加入腾讯,作为腾讯多媒体技术委员会下 AVGenerator Oteam 核心 PMC 成员,持续专注在音视频编辑、图形图像特效、C++ 跨平台渲染等领域。主导研发的中台组件 PAG 动画解决方案已接入服务了 400+ 应用,包含微信、QQ、王者荣耀、小红书等头部 App,并于 2022 年 1 月正式对外开源。 T Chat|我在大厂做研发 系列直播第 16 场
LiveVideoStack
2023/05/05
1.5K0
消除动效研发成本:腾讯 PAG 动效解决方案
微信、QQ 等600+业务都在用的PAG动效方案揭秘
PAG 方案概述 诞生背景 动效内容在全行业的各个场景里都已经被广泛使用,能够显著提升用户交互的体验。但动效素材的生产流程却一直是个很大的行业痛点,主要因为在传统的工作流下,依赖研发用代码还原动效的生产方式存在巨大的瓶颈。 在传统的动效工作流中,一般是设计师先使用 AE 设计好动效,然后导出一个视频 Demo,研发再来根据 Demo 拆解动效组成并通过代码还原。这套工作流主要有以下三大核心痛点: 研发成本高:每个动效都需要研发通过代码来还原,单独排期的特效以及手工配置还原的过程,都需要大量的研发人力持续投
腾讯技术工程官方号
2023/04/10
1.2K0
微信、QQ 等600+业务都在用的PAG动效方案揭秘
动手练一练,深入学习 4 个与 Hover 相关的动效案例 (上)
大家好,本篇文章小编将和大家一起学习 4 个 Hover 相关的动效案例,这 4 个案例分别是 Anchors(链接锚点)、Tooltips(提示层)、Card Content(内容卡片)、Button(按钮)相关的 Hover 效果,由于篇幅原因,本文只介绍前两个案例。
前端达人
2022/09/06
1.5K0
动手练一练,深入学习 4 个与 Hover 相关的动效案例 (上)
产品介绍|PAG:消除动效研发成本
PAG 是腾讯多媒体技术委员会下 AVGenerator Oteam开源协同小组自主研发的一套完整的动效工作流解决方案,致力于将 AE (Adobe After Effects)动效一键导出并快捷地应用于各平台和终端。和业界常用的动效工作流解决方案相比,PAG支持的 AE 特性更多,覆盖的平台更广(Android、iOS、Web、macOS、Windows和Linux),性能方面也做了深层次的优化,支持文本和占位图编辑替换,可以与视频编辑场景紧密结合。目前已经广泛应用于公司内外几十款 APP,包含微信、手机 QQ、王者荣耀、哔哩哔哩、虎牙直播等头部 App。
陈仁健
2022/07/04
3.6K0
产品介绍|PAG:消除动效研发成本
你知道了吗?2015年网页设计的9大趋势
其实在此之前已经有很多小伙伴翻译或总结过类似文章来分析优秀网页设计的趋势,不过我还是希望我总结的东西能更宏观一点并为大家带来一些新的东西。 稍后看官们可能会觉得我说的这几点可能你们都见过或者自己也在一些项目中运用起来,没错,没见过就不叫趋势, 哈哈!而将这些东西进行总结然后运用在自己今后的设计中,这样我们才能紧跟潮流并逐渐引领潮流,否则将只是走马观花。 我们通过几个网站以及看官记忆中的网站一起探索吧,虽是管中窥豹,但趋势可见一斑! 一、平面设计在网页设计中的崛起 以前我们可能会觉得平面设计和网页设计以及UI
wangxl
2018/03/07
2K0
你知道了吗?2015年网页设计的9大趋势
Lottie : 让动画如此简单
本文介绍了在Android开发中,使用Lottie动画库实现更高效、更简洁的动画效果,同时避免了XML布局的繁琐和冗余。通过实例展示了如何在Android应用中使用Lottie动画,并总结了一些关于Lottie动画在实际应用中的使用经验和技巧。
QQ音乐技术团队
2017/09/11
29.8K4
Lottie : 让动画如此简单
过渡与动画 - 逐帧动画&steps调速函数
本文主要介绍了CSS中steps()函数和ch单位在实现动画和布局时的妙用。首先介绍了steps()函数的概念和作用,然后通过具体示例展示了如何使用steps()函数和ch单位来实现流畅的动画效果和布局。最后,还探讨了在使用steps()函数时可能遇到的问题和解决方法。
okaychen
2018/01/05
1.5K0
过渡与动画 - 逐帧动画&steps调速函数
影视级跨平台视频制作技术的落地实践
  //   编者按:近年来,视频形式的多元展现形式被更多行业所认可,视频技术在跨行业中的应用,被赋予了更多可能性与趣味性。不同行业间生产内容的多样性与差异化让视频内容升级的需求进一步提升,视杏科技作为专业的音视频技术服务商,提出了影视级的跨平台视频制作技术解决方案,并应用到了实际案例场景中。LiveVideoStackCon 2022音视频技术大会上海站邀请到了视杏科技的李志强老师,为我们分享影视级跨平台视频制作技术的落地实践,主要包含3个部分:1. 大背景下的痛点分析及技术解决方案;2. 应用案例效果分
LiveVideoStack
2022/08/26
7310
影视级跨平台视频制作技术的落地实践
剧情动效设计 | 天天P图迪士尼公主系列
腾讯ISUX isux.tencent.com 社交用户体验设计 近期“天天P图”合作迪士尼公主系列IP,推出“为自己加冕”的主题营销推广,从创意剧情出发,配合精致细腻的动画特效,搭建了效果华丽的自拍AR素材,受到众多用户的喜爱。本文将从剧情创意与动画设计等层面切入,与大家分享此次与迪士尼合作的案例。 Part 01 项目背景 此次合作营销的主题为“为自己加冕”,侧重表达迪士尼智慧勇敢独立的现代精神公主。与以往纯粹重美颜、美妆、装饰表达的案例不同,我们尝试通过触发剧情与闪亮的变身特效,来突
腾讯ISUX
2019/07/10
1.1K0
剧情动效设计 | 天天P图迪士尼公主系列
解决方案 | 如何在小程序端打造自己的专属短视频模板
在短视频风靡的时代,各种视频创作平台层出不穷,配套的剪辑工具也如雨后春笋般涌出,腾讯视频云团队独家首发小程序视频制作解决方案 -「腾讯微剪」,填补了小程序端相关功能的空缺,使得用户通过小程序快速进行实时视频编辑成为可能。 微剪小程序插件经过持续的功能迭代,最新版本除了支持拍摄、滤镜、特效、贴纸、音乐、文字、设置封面等视频剪辑场景基础能力外,还支持了视频模版、转场、动效、花字等高级能力,并且支持素材自定义。这篇文章就带领大家从0到1打造属于自己的专属视频模板,挖掘一下自定义模板背后的实现方案。 效果
腾讯云音视频
2021/05/13
1.9K0
【设计干货】AE 中 3D 图层动效应用及落地指南
为了让更多朋友能够了解和学习设计技巧, 我们在公众号新增一个栏目——【设计干货分享】 我们将在每月定时推出最多两期设计教程, 每期会包含具体的案例分析、设计思路和实践技巧等内容。 无论你是设计初学者还是有一定经验的设计爱好者,我们相信这些分享都能够对你的设计工作有所帮助和启发。 (素材来自网络,仅用于学习交流,侵联删) 随着互联网产品的不断发展,越来越多的产品开始在其交互设计中运用动态立体效果。如翻转卡片、立体盒子转场效果等等。让用户可以感受到更生动、更有真实立体感的交互体验。而对于动效设计师而言,上线
陈仁健
2023/05/18
2.3K0
【设计干货】AE 中 3D 图层动效应用及落地指南
动效设计原理:从卡通动画到UI动效
作者:袁骁,腾讯SNG ISUX 用户体验设计师。热衷于研究 Emotional Design和认知心理学 UI是基于静态页面来设计的,页面之间通过跳转切换。在设计过程中,设计师很重视单页的视觉效果,却经常忽略了对界面跳转的处理。这些未经处理的跳转由于没有提供足够的预期,所以用户在使用时经常会觉得困惑。与此相反,在卡通领域,由于使用了足够的动画效果,用户可以非常容易理解某个动作,即使夸张的动作也没问题。 尽管UI设计和卡通动效之间存在差异:卡通更侧重于娱乐,而用户界面却是严谨的互动式工具。但是我们还是可以借
腾讯大讲堂
2018/02/12
2.8K0
动效设计原理:从卡通动画到UI动效
推荐阅读
相关推荐
IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验