蓝松短视频经验分享----抠图和动画设计

短视频处理LanSoEditor-SDK之抠图和动画设计

(此介绍,是在和我们客户长期广泛交流的基础上,总结出大部分的客户使用的方法。如果您有新的思路,也可采用,毕竟我们主要是设计架构。

注释:我们的SDK每3周更新一次,以下功能是在2.8.2版本上列出的,可能不是最新的功能,请知悉;)

1,抠图类:

       抠图就是把当前画面中的某一部分轮廓提取出来,比如把画面中的人物提取出来,然后放到特定的环境中。LanSoEditor-SDK当前抠图和其他滤镜一样,是基于整个单一帧画面进行的处理,暂时没有做人脸识别,人脸检测,背景分离等人工智能类的处理。

       抠图类的滤镜有:        

l  1.1,LanSongAlphaPixelFilter滤镜: 
去除画面中绿色背景,从而把绿幕前的各种画面抠出来,常用的场景是:录制电影电视剧时, 演员在绿幕前表演,后期把绿幕扣除,把演员放到一个特定的环境中,
比如云彩上, 舞台上, 沙滩上, 高楼上等等
比如把一个表演者放到外太空的环境中。
支持实时抠图, 支持把抠图的画面叠加在其他图层中间,从而实时显示抠图后的场景;
(此滤镜需要用到绿幕, 网上有卖便宜的绿幕,但大部分用在特定的场合,比如特定的电子娱乐设备, 唱吧体验馆等场合)。          

l  1.2,LanSongAlphaWhiteFilter滤镜:  
把白色透明化, 比如人站在白墙边做各种舞蹈,把白墙透明,只保留人物,起到抠图的效果。相对扣绿色背景, 此滤镜使用场合更广泛, 毕竟白墙普遍存在,

l  1.3,LanSongMaskBlendFilter滤镜:  
把当前的画面和一张白色图片向参考, 图片的白色部分显示正常的画面,图片的透明部分, 正常的画面也透明, 从而根据图片的透明区域,来确定当前画面的区域。 从而实现扣去画面的某一部分。后期我们会增加Canvas的输入, 从而您手指滑动哪里,把哪部分透明; 图片支持图片序列, 支持动态透明。

l  1.4, 父类Layer中的二种画面裁剪:
 一种是基于XY轴的裁剪的矩形, 
另一种是:基于某个中心为原点,设置半径的裁剪;  此方法也是扣去画面的某一部分,但实现较为简单。

l  1.5,采用第三方抠图SDK:
我们的DrawPadCameraView把数据拉出来, 输入到第三方SDK中, 识别后,得到特征关键点, 根据关键点来计算出当前坐标,从而提取出特定画面。 (在合作后,由我们收取少许费用帮您集成; 也可我们提供技术支持,你们自行集成)

l  1.6,我们计划中, 有直接抠图的技术,敬请期待,或联系我们。

         

2.叠加动画:

          解释:是在一个视频的上面增加美工做的动画效果,类似直播中的刷火箭,类似舞蹈画面叠加一个桃花飘落的动画,类似增加一个闪电动画等等。     

          2.1,由于我们的SDK是基于容器和图层的架构, 类似一层一层的画面显示, 故所有的画面都可作为动画,叠加在另一个的上面。

          2.2,比较常见的动画叠加有:

l  2.2.1 MV图层叠加,
让两个视频的组合成透明视频,作为一个图层,叠加到原视频图层上,好处是:制作简单,不受限制,任何效果都可实现,调用方便。

l  2.2.2 双视频图层
让一个黑底的效果视频,融合到另一个视频中,好处是只需要一个视频, 但有些效果在融合后颜色不对。

l  2.2.3 图片图层
采用多张PNG带透明的图片,在不同的时间来切换,形成动画。好处是方便控制,清晰易懂。

l  2.2.4 Gif图层
把Gif动画直接叠加在视频上。 建议小的动画可直接叠加,大的动画会造成Gif文件过大,浪费流量。

l  2.2.5 UI图层。  
如果视频实时录制,可以把各种开源炫酷的UI动画叠加到视频中, 也可以采用Lottie(一个强大的开源库)直接把AE绘制好的动画叠加到视频中。

l  2.2.6 Canvas图层。
android的强大的绘制类Canvas,可以直接移植各种开源的canvas类过来,也可自行绘制。 Canvas图层在我们架构中是通过容器传递过来的时间戳主动绘制动画。

l  2.2.7   AE图层
我们后面计划是 优化Lottie库,让Lottie也能工作在后台, 以更方便一些动画的绘制。 采用Lottie+json的形式, 原来需要1M的效果资源,现在只需要50k甚至更少即可完成,让AE美工做好的文件, 直接导入到我们图层, 省去了工程师的移植开发过程。

3,画面本身动画:

           解释:画面本身动画,是对当前图层的画面做一些动画效果,比如灵魂出窍,从四周到中间对齐,颜色渐变,飞入,淡出,抖动,展开,滤镜渐变等;这些动画,本质是对画面的每一帧做相关的操作;每一帧都操作了,随着时间戳连贯起来,就形成了动画。

              3.1我们的父类Layer提供了10种的画面操作方法,这些方法可单独使用,也可多个一起使用,比如旋转着进入到容器中,是设置旋转+移动的两个方法;

               3.2比如灵魂出窍, 是把当前画面克隆出一个子画面,对子画面做淡出+缩放的操作形成的效果。

               3.3比如展开/闭合,是对画面逐渐做区域显示,然后显示到最大/最小。

               3.4比如抖动, 是对每帧画面做左右的位置移动,间隔很小的移动, 就形成了抖动。

               3.5有些滤镜,不断调节他们的参数值,也可以实现动画效果。比如GPUImageSwirlFilter,调节setRadius半径,可以实现把画面卷起来的效果(有举例)。

               3.6另外,视频图层和音频容器,支持时间静止,时间拉伸,时间重复,调用这些也可以实现效果。 视频画面的倒序是另外一个单独类实现。

 

posted @ 2018-03-22 09:09  GuobaPlayer  阅读(755)  评论(0编辑  收藏  举报