蓝松短视频SDK -android版本父类图层Layer的方法说明

蓝松短视频SDK -android版本父类图层Layer的方法说明

  • 更新日期是:20191018
  • SDK版本:3.7.0

说明

  • 蓝松短视频SDK的优势是图层容器架构, 每个资源在我们SDK里被封装为一层, 比如视频封装为视频层, 你可以放多个视频, 每放一个,就是一层, 放多个,都是多层. 每一层独立编辑.
  • 这样的图层包括: 摄像头图层, 图片图层, GIF图层, 文本图层,UI图层, 透明视频图层等等.
  • 以下是所有图层的父类支持的特性.

普通属性  

int getPadWidth()

  • 获取当前所在的容器的宽度

int getPadHeight()

  • 获取当前所在的容器的高度

int getLayerWidth()

  • 获取当前图层的宽度

int getLayerHeight()

  • 获取当前图层的高度

setVisibility(int visibility)

  • 设置当前图层是否可见,
  • 参数有: Layer.VISIBLE 可见和 Layer.INVISIBLE 不可见两种;
  • 可以在任意时刻设置.如果你对要精确到每一帧,则建议在ThreadProgress中判断图层走到什么时间,然后精确下一帧是否要显示.

int getVisibility();

  • 获取当前图层在当前时刻是否可见
  • 返回的有 Layer.VISIBLE 可见和 Layer.INVISIBLE 不可见 两种;

setDisplayTimeRange(long startUs,long endUs)

  • 设置当前图层的可视时间范围, 从什么时候开始显示,到什么不显示.
  • 单位微秒, 1秒=1000*1000微秒;

addDisplayTimeRange(long startUs,long endUs)

  • 增加一个可视范围, 可以多次增加;
  • 单位微秒,

removeAllDisplayTimeRange()

  • 移除可视范围的设置, 移除后,则完全显示;

setTAG(String flag)

  • 给当前图层对象设置一个标记,
  • 您可能在视频编辑中, 增加了很多个图层, 为了区分不同的图层, 做不同的动作, 你可以给每个图层对象设置一个String类型的标记, 以方便区分和调试.

String getTAG()

  • 获取当前图层对象的标记信息
  • 如果没有设置,则返回为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;
       float percent=progress *1.0f/100f;//百分比;
       float posX=(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(中心) 这些类型

float getPositionX()

  • 获取图层在容器中横向坐标X的位置, 浮点类型

float getPositionY()

  • 获取图层在容器中纵向坐标Y的位置, 浮点类型

setScale(float scale)

  • 设置缩放系数, 浮点类型,比如设置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是不变的.

void setScaledToPadSize()

  • 缩放到容器的宽高

float getScaleWidth()

  • 获取当前图层缩放后的具体宽度数值.比如缩放后的是540,则此返回540;

float getScaleHeight()

  • 获取当前图层缩放后的具体高度数值.比如缩放后的是960,则此返回960;

void setRotation(float angle)

  • 设置旋转角度, 浮点类型, 范围是0---360; 顺时针旋转;
  • 旋转是以图层的中心点为锚点进行旋转;
  • 我们提供了旋转动画:RotateAnimation, 设置开始时间和结束时间 旋转角度,则SDK会在此时间段内从0度旋转到您设置的角度;

float getRotation()

  • 获取当前旋转的角度;

void setRedPercent(float percent)

  • 设置当前图层画面中的RGBA中的红色分量的百分比,范围是0--1.0
  • 设置后, 画面的每个像素红色分量将变化

void setGreenPercent(float percent)

  • 设置当前图层画面中的RGBA中的绿色分量的百分比,范围是0--1.0
  • 设置后, 画面的每个像素绿色分量将变化

setBluePercent(float percent)

  • 设置当前图层画面中的RGBA中的蓝色分量的百分比,范围是0--1.0
  • 设置后, 画面的每个像素蓝色分量将变化

setAlphaPercent(float percent)

  • 设置当前图层画面中的RGBA中的透明分量的百分比,范围是0--1.0
  • 设置后, 画面的每个像素透明分量将变化

setRGBAPercent(float percent)

  • 同时设置RGB三种颜色分量的百分比, 范围是0---1.0
  • 设置后, RGB会同时变化.
  • 我们增加了透明动画:AlphaAnimation; 可以设置开始时间,总时长,开始透明度和结束透明度,从而有淡入和淡出的效果

addAnimation(Animation animation)

  • 增加一个Animation的类, 当前可以设置有 MoveAnimation,ScaleAnimation, RotateAnimation, AlphaAnimation 4个动画效果, 在后期的计划中不建议使用,建议用LanSongAnimation, 因LanSongAnimation更方便和自由, 扩展性强;

removeAnimation(Animation anim)

  • 删除一个动画对象

void removeAllAnimation()

  • 删除所有动画对象

滤镜

void switchFilterTo(LanSongFilter filter)

  • 给当前图层设置一个滤镜
  • 注意:当前我们的滤镜不支持同一个滤镜对象设置到不同的图层中, 如果你要给多个图层设置同样的对象,则可以分别创建多个滤镜对象,然后分别设置.
  • 我们提供了给每个滤镜类设置名字的方法,你可以根据滤镜名字来在设置的时候, 重新创建一个滤镜对象, 可参考我们的Demo3FilterActivity
  • 如果你要清除滤镜,则设置为null.

switchFilterList(List<LanSongFilter> 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滤镜;

cancelLayerMirror()

  • 取消设置的镜像

setMaskBitmapWithRecycle(Bitmap bmp, boolean isCycle)

  • 图片遮罩
  • 用一张图片来对照当前的画面, 图片中的透明区域, 则画面透明; 图片中不透明区域,则画面正常显示;图片可以是半透明或渐变透明等.
  • 参数:bmp 图片 (=增加的图片会直接缩放到和图层一样的大小,然后对照RGBA, 把图片的每个像素透明度设置到图层中,从而画面地方透明;
  • 参数isCycle: 图片使用后, 是否要释放;
  • 此方法不建议多次调用, 如果您调用频繁, 用LanSongMaskBlendFilter

[完]

联系我们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值