Skip to content

edit_effect_filter

zanxiaofei edited this page Mar 14, 2018 · 8 revisions

特效滤镜

SDK2.2.0版本新增特效滤镜功能,即可以将滤镜添加到编辑视频的某个时间段内
可将内置滤镜美颜或者自定义的滤镜或者GPU滤镜以时间片段的方式添加到编辑的视频上。
此外,SDK新增了几种特效滤镜:抖动冲击波灵魂出窍

接口说明

1. 特效数据类

类名 说明
TimerEffectInfo 通过该类传递特效相关信息给SDK
ITimerEffectData 需要添加的特效接口类,是TimerEffectInfo的成员,如添加滤镜,则new TimerEffectFilter
TimerEffectFilter 特效滤镜实体类,传递实际的滤镜实例

TimerEffectInfo 成员详细介绍

名称 类型 说明
id int 特效唯一标识,添加特效后,由SDK返回
effectData ITimerEffectData 具体的特效类型数据类,比如TimerEffectFilter
startTime long 特效开始时间
endTime long 特效结束时间

2. 增加特效滤镜

TimerEffectInfo

通过该接口增加一个特效滤镜,接口返回特效的唯一标识

    /**
     * 增加一个特效
     * @param effectInfo 特效详细信息
     * @return  int 特效唯一标识id
     */
    public int addTimerEffectFilter(TimerEffectInfo effectInfo)  

代码示例

//创建滤镜实例  
ImgShakeZoomFilter filterBase = new ImgShakeZoomFilter(mEditKit.getGLRender());
//创建特效数据类  
TimerEffectInfo effectInfo = new TimerEffectInfo(mEditKit.getEditPreviewCurrentPosition(),
                        mEditPreviewDuration, new TimerEffectFilter(filterBase));
mEditKit.addTimerEffectFilter(effectInfo);

3. 更新特效滤镜结束时间updateTimerEffectEndTime

如果在添加特效时,并不能确定特效的结束时间,可通过该接口更新特效的结束时间

  /**
     * 更新滤镜的结束事件
     *
     * @param id      待更新滤镜的唯一标识,在addTimerEffectFilter时产生
     * @param endTime 更新后的结束时间
     */
    public void updateTimerEffectEndTime(int id, long endTime) 

4. 删除某一个特效滤镜 removeTimerEffectFilter

 /**
     * 移除特效滤镜
     *
     * @param index 移除滤镜的唯一标识,在addTimerEffectFilter产生
     */
    public void removeTimerEffectFilter(int index) {

5.删除所有特效滤镜removeAllTimeEffectFilter

//移除所有特效滤镜  
public void removeAllTimeEffectFilter()

特效滤镜对应关系

名称
抖动 ImgShakeColorFilter
灵魂出窍 ImgShakeZoomFilter
冲击波 ImgShakeShockWaveFilter
闪电 ImgBeautySpecialEffectsFilter(KSY_SPECIAL_EFFECT_LIGHTING)
Black magic GPUImageSobelEdgeDetection
70s ImgShake70sFilter
幻觉 ImgShakeIllusionFilter
X-Single ImgShaderXSingleFilter
Clone this wiki locally