蓝松短视频SDK -android版本父类图层Layer的方法说明
更新日期是:20191018
SDK版本:3.7.0
蓝松短视频SDK的优势是图层容器架构, 每个资源在我们SDK里被封装为一层, 比如视频封装为视频层, 你可以放多个视频, 每放一个,就是一层, 放多个,都是多层. 每一层独立编辑.
这样的图层包括: 摄像头图层, 图片图层, GIF图层, 文本图层,UI图层, 透明视频图层等等.
以下是所有图层的父类支持的特性.
获取当前所在的容器的宽度
获取当前所在的容器的高度
获取当前图层的宽度
获取当前图层的高度
设置当前图层是否可见,
参数有: Layer.VISIBLE 可见和 Layer.INVISIBLE 不可见两种;
可以在任意时刻设置.如果你对要精确到每一帧,则建议在ThreadProgress中判断图层走到什么时间,然后精确下一帧是否要显示.
获取当前图层在当前时刻是否可见
返回的有 Layer.VISIBLE 可见和 Layer.INVISIBLE 不可见 两种;
setDisplayTimeRange(long startUs,long endUs)
设置当前图层的可视时间范围, 从什么时候开始显示,到什么不显示.
单位微秒, 1秒=1000*1000微秒;
addDisplayTimeRange(long startUs,long endUs)
增加一个可视范围, 可以多次增加;
单位微秒,
移除可视范围的设置, 移除后,则完全显示;
给当前图层对象设置一个标记,
您可能在视频编辑中, 增加了很多个图层, 为了区分不同的图层, 做不同的动作, 你可以给每个图层对象设置一个String类型的标记, 以方便区分和调试.
获取当前图层对象的标记信息
如果没有设置,则返回为null
void setPosition(float xpos, float ypos)
设置当前图层的位置, 此位置是中心点的位置, 注意: !!不是左上角!!
浮点类型, 容器的左上角是XY坐标是0.0;
当一个图层放到容器中, 默认位置是容器的中心点,XY坐标是:getPadWidth()/2; getPadHeight()/2
如果你要把图层移动到左上方,则设置的位置是:getLayerWidth()/2; getLayerHeight()/2;
如果你要把图层从容器的最左侧移动到最右侧消失:则android代码是(ios类似):
//容器的X坐标最左侧是0; Y坐标最上侧为0;floatpercent=progress *1.0f/100f;//百分比;floatposX=(videoLayer.getPadWidth()+videoLayer.getLayerWidth())*percent -videoLayer.getLayerWidth()/2; videoLayer.setPosition((int)posX, videoLayer.getPositionY());
我们提供了移动动画:MoveAnimation 您可以设置从什么时间开始, 什么时间结束, 开始XY坐标, 结束XY坐标;
移动的前提是您清楚的明白你的当前容器的宽高等参数.
强烈不建议设置固定值,因为预览容器有可能和后台执行容器的宽高不同.
void setPosition(LSOLayerPosition positon)
设置当前图层的位置, 枚举类型, 有LeftTop(左上), LeftBottom(左下), RightTop(右上), RightBottom(右下), Center(中心) 这些类型
获取图层在容器中横向坐标X的位置, 浮点类型
获取图层在容器中纵向坐标Y的位置, 浮点类型
设置缩放系数, 浮点类型,比如设置0.5 则宽高同时缩小一倍;设置2.0则宽高同时放大一倍
设置后, 画面在下一帧呈现效果
您可以通过getScaleWidth/Height获取当前缩放后的值
缩放后的, 通过getLayerWidth/Height是不变的.
我们提供了缩放动画:ScaleAnimation, 您可以设置开始时间和结束时间, 从几倍缩放到几倍的动画;
建议最大缩放范围是0--10. 如果您不打算显示,则可以当前不显示, 但如果您设置为0,则SDK一样会渲染当前图层,但缩放到0,是看不到的; 但如果您设置为不可见则不会渲染,从而更加节省处理时间;
setScale(float scaleWidth, float scaleHeight)
分别设置宽度和高度的缩放系数, 比如宽度放大到1.5倍, 高度放大到3.0倍等等;
设置后, 画面在下一帧呈现效果
您可以通过getScaleWidth/Height获取当前缩放后的值
缩放后的, 通过getLayerWidth/Height是不变的.
void setScaledValue(float width, float height)
缩放到实际的数值, 浮点类型,比如宽度缩放到540, 高度缩放到960等;
设置后, 画面在下一帧呈现效果
您可以通过getScaleWidth/Height获取当前缩放后的值
缩放后的, 通过getLayerWidth/Height是不变的.
缩放到容器的宽高
获取当前图层缩放后的具体宽度数值.比如缩放后的是540,则此返回540;
获取当前图层缩放后的具体高度数值.比如缩放后的是960,则此返回960;
设置旋转角度, 浮点类型, 范围是0---360; 顺时针旋转;
旋转是以图层的中心点为锚点进行旋转;
我们提供了旋转动画:RotateAnimation, 设置开始时间和结束时间 旋转角度,则SDK会在此时间段内从0度旋转到您设置的角度;
获取当前旋转的角度;
void setRedPercent(float percent)
设置当前图层画面中的RGBA中的红色分量的百分比,范围是0--1.0
设置后, 画面的每个像素红色分量将变化
void setGreenPercent(float percent)
设置当前图层画面中的RGBA中的绿色分量的百分比,范围是0--1.0
设置后, 画面的每个像素绿色分量将变化
设置当前图层画面中的RGBA中的蓝色分量的百分比,范围是0--1.0
设置后, 画面的每个像素蓝色分量将变化
setAlphaPercent(float percent)
设置当前图层画面中的RGBA中的透明分量的百分比,范围是0--1.0
设置后, 画面的每个像素透明分量将变化
同时设置RGB三种颜色分量的百分比, 范围是0---1.0
设置后, RGB会同时变化.
我们增加了透明动画:AlphaAnimation; 可以设置开始时间,总时长,开始透明度和结束透明度,从而有淡入和淡出的效果
addAnimation(Animation animation)
增加一个Animation的类, 当前可以设置有 MoveAnimation,ScaleAnimation, RotateAnimation, AlphaAnimation 4个动画效果, 在后期的计划中不建议使用,建议用LanSongAnimation, 因LanSongAnimation更方便和自由, 扩展性强;
removeAnimation(Animation anim)
删除一个动画对象
删除所有动画对象
void switchFilterTo(LanSongFilter filter)
给当前图层设置一个滤镜
注意:当前我们的滤镜不支持同一个滤镜对象设置到不同的图层中, 如果你要给多个图层设置同样的对象,则可以分别创建多个滤镜对象,然后分别设置.
我们提供了给每个滤镜类设置名字的方法,你可以根据滤镜名字来在设置的时候, 重新创建一个滤镜对象, 可参考我们的Demo3FilterActivity
如果你要清除滤镜,则设置为null.
switchFilterList(List filters)
给当前图层设置多个滤镜, 滤镜是级联的形式呈现.
即图层画面输入到滤镜1中, 处理的结果,送到到滤镜2中, 最后的滤镜, 送入到图层的RGBA和设置旋转移动缩放;
图层画面--->滤镜1--->滤镜2--->....-->滤镜N ---> 移动旋转缩放透明;
setVisibleCircle(float radius, PointF center)
设置圆形的可视区域,设置后,其他不可见为透明
参数radius为:圆的半径, 范围0--1.0f;
参数 center: 圆的中心点位置, 范围0--1.0f;, 最上角为0,0,右下角为1,1;, 居中则是new PointF(0.5f,0.5f);
setVisibleCircleeBorder(float width, float r, float g, float b,float a)
在设置setVisibleCircle后, 可以设置圆的边框的宽度, 和边框的颜色
参数 width:width 宽度,最大是1.0, 最小是0.0, 推荐是0.01f
参数rgba: 宽度的RGBA分量中的 范围是0.0f---1.0f; 比如你要设置为红色,则是1.0,0.0,0.0,1.0;
setVisibleRect(float startX, float endX, float startY,float endY)
设置可见区域, 区域为四方形, 其他不可见为透明 如果是视频区域, 则为原视频的视频画面区域,
不随裁剪的变化而变化, 最终画面的 最左侧是0.0 , 最右侧是1.0, 一直是这个百分比,和您画面裁剪等无关;
参数: startX,endX 视频的最左边是0.0, 最右边是1.0f
参数: startY,endY 视频的最上面是0.0, 最下面是1.0f
setVisibleRectBorder(float width, float r, float g, float b,float a)
当设置setVisibleRect后, 可以给矩形的周边增加一个边框;
参数:width, 边框的宽度,最大是1.0, 最小是0.0, 推荐是0.01f
参数rgba: 宽度的RGBA分量中的 范围是0.0f---1.0f; 比如你要设置为红色,则是1.0,0.0,0.0,1.0;
setLayerMirror(boolean flipH, boolean flipV)
设置图层镜像, 镜像是:最左边翻到最右边,最右边翻到最左边. 最上面和最下面翻转;
参数:flipH 是否横向镜像
参数:flipV 是否垂直镜像;
如果你要把画面从中间分为两半, 把左边的镜像到右边,则用LanSongMirrorFilter滤镜;
取消设置的镜像
setMaskBitmapWithRecycle(Bitmap bmp, boolean isCycle)
图片遮罩
用一张图片来对照当前的画面, 图片中的透明区域, 则画面透明; 图片中不透明区域,则画面正常显示;图片可以是半透明或渐变透明等.
参数:bmp 图片 (=增加的图片会直接缩放到和图层一样的大小,然后对照RGBA, 把图片的每个像素透明度设置到图层中,从而画面地方透明;
参数isCycle: 图片使用后, 是否要释放;
此方法不建议多次调用, 如果您调用频繁, 用LanSongMaskBlendFilter
[完]
eMail: support@lansongtech.com
QQ: 1852600324
网友评论