Android API
IOS API
一、视频播放LSOEditPlayer类
1public void onCreateAsync(LSORatioType ratio, OnCreateListener listener)
功能:
• 设置播放容器宽高比;
• 在Activity的 onCreate中调用,设置播放容器的宽高比, 设置后, 会根据宽高比等比例缩放到当前view所在layout中;
• 也可以在播放暂停时, 重写布局此播放容器(relayout);

参数:
• ratio 宽高比;
• listener 重新布局后, 适配到layout后的回调;
2public void onCreateAsync(List<LSOAsset> arrays, OnCreateListener listener)
功能:
• 设置播放容器的资源

参数:
• arrays 容器资源数组, 支持图片和视频.
• listener 默认会以第一个图片或视频的宽度为参考,等比例缩放当前播放容器后回调;
3public void onCreateAsync(List<LSOAsset> arrays,int width, int height, OnCreateListener listener)
功能:
• 设置播放容器资源, 并设置宽度和高度

参数:
• arrays 输入的图片或视频资源;
• width 播放容器的宽度
• height 播放容器的高度
• listener 根据设置的高度和宽度, 重新等比例布局当前view, 布局后返回监听;
4public void onCreateAsync(int width,int height, OnCreateListener listener)
功能:
• 设置容器的宽度和高度, 在播放设置, 不可以用来初始化播放器;
• 在第一次之后设置

参数:
• width 宽度
• height 高度
• listener 适配当前view后的监听;
5public void onResumeAsync(OnResumeListener listener)
功能:
• 在Activity的 onResume中调用, 用来执行activity的返回事件;

参数:
• listener 异步回调;
6public void onPause()
功能:
• 在Activity中的onPause中调用;
7public void onDestroy()
功能:
• 在Activity的onDestroy中调用
8public void prepareConcatAssets(OnAddAssetProgressListener listener)
功能:
• 在当前View布局完毕后, 准备当前播放器;

参数:
• listener 内部会开启一个线程, 内部开启完毕后的回调;
9public void insertConcatAssetAtCurrentTime(List<LSOAsset> assetArray, OnAddAssetProgressListener listener1)
功能:
• 在当前时间点插入图片或视频

参数:
• assetArray 插入的图片或视频数组
• listener1 插入完毕后的回调;
10public void insertConcatAssetWithTime(List<LSOAsset> assetArray, long atCompUs, OnAddAssetProgressListener listener1)
功能:
• 在指定的时间点插入图片或视频.
• 内部流程是:
• 先找指定时间点 在某个图层时间段内.
• 找到图层后, 如果时间点在图层前半部分,则向前插入; 如后半部分,则向后插入;

参数:
• assetArray 插入的图片或视频数组
• atCompUs 在指定的时间点
• listener1 异步插入完毕后的回调;
11public void replaceConcatLayerAsync(LSOAsset asset, LSOLayer replaceLayer, OnAddAssetProgressListener listener)
功能:
• 替换拼接图层;

参数:
• asset        资源
• replaceLayer 被替换的图层
• listener     异步替换;
12public LSOLayer getCurrentConcatLayerByTime(long compUs)
功能:
• 获取指定时间点的拼接图层

参数:
• compUs   指定时间点, 单位微秒; 1秒=1000*1000微秒
• @return 返回图层对象
13public void addAssetAsync(LSOAsset asset, long atCompUs,OnAddAssetProgressListener listener1)
功能:
• 在拼接层上叠加一个资源;

参数:
• asset 图片或视频资源
• atCompUs 指定时间点
• listener1 异步增加完毕后的回调监听;
14public void addVideoEffectAsync(LSOAsset asset, long atCompUs, boolean preview, OnAddAssetProgressListener listener1)
功能:
• 在指定时间点增加一个视频特效, 增加后, 通过异步返回一个LSOLayer对象;

参数:
• asset 一个color和一个mask组成的透明视频动画资源, 宽高:最大720p, 时长:最大5秒钟;
• atCompUs   在指定时间点
• preview   插入后, 是否预览
• listener1 插入完毕后的回调,回调中
15public LSOLayer addBitmapLayer(String path, long atCompUs)
功能:
• 在拼接层上叠加一个图片图层

参数:
• path 图片的完整路径
• atCompUs 在指定时间点增加, 单位微秒
16public LSOLayer addBitmapLayer(Bitmap bmp, long atCompUs)
功能:
• 增加图片图层,

参数:
• bmp 图片对象;
• atCompUs 在指定时间点增加,单位微秒;
17public LSOLayer addGifLayer(String gifPath, long atCompUs)
功能:
• 在拼接层上, 增加一个Gif图层

参数:
• gifPath gif图层路径
• atCompUs 在指定时间点增加,单位微秒;
18public LSOLayer addGifLayer(LSOAsset asset, long atCompUs)
功能:
• 在拼接层上, 增加一个Gif图层

参数:
• asset gif文件的路径
• atCompUs 在指定时间点增加,单位微秒;
• @return 返回LSOLayer图层对象. 此对象可设置图层的移动旋转缩放等功能.
19public LSOAudioLayer addAudioLayer(String path, long startTimeOfComp)
功能:
• 增加声音图层;

参数:
• path            声音的完整路径;
• startTimeOfComp 从合成的什么位置开始增加;
• @return 返回声音对象, 可以设置声音的音量, 循环等功能;
20public void removeLayerAsync(LSOLayer layer)
功能:
• 异步删除图层;
• 删除成功后, 会触发容器时长回调, 在回调中你可以重新布局时间轴

参数:
• layer 图层对象;
21public void removeAllOverlayLayersAsync()
功能:
• 删除所有的叠加图层.
• 叠加图层有:图片图层, gif图层, 图片序列图层等;
22public void removeAudioLayerAsync(LSOAudioLayer layer)
功能:
• 删除声音图层

参数:
• layer
23public void removeALLAudioLayer()
功能:
• 删除所有的增加的声音图层;
24public boolean isPlaying()
功能:
• 画面是否在播放

参数:
• @return 是否在播放
25public boolean isRunning()
功能:
• 当前播放器是否在运行.
• 合成是一个线程, 此返回的是当前线程是否在运行,
• 线程运行不一定画面在播放,有可能画面暂停;

参数:
• @return 线程是否在运行
26public boolean isExporting()
功能:
• 是否在导出;

参数:
• @return
27public long getCurrentPositionUs()
功能:
• 获取当前播放器的时间.

参数:
• @return 当前时间, 单位微秒
28public List<LSOLayer> getAllConcatLayers()
功能:
• 获取播放器的所有拼接图层;

参数:
• @return 图层list 拼接图层;
29public List<LSOLayer> getAllOverLayLayers()
功能:
• 获取播放器中的所有叠加层

参数:
• @return 图层数组, 叠加的图层;
30public List<LSOAudioLayer> getAllAudioLayers()
功能:
• 获取播放器中的所有声音图层
31public void setOnBeforeRenderFrameListener(OnLanSongSDKBeforeRenderFrameListener listener)
功能:
• 在每一帧绘制前的回调, 里面没有经过handler, 你增加的代码, 在我们render线程中执行,

参数:
• listener 返回的是时间戳, 单位us;
32public void setOnDurationChangedListener(OnLanSongSDKDurationChangedListener listener)
功能:
• 容器的总时长改变监听; 播放器会在拼接层裁剪, 设置显示时间, 转场,变速等场合下, 时长改变;
• 返回的是当前总时长;

参数:
• listener 总时长改变监听, 返回的long类型改变后的当前总时长
33public void setOnLanSongSDKPlayProgressListener(OnLanSongSDKPlayProgressListener listener)
功能:
• 播放进度回调
• 监听中的两个参数是: onLanSongSDKExportProgress(long ptsUs, int percent);
• 分别对应 当前处理的时间戳 和百分比;
• 在seek或pause的时候,此监听不调用;

参数:
• listener
34public void setOnTimeChangedListener(OnLanSongSDKTimeChangedListener listener)
功能:
• 容器的当前播放时间改变回调;
• 只要是改变了, 不管是seek的改变,还是自动播放的改变,都执行这里;

参数:
• listener 时间改变监听 long类型是当前时间戳, int类型是当前时间戳占总时长的百分比;
35public void setOnPlayCompletedListener(OnLanSongSDKPlayCompletedListener listener)
功能:
• 视频播放完成进度;

参数:
• listener 播放完成监听
36public void setOnExportProgressListener(OnLanSongSDKExportProgressListener listener)
功能:
• 导出进度回调;
• 监听中的两个参数是: onLanSongSDKExportProgress(long ptsUs, int percent);
• 分别对应 当前处理的时间戳 和百分比;

参数:
• listener 导出进度监听, long类型是当前正在处理的时间戳, int类型是进度百分比;
37public void setOnExportCompletedListener(OnLanSongSDKExportCompletedListener listener)
功能:
• 导出完成回调;
• 完成后, 有 void onLanSongSDKExportCompleted(String dstVideo);
• 对应的是:返回完成后的目标视频路径;

参数:
• listener   导出完成监听, 返回String类型的导出视频完整路径;
38public void setOnErrorListener(OnLanSongSDKErrorListener listener)
功能:
• 错误监听
39public boolean start()
功能:
• 开始播放/恢复播放;
40public void startExport(LSOExportType type)
功能:
• 开始导出

参数:
• type 导出枚举类型
41public void seekToTimeUs(long timeUs)
功能:
• 定位到某个位置.

参数:
• timeUs 时间, 单位微秒;
42public void pause()
功能:
• 播放预览暂停
43public long getDurationUs()
功能:
• 获取当前播放器的总时长;

参数:
@return 时间, 单位微秒;
44public void setLooping(boolean is)
功能:
• 设置容器循环播放;

参数:
• is 是否循环;
45public void cancelExport()
功能:
• 取消导出
46public void cancel()
功能:
• 取消当前合成.
• 取消后, 会把内部线程全部退出, 所有增加的图层都会释放;
47public void setFrameRate(int frameRate)
功能:
• 设置导出帧率
• 不建议使用

参数:
• frameRate 帧率最小20,最大是60
48public void setExportBitRate(int bitRate)
功能:
• 设置导出时的码率,
• 不建议使用

参数:
• bitRate 码率, 最小是300K,不建议使用;


Android视频编辑SDK概述:
1. 我们把视频编辑抽象为两个类, 一个是编辑预览类LSOEditPlayer, 一个图层类LSOLayer。
2. 播放预览类LSOEditPlayer, 是一个素材容器, 也是一个view,可布局到xml中,当设置宽高比例时,会自动适配并等比例布局播放画面,以监听返回. 可完成素材的:插入或删除,替换,拼接,叠加,定位,播放/暂停等实时容器预览的功能。

3. 图层类LSOLayer: 图片/视频/文本/特效/GIF等增加到播放器中后,我们把他处理成一层画面 ,增加一个, 就是增加一层画面;增加时会返回LSOLayer对象,用这个对象可以设置:时间点,位置,宽高,角度,镜像,倒序,滤镜,调节,美颜,动画,转场,特效等功能。

4. 调用流程是:在Activity的onCreate/onPause/onResume/onDestroy生命周期中, 分别增加LSOEditPlayer对应的同名方法即可。
5. 素材增加的形式有两种, 一种是前后拼接, 一种是上下叠加, 示意图如下:
二、视频编辑图层LSOLayer类
1public String getOriginalPath()
功能:
• 获取原视频/图片的路径

参数:
• @return
2public long getOriginalDurationUs()
功能:
• 获取视频/图片的原始时长

参数:
• @return
3public int getOriginalWidth()
功能:
• 获取原始宽度

参数:
• @return
4public int getOriginalHeight()
功能:
• 获取原始高度

参数:
• @return
5public long getDisplayDurationUs()
功能:
• 获取显示时长;
• 如果播放器中只有一个视频或图片, 则此时长等于播放器的时长;

参数:
• @return
6public long getThumbnailDurationUs()
功能:
• 获取缩略图的显示时间;
• 注: 因转场等功能,拼接层可能有重叠区域. 因此显示时长不等于缩略图的时长;

参数:
• @return
7public void setDisplayDurationUs(long durationUs)
功能:
• 设置显示时长;

参数:
• durationUs
8public long getStartTimeOfComp()
功能:
• 获取当前图层在播放器中的开始时间

参数:
• @return
9public void setCutDurationUs(long startUs, long endUs)
功能:
• 设置视频的裁剪时长

参数:
• startUs 开始裁剪时间
• endUs 结束裁剪时间
10public long getCutStartTimeUs()
功能:
• 获取裁剪开始时间

参数:
• @return
11public long getCutEndTimeUs()
功能:
• 获取裁剪结束时间

参数:
• @return
12public void setCropRect(LSORect rect)
功能:
• 设置裁剪区域;

参数:
• @param rect
13public void setCropRectToOriginal()
功能:
• 恢复到不裁剪
14public void setCropRectPercent(float x, float y, float width, float height)
功能:
• 设置裁剪百分比.整个画面从左到右是0.0--1.0; 从上到下是0.0--1.0;

参数:
• x   宽度的开始比例
• y   裁剪高的开始比例
• width 裁剪宽度的比例
• height 裁剪高度的比例
15public void setLooping(boolean is)
功能:
• 叠加层设置循环

参数:
•   is
16public void setStartTimeOfComp(long atCompUs)
功能:
• 设置当前图层在播放器中的开始时间点;

参数:
• atCompUs
17public void setVisibility(boolean is)
功能:
• 设置是否显示

参数:
• is
18public void setVisibility(int visibility)
功能:
• 设置是否显示
• 类型是 LSOLayer.VISIBLE 和 LSOLayer.INVISIBLE

参数:
• visibility
19public int getVisibility()
功能:
• 获取是否显示

参数:
• @return
20public void resetScaleSize()
功能:
• 恢复到缩放前的大小
21public void setScaleType(LSOScaleType type)
功能:
• 设置缩放枚举类型.
• NONE: 无缩放形式.则内部会根据不同的素材,采用默认形式;
• ORIGINAL: 原始大小,直接放入, 不做任意处理;
• FILL_COMPOSITION, 忽略百分比,把宽度等于容器的宽度, 高度等于容器的高度,填满整个容器,这样有些画面可能会变形;
• CROP_FILL_COMPOSITION: 裁剪填满 放入到容器中;把视频的中心点放到容器的中心点,然后 把画面等比例提填满整个容器,把多的部分裁剪掉.
• VIDEO_SCALE_TYPE:视频缩放模式,如果视频宽度大于高度, 则宽度和容器对齐, 然后等比例调整高度;如果高度大于宽度, 则反之.

参数:
• type
22public void setScaledValue(float width, float height)
功能:
• 缩放到的实际值

参数:
• width
• height
23public float getScaleWidth()
功能:
• 获取缩放的宽度

参数:
• @return
24public float getScaleHeight()
功能:
• 获取缩放的高度

参数:
• @return
25public float getRotation()
功能:
• 获取旋转角度.

参数:
• @return
26public void setRotation(float angle)
功能:
• 设置旋转角度

参数:
• angle
27public void setLayerMirror(boolean flipHorizontal, boolean flipVertical)
功能:
• 设置图层是否镜像, 上下镜像, 左右镜像.

参数:
• flipHorizontal 水平镜像
• flipVertical 垂直镜像
28public void cancelLayerMirror()
功能:
• 取消镜像
29public boolean isMirrorX()
功能:
• 水平是否镜像

参数:
• @return
30public boolean isMirrorY()
功能:
• 垂直是否镜像

参数:
• @return
31public void setPosition(float xPos, float yPos)
功能:
• 设置当前图层中心点的坐标, xPos是X轴的坐标,yPos是设置Y轴的坐标.
• 此坐标是以播放容器的大小为参考, 比如容器的大小是1280x720, 您设置了640,360 ,则图层在播放器中居中显示

参数:
• xPos
• yPos
32public void setPosition(LSOLayerPosition position)
功能:
• 设置图层的枚举位置;
• 枚举类型有: 左上/左下/右上/右下/居中/上/下/左/右
33public float getPositionX()
功能:
• 获取当前图层中心点的位置X

参数:
• @return   横向坐标中心点, 相对于播放容器本身而言;
34public float getPositionY()
功能:
• 获取当前图层中心点的位置Y

参数:
• @return 竖向坐标中心点, 相对于播放容器本身而言
35public void setOpacityPercent(float percent)
功能:
• 设置透明百分比;

参数:
• percent 百分比 范围从0--1.0;
36public void setBrightnessPercent2X(float percent2X)
功能:
• 调节当前图层画面的亮度

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
37public void setContrastFilterPercent2X(float percent2X)
功能:
• 调节当前图层画面的对比度

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
38public void setSaturationFilterPercent2X(float percent2X)
功能:
• 调节画面的饱和度;

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
39public void setWhiteBalanceFilterPercent2X(float percent2X)
功能:
• 调节画面的白平衡

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
40public void setHueFilterPercent2X(float percent2X)
功能:
• 调节画面的色度

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
41public void setExposurePercent2X(float percent2X)
功能:
• 调节画面的曝光度

参数:
• percent2X 范围是0--2.0; 1.0为默认值;
42public void setBeautyLevel(float level)
功能:
• 设置画面的磨皮级别 0.0--1.0;

参数:
• level 等级 0.0是不磨皮, 1.0是最高磨皮
43public void setFilter(LanSongFilter filter)
功能:
• 设置滤镜, 设置时, 会把上一次设置的滤镜删除; 如果不想删除则用addFilter;

参数:
• filter 滤镜对象, 此对象不可同时设置为多个图层中.
44public void removeFilter(LanSongFilter filter)
功能:
• 移出滤镜

参数:
• filter 增加的滤镜对象
45public void addFilter(LanSongFilter filter)
功能:
• 增加滤镜,如增加多个, 则多个滤镜是级联的关系, 即画面把执行上一个滤镜的结果, 作为下一个滤镜的输入;

参数:
• filter 滤镜对象
46public void removeAllFilter()
功能:
• 删除所有滤镜
47public void setVideoSpeed(float speed)
功能:
• 设置视频速度.

参数:
• speed 视频速度值, 范围0.1--10.0;
48public float getVideoSpeed()
功能:
• 获取视频速度;

参数:
• @return 返回速度值
49public void setVideoReverseAsync(boolean reverse, OnVideoReverseListener listener)
功能:
• 异步设置视频倒序

参数:
• reverse 是否倒序
• listener 倒序后的监听;
50public boolean isVideoReverse()
功能:
• 当前视频是否倒序

参数:
• @return 是否倒序
51public LSOEffect addEffectAtCompTimeUs(String jsonPath, long compUs)
功能:
• 用json的形式增加特效

参数:
• jsonPath 增加一个特效json路径
• compUs 从播放器的什么时间点开始增加
• @return 增加后, 返回特效对象, 可设置开始时间和播放时长;
52public LSOEffect addEffectAtLayerHead(String jsonPath)
功能:
• 在图层的头部增加一个特效

参数:
• jsonPath json路径
• @return 增加后, 返回特效对象, 可设置播放时长;
53public LSOEffect addEffectAtLayerEnd(String jsonPath)
功能:
• 在图层的尾部增加一个特效

参数:
• jsonPath 特效路径
• @return 增加后, 返回特效对象, 可设置播放时长;
54public List<LSOEffect> getAllEffectList()
功能:
• 获取增加的所有特效

参数:
• @return 所有特效数组
55public void removeAllEffectList()
功能:
• 移出当前图层的所有特效
56public void removeEffect(LSOEffect effect)
功能:
• 移出指定的特效

参数:
• effect
57public void playEffect(LSOEffect effect)
功能:
• 播放预览特效

参数:
• effect 指定播放的特效对象,播放后会回到播放前的位置
58public LSOAnimation addAnimationAtCompTimeUs(String jsonPath, long compUs)
功能:
• 增加动画

参数:
• jsonPath json格式的路径
• compUs 从播放器的时间点增加
• @return 返回动画对象, 可设置开始时间和播放时长
59public LSOAnimation setAnimationAtLayerHead(String jsonPath)
功能:
• 在图层的头部增加一个动画

参数:
• jsonPath json动画路径
• @return 返回动画对象, 可设置播放时长
60public LSOAnimation setAnimationAtLayerEnd(String jsonPath)
功能:
• 在图层的尾部增加一个动画

参数:
• jsonPath 动画路径
• @return 返回动画对象, 可设置播放时长
61public List<LSOAnimation> getAllAnimationList()
功能:
• 获取所有动画

参数:
• @return 所有动画对象
62public void removeAllAnimationList()
功能:
• 移出所有动画
63public void removeAnimation(LSOAnimation animation)
功能:
• 移出指定动画

参数:
• animation 指定动画对象
64public void playAnimation(LSOAnimation animation)
功能:
• 播放动画

参数:
• animation 动画对象
65public boolean setTransitionMaskPath(String maskJsonPath)
功能:
• 设置转场路径

参数:
• maskJsonPath 遮罩转场路径
• @return 可以设置返回true; 否则返回false
66public void setTransitionDurationUs(long duration)
功能:
• 设置转场时长

参数:
• duration 时长,范围100*100---3*1000*1000;
67public void playTransition()
功能:
• 开始播放转场
68public void cancelTransition()
功能:
• 取消转场
69protected long getTransitionDurationUs()
功能:
• 获取转场时长;

参数:
• @return
70public long getTransitionStartTimeOfComp()
功能:
• 获取从合成的开始时间;

参数:
• @return
71public LSOMosaicRect getMosaicRect1()
功能:
• 获取一个马赛克区域, 返回马赛克对象,
• 可设置马赛克区域, 是否禁止,马赛克像素点的宽度;

参数:
• @return 马赛克对象
72public void setAudioVolume(float volume)
功能:
• 设置音频音量
73public float getAudioVolume()
功能:
• 获取音频音量
74public void setBackGroundBlurLevel(float level)
功能:
• 设置背景模糊级别
• 1.0是轻微模糊,毛玻璃模糊. 8.0f是完全,深度模糊;   0.0是删除模糊效果;

参数:
• level
75public void setBackGroundBitmap(String bitmapPath)
功能:
• 设置背景图片

参数:
•   bitmapPath
76public void setBackGroundColor(int color)
功能:
• 设置背景颜色

参数:
• color
77public float getMaxBlurLevel()
功能:
• 获取最大模糊系数, 当前返回的是8.0;
78public void getThumbnailAsync(OnLanSongSDKThumbnailBitmapListener listener)
功能:
• 异步获取缩略图

参数:
• listener
79public List<Bitmap> getThumbnailListWithCount(int count)
功能:
• 获取缩略图个数, 此方法一定在getThumbnailAsync完成后设置

参数:
• count 获取的图片张数
• @return 返回bitmap数组;


一、视频播放LSOEditPlayer类
1- (id)initWithUrlArray:(NSArray<NSURL *> *)urlArray ratio:(LSOSizeRatio)ratio
功能:
• 初始化这个类, 可以是一个图片或一个视频, 也可以是多个视频. 可以设置这个播放器的宽高比例, 当比例是原始时, 默认用数组中第一个url的宽高为默认宽高;
• 当初始化失败后, 返回nil, 大部分是没有授权文件时会失败;

参数:
• urlArray 用户选中的视频/图片
• ratio 容器的比例, 如果原始比例, 则填入LSOSizeRatio_ORIGINAL,比例系数;
2- (void)setCompositionView:(LSODisplayView *)view;
功能:
• 增加预览的显示窗口;
• 和AVPlayer类似, 视频播放器和播放view是分开的, 你在创建好此对象后, 需要拿到对象的compositionSize,然后布局LSODisplayView, 再设置到此;
• LSODisplayView 继承自UIView,是一个显示控件;显示窗口一定要和合成(容器)的宽高成比例, 可以不相等. 我们提供最简单的集成方法, 方便您参考;

参数:
• view 显示窗口
3@property(readonly,atomic) CGFloat compDurationS
功能:
• 当前播放器的总时长.单位秒;
(当你设置每个图层的时长后, 此属性会改变. 只读, 不可写入)
4@property (nonatomic,readonly) CGSize compositionSize
功能:
• 您在init的时候, 设置的合成宽高. 或设置的比例;
• 当在运行中, 调整播放器的比例后, 此宽高是调整后的宽高
5@property (nonatomic,assign) CGFloat frameRate
功能:
• 设置帧率,
• [可选],范围是10--60
6@property (nonatomic,assign) int exportBitRate
功能:
• 设置码率, 单位字节,
• [可选],最低是300*1024
7@property(nonatomic, readonly) CGFloat currentTimeS
功能:
• 获取,当前播放的时间点,单位秒
8@property (strong,atomic, readonly) NSMutableArray *overlayLayerArray
功能:
• 当前内部有多少个叠加层;
• 如果你获取使用此变量, 则会拷贝一份新的NSMutableArray返回.
• 注意: 请不要一直拷贝
9@property (strong,atomic, readonly) NSMutableArray *concatLayerArray
功能:
当前内部有多少个拼接层;
   如果你获取使用此变量, 则会拷贝一份新的NSMutableArray返回.
注意: 请不要一直拷贝
10@property (strong,atomic, readonly) NSMutableArray *audioLayerArray
功能:
• 当前有多少个音频层;
• 如果你获取使用此变量, 则会拷贝一份新的NSMutableArray
• 注意: 请不要一直拷贝
11@property (nonatomic, readwrite) LSOLayer *selectedLayer
功能:
• 设置一个图层为选中状态;
• 当用户通过界面点击别的图层时,这个状态会被改变;
• 可以设置, 如果设置不选中, 则设置为nil
12- (void)setBackGroundVideoLayerWithURL:(NSURL *)url completedHandler:(void (^)(LSOLayer *videoLayer))handler
功能:
• 设置一个背景视频;背景视频默认循环;

参数:
• url 背景视频的路径
• handler 背景视频设置完成时的回调
13- (LSOLayer *)setBackGroundImageLayerWithImage:(UIImage *)image
功能:
• 设置一个背景图片
14- (void)removeBackGroundLayer
功能:
• 删除背景图层
15- (LSOLayer *)addVideoLayerWithURL:(NSURL *)url atTime:(CGFloat)startTimeS
功能:
• 增加一个视频叠加层. 叠加层是在拼接层的上面;

参数:
• url 视频的Url路径;
• startTimeS   atStartTime 在合成的指定时间开始增加
16- (LSOLayer *)addImageLayerWithImage:(UIImage *)image atTime:(CGFloat)startTimeS
功能:
• 叠加一张图片图层;

参数:
• image 图片对象
• startTimeS 在播放器中的开始叠加时间
17- (LSOLayer *)addGifLayerWithURL:(NSURL *)url atTime:(CGFloat)startTimeS
功能:
• 叠加一个gif图层

参数:
•   url gif的完整url路径
• startTimeS 在播放器中的开始叠加时间
18- (LSOLayer *)addMVWithColorURL:(NSURL *)colorUrl maskUrl:(NSURL *) maskUrl atTime:(CGFloat)startTimeS
功能:
• 叠加一个透明动画视频, 我们的透明动画是两个视频合并而成的. 一个是彩色视频/一个是黑白视频;

参数:
• colorUrl 透明动画视频中的彩色视频
• maskUrl 透明动画视频中的黑白视频
• startTimeS 从播放器中的开始叠加时间
19- (LSOAudioLayer *)addAudioLayerWithURL:(NSURL *)url atTime:(CGFloat)startTimeS
功能:
• 增加一个声音图层;

参数:
• url url路径
• startTimeS 开始时间
20- (void)removeAudioLayer:(LSOAudioLayer *)audioLayer
功能:
• 删除声音图层

参数:
• audioLayer 声音图层对象
21-(BOOL)setOverlayerLayerPosition:(LSOLayer *)layer index:(int)index
功能:
• 设置叠加层的位置

参数:
• layer 图层对象
• index 位置, 最里层是0
22-(BOOL)setConcatLayerPosition:(LSOLayer *)layer index:(int)index
功能:
• 设置拼接层的位置.

参数:
• layer 拼接的图层
• index 图层的index, 从前到后, 第一个层是0; 最后面的是: _concatLayerArray.count-1;
23- (CGSize)updateCompositionRatio:(LSOSizeRatio)ratio
功能:
• 设置合成的比例

参数:
• ratio 设置的比例
24- (void)prepareConcatLayerAsync:(void (^)(NSArray *layerAray))handler
功能:
• 调用流程是, 在init创建好此对象后, 在需要播放时,调用prepare内部会根据输入的图片和视频数量, 创建好对应的图层对象, 在这个handler中返回;
25- (void)insertConcatLayerWithImageArray:(NSArray<UIImage *> *)imageArray completedHandler:(void (^)(NSArray *layerAray))handler
功能:
• 增加拼接图片图层; 可以是一张图片, 或多张图片

参数:
• imageArray <#imageArray description#>
• handler 返回的layerAray :是当前新增加的图层对象数组
26- (void)insertConcatLayerWithArray:(NSArray<NSURL *> *)urlArray atTime:(CGFloat)compTimeS   completedHandler:(void (^)(NSArray *layerArray,BOOL insertBefore))handler;
功能:
• 在容器的指定位置增加资源
• 在容器的指定时间点插入, 时间点在图层前半部分,插入图层前,反之插入到图层后

参数:
• urlArray url数组
• compTimeS 在容器的指定时间点插入,
• handle 完成后的回调,是当前新增加的图层对象数组
27- (void)insertConcatLayerWitImageArray:(NSArray<UIImage *> *)imageArray atTime:(CGFloat)compTimeS   completedHandler:(void (^)(NSArray *layerArray,BOOL insertBefore))handler
功能:
• 在容器的指定位置增加图片数组

参数:
• imageArray 图片数组
• compTimeS 指定时间点插入
• handler 完成后的回调,是当前新增加的图层对象数组
28- (void)replaceConcatLayerWithLayer:(LSOLayer *)currentLayer replaceUrl:(NSURL *)url completedHandler:(void (^)(LSOLayer *replacedLayer))handler
功能:
• 替换一个图层

参数:
• currentLayer 当前要替换的图层
• url 要替换的路径 NSURL 格式
• handler 替换完成后的回调
29-(void)splitConcatLayerByTime:(CGFloat)compTimeS layer:(LSOLayer *)layer
功能:
• 分割图层

参数:
• compTimeS 从容器的相对时间点开始分割
• layer 要分割的图层对象, 分割后的图层, 会放到到拼接图层数组中, 分离后需要更新时间轴
30-(void)copyConcatLayerByLayer:(LSOLayer *)layer complete:(void(^)(void))completeBlock
功能:
• 复制一个拼接图层

参数:
• layer 要复制的图层
• completeBlock 复制完毕后的回调; 复制后的图层会放到到拼接图层数组中, 分离后需要更新时间轴
31-(LSOLayer *)copyVideoLayerByLayer:(LSOLayer *)layer
功能:
• 复制一个图层

参数:
• layer 复制的图层对象
32- (BOOL)removeLayer:(nullable LSOLayer *)layer
功能:
• 删除一个图层.
33- (void)removeLayerArray:(nullable NSArray<LSOLayer *> *)layers
功能:
• 删除一组图层

参数:
• layers 图层数组
34- (BOOL)removeLayerByCompTime:(CGFloat )compTimeS
功能:
• 根据合成中的一个时间点, 删除对应的图层

参数:
• compTimeS 在合成中的时间,单位秒
35-(LSOLayer *)getCurrentConcatLayerByTime:(CGFloat)compTimeS
功能:
• 根据当前在合成中的时间点, 来获取一个图层对象;
• 当前返回的是 LSOLayer对象
36- (void)applicationDidEnterBackground
功能:
• APP 进入后台时的回调;
• 当用户从下向上滑动, 让整个APP进入后台的时候,
• 你可以调用整个方法, 让合成线程进入后台
37- (void)applicationDidBecomeActive
功能:
• APP 从后台恢复时的回调;
• 当用户从 后台的状态下, 恢复到当前界面, 则调用这个APP,恢复合成的运行
38@property(nullable, nonatomic,copy)   UIColor *backgroundColor
功能:
• 设置合成容器的背景颜色
• 当前暂时导出无用
39-(BOOL)startPreview
功能:
• 播放预览
40-(void)pause
功能:
• 暂停
41-(void)resume
功能:
• 恢复播放
42- (void)seekToTimeS:(CGFloat)timeS
功能:
• 定位到具体的时间戳;
• 在调用后, 会暂停当前界面的执行;
• 你需要在完成seek后, 调用resume来播放
• 预览有效
43@property (readonly) BOOL isRunning
功能:
• 当前是否在运行
44@property (readonly) BOOL isPausing
功能:
• 是否暂停
45-(void)startExportWithRatio:(LSOExportSize)ratioType
功能:
• 开始导出
46@property (readonly) BOOL   isExporting
功能:
• 当前是否正在导出
47-(void)cancel
功能:
• 取消整个合成线程
• 包括预览和导出, 都取消
48@property(nonatomic, copy) void(^playProgressBlock)(CGFloat progress,CGFloat percent)
功能:
• 进度回调,
• 当在编码的时候, 等于当前视频图层的视频播放进度 时间单位是秒;;
• 工作在其他线程,
• 如要工作在主线程,请使用:
   progress: 当前正在播放总合成的时间点,单位秒;
   percent: 当前总合成的时间点对应转换为的百分比;
• 进度则是: progress/_duration;
dispatch_async(dispatch_get_main_queue(), ^{
});
49@property(nonatomic, copy) NSString *_Nullable(^mergeAVBlock)(NSString *video, NSString *audio)
功能:
• 适配ios13的export类问题
50@property(nonatomic, copy) void(^playCompletionBlock)(void)
功能:
• 在异步线程执行此block; 请用一下代码后调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
51@property(nonatomic, copy) void(^exportProgressBlock)(CGFloat progress,CGFloat percent)
功能:
• 导出进度回调;
• 在异步线程执行此block; 请用一下代码后调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
52@property(nonatomic, copy) void(^exportCompletionBlock)(NSString *_Nullable dstPath)
功能:
• 编码完成回调, 完成后返回生成的视频路径;
• 注意:生成的dstPath目标文件, 我们不会删除.
• 在异步线程执行此block; 请用一下代码后调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
53@property(nonatomic, copy) void(^userSelectedLayerBlock)(LSOLayer *layer)
功能:
• 当前用户选中的图层回调;
• 在异步线程执行此block; 请用一下代码后调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
54@property(nonatomic, copy) void(^ _Nullable userTouchDownLayerBlock)(LSOLayer * _Nullable layer)
功能:
• 用户点击事件; 用户手指按下.
• 中间不需要增加 dispatch_async(dispatch_get_main_queue()
55@property(nonatomic, copy) void(^ _Nullable userTouchMoveLayerBlock)(CGPoint point)
功能:
• 用户移动图层
56@property(nonatomic, copy) void(^ _Nullable userTouchScaleLayerBlock)(CGSize size)
功能:
• 用户缩放图层事件
57@property(nonatomic, copy) void(^ _Nullable userTouchRotationLayerBlock)(CGFloat rotation)
功能:
• 用户旋转图层
58@property(nonatomic, copy) void(^ _Nullable userTouchUpLayerBlock)(void)
功能:
• 用户手指抬起
59@property(nonatomic, copy) void(^compositionDurationChangedBlock)(CGFloat durationS)
功能:
• 合成容器时间改变回调;
• 当整个容器的合成时间改变了, 则触发回调;
• 比如你对视频做裁剪,则会触发这里.
• 在异步线程执行此block; 请用一下代码后调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
60@property (nonatomic, assign) BOOL disableTouchEvent
功能:
• 禁止图层的touch事件


二、视频编辑图层LSOLayer类
1@property (readonly,assign)CGFloat originalDurationS
功能:
• 素材的原始时长.
• 比如视频本身的长度, 只读.不会改变
2@property (readwrite,assign) CGFloat displayDurationS
功能:
• 当前图层的显示时长;
• 在没有裁剪时后变速等操作时, 等于原始时长
3@property (nonatomic,readonly) CGSize originalSize
功能:
• 输入资源的原始大小
4@property   (nonatomic,readonly) CGSize layerSize
功能:
• 图层在容器中的大小.
• 视频放到容器中后, 默认是对齐到边缘的,故图层大小会变;
• 视频默认对齐到播放器的边缘. 图片居中显示
5@property (readwrite,assign) BOOL looping
功能:
• 叠加图层是否循环播放;
• 拼接图层设置后无效
6@property(getter=isHidden) BOOL hidden
功能:
• 当前图层是否隐藏,
• 可以用这个在新创建的图层做隐藏/显示的效果, 类似闪烁, 或创建好,暂时不显示等效果
7@property (readwrite, nonatomic)   CGFloat rotateAngle
功能:
• 角度值0--360度. 默认为0.0
• 顺时针旋转
8@property (readwrite, nonatomic) CGPoint centerPoint
功能:
• 设置或读取   <当前图层的中心点>在容器中的坐标;
• 容器坐标的左上角是左上角为0,0. 从上到下 是Y轴, 从左到右是X轴;
• 当一个图层增加到容器中, 则默认是:
               positionX=drawPadSize.width/2;
               positionY=drawPadSize.height/2;
9@property (readwrite,nonatomic) LSOPositionType positionType
功能:
• 设置当前位置, 枚举类型.
• 我们举例了常见的位置枚举类型:
• 上下左右/左上/左下/右上/右下/居中, 如果这些类型不满足您的需求, 可以通过centerPoint来设置每个素材的位置
10@property (readwrite,nonatomic) LSOScaleType scaleType
功能:
• 缩放的枚举类型;
• kLSOScaleNONE: 无缩放形式.则内部会根据不同的素材,采用默认形式;
• kLSOScaleOriginal: 原始大小 直接放入, 不做任意处理;
• kLSOScaleFillComposition: 忽略百分比,把宽度等于容器的宽度, 高度等于容器的高度,填满整个容器.
• kLSOScaleCropFillComposition: 匹配放入到容器中,等比例填满整个容器, 把多的部分显示到容器的外面去;
• kLSOScaleVideoScale:视频缩放模式,如果视频宽度大于高度, 则宽度和容器对齐, 然后等比例调整高度; 反之亦然
• 如果以上不满足您的需求, 则可以 scaleSize设置具体缩放到的大小
11@property (readwrite, nonatomic) CGSize scaleSize
功能:
• 把图层缩放到指定的大小;
• 以像素为单位
12@property (readwrite, nonatomic) CGSize scaleSizeInView
功能:
• 以显示窗口为单位, 缩放大小, 此宽高是相对于LSODisplayView而言;
• 预览时有效
13@property (readonly, nonatomic) CGSize layerSizeInView
功能:
• 以显示窗口为单位, 获取图层的宽高;
• 预览时有效
14@property (readonly, nonatomic) BOOL isConcatImageLayer
功能:
• 是否是拼接图片层
15@property (readonly, nonatomic) BOOL isConcatVideoLayer
功能:
• 是否拼接视频层
16@property (readonly, nonatomic) BOOL isVideoLayer
功能:
• 是否是叠加的视频层
17@property (readonly, nonatomic) BOOL isMVLayer
功能:
• 是否是叠加的mv透明动画层
18@property (readonly, nonatomic) BOOL isImageLayer
功能:
• 是否是图片层
19@property (readonly, nonatomic) BOOL isGifLayer
功能:
• 是否是Gif图层
20@property (readonly, nonatomic) BOOL isImageArrayLayer
功能:
• 是否是图片数组图层
21@property(readwrite,assign) CGFloat startTimeOfComp
功能:
• 在播放器中的开始时间, 只工作在叠加的一些图层; 比如叠加的图片/视频等
22@property (readwrite, nonatomic) BOOL isConvertScalePosition
功能:
•   是否把缩放和位置的参数转换;
• 默认是不转换
23@property (nonatomic,assign)BOOL mirrorDrawX
功能:
• 在绘制的时候, 横向图像镜像, 左边的在右边, 右边的在左边
24@property (nonatomic,assign)BOOL mirrorDrawY
功能:
• 竖向图像镜像, 上面的放下面, 下面的放上面. 默认不调整
25@property(readwrite, nonatomic) CGFloat opacityPercent
功能:
• 不透明度.
• 默认是1.0; 完全透明是0.0
26@property (readwrite,assign) CGFloat cutStartTimeS
功能:
• 裁剪时长的开始时间
• 相对于原视频的时间而言;
• 仅对视频有效
27@property (readwrite,assign) CGFloat cutEndTimeS
功能:
• 裁剪时长的结束时间;
• 仅对视频有效
28-(void)addKeyFrameAtCompTime:(CGFloat)compTimeS
功能:
• 添加关键帧
29-(void)removeKeyFrameWithCompTime:(CGFloat)compTimeS
功能:
• 删除关键帧
30-(void)removeAllKeyframe
功能:
• 删除所有关键帧
31@property (readwrite, assign) CGFloat brightnessPercent
功能:
• 调节亮度的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
32@property (readwrite, assign) CGFloat contrastFilterPercent
功能:
• 调节对比度的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
33@property (readwrite, assign) CGFloat saturationFilterPercent
功能:
• 调节饱和度的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
34@property (readwrite, assign) CGFloat sharpFilterPercent
功能:
• 调节锐化的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭;
35@property (readwrite, assign) CGFloat whiteBalanceFilterPercent
功能:
• 调节色温的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
36@property (readwrite, assign) CGFloat hueFilterPercent
功能:
• 调节色调的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
37@property (readwrite, assign) CGFloat exposurePercent
功能:
• 调节曝光度的百分比.
• 这里的百分比是两倍的关系,范围是 0--2.0; 其中 1.0 是默认值,
• 0---1.0是调小;
• 1.0 是默认,
• 1.0---2.0 是调大;
• 如要关闭,则调整为 1.0.默认是关闭
38@property(readwrite, nonatomic) CGRect mosaicRect1InView
功能:
• 马赛克区域:
• xy以左上角开始, 左上角是0.0,0.0;
• 宽度是一个百分比, 最大是 1.0;
• 高度是 一个百分比. 最大是1.0;
• 你实时传递过来的宽高和坐标, 除以当前图层的宽高,转换为百分比后设置过来,
• 宽高坐标可以通过getCurrentRectInView 获取到当前图层在compositionView中的位置;
• 我们举例最大4个马赛克区域;如果你需要更多的马赛克区域, 则用LSOMosaicRectFilter执行增加;
• 预览时有效
39@property (readwrite,nonatomic) CGFloat beautyLevel
功能:
• 设置美颜,
• 范围是0.0---1.0; 0.0是关闭美颜; 默认是0.0;
40@property (nonatomic,nullable, copy)LanSongFilter   *filter
功能:
• 设置一个滤镜, 设置后, 之前增加的滤镜将全面清空.
• 类似滤镜一个一个的切换.新设置一个, 会覆盖上一个滤镜.
• 如果滤镜是无, 或清除之前的滤镜, 这里填nil;
41-(void)addFilter:(nullable LanSongFilter *)filter
功能:
• 增加一个滤镜,
• 增加后, 会在上一个滤镜的后面增加一个新的滤镜.
• 是级联的效果
• 源图像--->滤镜1--->滤镜2--->滤镜3--->移动旋转缩放透明遮罩处理--->与别的图层做混合;
42-(void)removeFilter:(nullable LanSongFilter *)filter
功能:
• 删除一个滤镜
43-(void)removeAllFilter
功能:
• 删除所有滤镜
44@property (nonatomic, assign)CGFloat audioVolume
功能:
• 调节素材中的音频音量.
• 如果素材有音量,则设置, 如果没有音量,则无效;
• 范围是0.0---8.0;
• 1.0是原始音量; 大于1.0,是放大; 小于1.0是减低, 如果降低建议是0.1;
• 如果是0.0则无声,
45@property (readwrite, assign) CGFloat volumeFadeOutDurationS
功能:
• 音量淡出时长设置/获取;
• 默认是0.0,无淡出效果;
• 最大为当前有效时长的1/3;
46@property (readwrite, assign) CGFloat volumeFadeInDurationS
功能:
• 音量淡入时长设置/获取;
• 默认是0.0; 无淡入效果;
• 最大为当前有效时长的1/3;
47@property (nonatomic, assign)CGFloat videoSpeed
功能:
• 视频的播放速度;
• 范围是 0.1---10.0
• 默认1.0; 正常播放;
• 建议的设置参数是:
• 变慢: 0.1, 0.2, 0.4, 0.6,0.8
• 变快: 2.0, 3.0, 4.0, 6.0,8.0;
• 当前仅是画面变速, 变速过程中暂时无声音;
48-(void)setVideoReverseAsync:(BOOL)isReverse asyncHandler:(void (^)(CGFloat percent, BOOL finish))handler
功能:
• 给视频图层设置倒序
• 异步是因为: 在视频第一次倒序的时候, 有一个异步预处理的过程;
• percent:预处理百分比: 0---1.0;
• 当前暂时不支持声音倒序. 在倒序时, 默认音量为0;
• 调用此方法,会先触发容器暂停;
• 在异步线程执行此block; 请在一下代码里调用;
dispatch_async(dispatch_get_main_queue(), ^{
});
49- (void)cancelVideoReverse
功能:
• 取消正在执行的视频倒序功能
50@property(nonatomic, readonly)BOOL isReverse
功能:
• 当前是否在倒序状态
51- (void)getThumbnailAsyncWithHandler:(void (^)(UIImage *image, BOOL finish))handler
功能:
• 异步获取当前缩略图;
• 当前是每秒钟获取一帧;, 一帧宽高最大是100x100;

参数:
• image 是获取到的每一张缩略图;
• finish是 是否获取完毕;
• 获取的缩略图的高度是192像素,高度是192,返回所有图片的宽度总和是 当前要显示时长乘以192;
• 比如当前图层显示时长是6.2秒; 则返回的缩略图是 6张192x192的图片和一张 38x192 (38=192*0.2);
52- (void)getOriginalThumbnailAsyncwithCount:(int)count handler:(void (^)(UIImage *image, BOOL finish))handler
功能:
• 获取原视频的缩略图;
• 从原视频的 第0秒,到最后; 返回的所有图片都是192x192像素大小;

参数:
• count 要获取的张数   , 如果不清楚获取几张图片, 则用(int)originalDurationS;
• handler 获取的异步回调;
53- (void)getThumbnailAsyncWithDuration:(CGFloat)durationS handler:(void (^)(UIImage *image, BOOL finish))handler
功能:
• 获取指定时长的缩略图;
• 从当前裁剪的开始时间,计算, 每秒钟返回一帧, 一帧的宽高是192

参数:
• durationS 要的时长
• handler 异步回调;
54@property (readonly,assign) CGFloat thumbnailDisplayTimeS
功能:
• 缩略图的显示时间
55@property(nonatomic, readwrite)   NSMutableArray<UIImage *> *thumbImageArray
功能:
• 在你第一次调用过getThumbnailAsyncWithHandler后. 内部会保存到这个属性中.
• 在下次获取的时候, 则可以直接读取;
56@property (nonatomic, assign)BOOL touchEnable
功能:
• 当前图层是否需要touch事件;
• 默认是需要的;
57@property (nonatomic, assign) CGFloat backGroundBlurLevel
功能:
• 背景虚化值.
• 设置为0,取消背景;
58- (void)resetLayerLayout
功能:
• 把图层恢复到刚增加时的位置和大小
59-(BOOL)isDisplay
功能:
• 当前图层是否在显示状态
60- (LSOAnimation *) addAnimationWithJsonPath:(NSString *)jsonPath atCompS:(CGFloat) atCompS
功能:
• 用AE的json形式增加一个动画

参数:
• jsonPath 动画文件
• atCompS 从播放器的什么位置增加
61- (LSOAnimation *) setAnimationAtLayerHead:(NSString *)jsonPath
功能:
• 在图层的头部增加一个动画

参数:
• jsonPath 动画文件,json格式
62- (LSOAnimation *) setAnimationAtLayerEnd:(NSString *)jsonPath
功能:
• 在图层的尾部增加一个动画

参数:
• jsonPath 动画文件, json格式
63- (void)removeAnimation:(LSOAnimation *)animation
功能:
• 删除一个动画

参数:
• animation 动画对象,在addAnimation的时候增加的
64- (void)removeAllAnimationArray
功能:
• 删除所有动画
65- (NSMutableArray *)getAllAnimationArray
功能:
• 获取所有的动画对象数组
66-(BOOL) playAnimation:(LSOAnimation *)animation
功能:
• 预览一个动画

参数:
• animation 预览会从动画的开始时间点,播放到结束时间点
67- (LSOEffect *) addEffectWithJsonPath:(NSString *)jsonPath atCompS:(CGFloat) atCompS
功能:
• 用AE的json文件形式在指定时间点增加一个特效

参数:
• jsonPath 特效的json
• atCompS 从容器的指定时间点
68- (LSOEffect *) addEffectWithJsonAtLayerHead:(NSString *)jsonPath
功能:
• 在图层的头部增加一个特效

参数:
• jsonPath 特效的json文件
69- (LSOEffect *) addEffectWithJsonAtLayerEnd:(NSString *)jsonPath
功能:
• 在图层的尾部增加一个特效

参数:
• jsonPath 特效的json文件
70- (void)removeEffect:(LSOEffect *)effect
功能:
• 删除一个特效,

参数:
• effect 特效对象,从addEffectXXX得到的特效对象
71- (void)removeAllEffectArray
功能:
• 删除所有的特效
72-(BOOL) playEffect:(LSOEffect *)effect
功能:
• 预览一个特效

参数:
• effect 预览会从特效的开始时间点,播放到结束时间点
73- (NSMutableArray *)getAllEffectArray
功能:
• 获取所有的特效对象数组
74@property(readwrite, assign)NSURL *transitionJsonUrl
功能:
• 设置转场的动画路径, json格式;
• 可通过这个获取是否设置了转场; 如果要取消转场;则这里等于nil;
• 设置后, 默认转场时间为1秒;
75- (void)setMGTransitionWithColorUrl:(NSURL *)colorUrl maskUrl:(NSURL *)maskUrl
功能:
• 增加mg转场动画
76@property(readwrite, assign)CGFloat transitionDurationS
功能:
• 设置或获取转场时间
• 在设置转场后有效;
• 时间范围是0---5.0秒;
• 如转场时间 大于图层时间, 则等于图层时间;
• 可以通过转场时间,判断当前图层是否有转场功能;
77@property(readonly, nonatomic)CGFloat transitionMaxDurationS
功能:
• 转场可设置的最大值;
• 只能获取;
• 最大值等于, 当前图层的1/3 和下一个图层时长的1/3 和3秒 的最小值;
78@property(readonly, nonatomic)BOOL isAddTransition
功能:
• 是否增加了转场
79- (BOOL)playTransition
功能:
• 预览转场;
• 你需要在设置转场后调用才有效;
80- (void)cancelTransition
功能:
• 取消转场
81@property (nonatomic, readonly) CGFloat transitionStartTimeOfCompS
功能:
• 转场相对于播放器的开始时间
82@property (readwrite,nonatomic)NSURL *videoURL
功能:
• 如果是拼接的是视频, 或叠加的是视频, 则可以获取到videoURL路径
83@property (readwrite,nonatomic)UIImage *uiImage
功能:
• 拼接或叠加一张图片时, 增加的图片对象
84@property (readonly, nonatomic, nullable) NSURL *reverseVideoUrl
功能:
• 获取倒序的视频路径;
• 在设置倒序,并倒序完成后获取;
• 在容器释放或 图层释放后, 内部会删除;


IOS视频编辑SDK概述:

1. 我们把视频编辑抽象为两个类, 一个是编辑预览类LSOEditPlayer, 一个图层类LSOLayer。

2. 播放预览类LSOEditPlayer,和AVPlayer类似, 需要一个播放窗口UIView,本质是一个编辑播放器,可完成素材的:插入或删除,替换,复制,分割,拼接,叠加,定位,播放/暂停等实时容器预览的功能。

3. 图层类LSOLayer: 图片/视频/文本/特效/GIF等增加到播放器中后,我们把他处理成一层画面 ,增加一个, 就是增加一层画面;增加时会返回LSOLayer对象,用这个对象可以设置:时间点,位置,宽高,角度,镜像,倒序,滤镜,调节,美颜,动画,转场,特效等功能。

4. 调用流程是: 创建LSOEditPlayer对象, init时可输入图片或视频的url路径和播放器比例,得到播放器容器的宽高,根据宽高创建LSODispLayView作为播放器的显示窗口, 之后正常播放即可.

5. 素材增加的形式有两种, 一种是前后拼接, 一种是上下叠加, 示意图如下:
地址:杭州市余杭区文一西路1324号利尔达物联网科技园6号楼2001
联系人:郭志军      电话:18006716739      邮箱:support@lansongtech.com
联系人:杨朝位      电话:13819483824      邮箱:toby0405@163.com
蓝松视频编辑DEMO下载