com.aliyun.svideosdk.editor

## Interface AliyunIEditor

-     public interface AliyunIEditor

  编辑接口，包含特效使用，视频预览

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addAnimationFilter(EffectFilter filter)` 添加动效滤镜，同一个时间区间内只能有一个动效滤镜，如果添加两个时间冲突了，则冲突的时间段，新添加的会覆盖之前添加的
    `int` | `addFrameAnimation(ActionBase action)` 对指定的流或者素材资源添加帧动画
    `int` | `addImage(EffectPicture picture)` 使用添加一张静态图片
    `int` | `addRunningDisplayMode(VideoDisplayMode mode, int streamId, long startTimeMills, long durationMills)` Deprecated.
    `int` | `addTailWaterMark(java.lang.String imagePath, float sizeX, float sizeY, float posX, float posY, long durationUs)` 添加片尾
    `int` | `applyBlurBackground(int streamId, long startTimeMills, long durationMills, float blurRadius)` 添加模糊背景
    `int` | `applyDub(EffectBean effect)` 使用配音效果 音乐作用时间可以选择，时间设置
    `int` | `applyFilter(EffectBean effect)` 使用滤镜效果
    `int` | `applyMusic(EffectBean effect)` 使用music效果 音乐作用时间可以选择，时间设置
    `int` | `applyMusicMixWeight(int id, int weight)` 设置音乐和视频原音的混合权重，id对应的流和主流的权重加起来是100，而其他流保持不变， 举例：同一时刻混音有三个流，分别是主流（weight：40），混音1（weight：30，id：1），混音2（weight：20，id：2），假如通过 该接口设置混音1为70，即applyMusicMixWeight(1, 70)，则这个时候三个流的权重分别是主流（weight：30），混音1（weight：70）， 混音2（weight：20），混音2的权重保持不变，主流的权重变成100-混音1的权重
    `int` | `applyMusicWeight(int id, int weight)` 单独设置某一路音频音量权重（包含素材流和主流）
    `int` | `applyMV(EffectBean effect)` 使用mv效果
    `int` | `applySourceChange()` 执行流改变的操作，该操作会导致编辑的视频重新播放
    `int` | `applyWaterMark(java.lang.String imgPath, float sizeX, float sizeY, float posX, float posY)` 使用水印特效,如果需要使用文字水印，可以通过Bitmap工具把文字转成水印
    `int` | `audioEffect(int id, AudioEffectType type, int weight)` 增加音效 如果素材无音轨，该接口返回成功，但是没有效果
    `int` | `cancelCompose()` 取消合成
    `void` | `clearAllAnimationFilter()` 移除所有动效滤镜
    `int` | `compose(AliyunVideoParam param, java.lang.String outputPath, AliyunIComposeCallBack callback)` 合成
    `AliyunPasterManager` | `createPasterManager()` 创建贴图manager，负责贴图的添加渲染
    `AliyunRollCaptionComposer` | `createRollCaptionComposer()` 创建翻转字幕composer，负责编排一组字幕自动生成动画效果
    `int` | `deleteBlurBackground(int streamId, int id)` 删除模糊背景
    `int` | `deleteTimeEffect(int id)` 删除时间特效
    `int` | `denoise(int id, boolean needDenoise)` Deprecated.
    `int` | `denoise(int id, int denoiseWeight)` 降低指定音频流的噪声,0~100，0表示关闭降噪，100表示降噪能力最强
    `int` | `draw(long time)` 强制绘制指定时间点的帧，需要在pause状态下调用，如果当前状态不是pause，会强制调用pause
    `AliyunLogInfo` | `getAliyunLogInfo()` 获取打点数据
    `long` | `getClipStartTime(int clipIndex)`
    `Bitmap` | `getCurrentFrame()` 获取当前帧图片数据，推荐在子线程中调用 v3.25.0 新增
    `long` | `getCurrentPlayPosition()` 获取当前播放位置（受时间特效影响的）
    `long` | `getCurrentStreamPosition()` 获取当前流的位置（不受时间特效影响的）
    `long` | `getDuration()` 获取播放时长
    `AliyunEditorProject` | `getEditorProject()` v3.23.0 版本新增
    `int` | `getFilterLastApplyId()` 获取上次使用的滤镜特效的id，如果有设置的话。仅用于保存和恢复
    `int` | `getMusicLastApplyId()` 获取上次使用的音乐特效的id，如果有设置的话，仅用于保存和恢复
    `int` | `getMVLastApplyId()` 获取上次使用的mv特效的id，如果有设置的话，仅用于保存和恢复
    `Paint` | `getPaintLastApply()` 获取上次使用的涂鸦的画笔，如果有设置的话，仅用于保存和恢复
    `AliyunPasterRender` | `getPasterRender()` 底层的贴图渲染类，如果没有UI编辑的需求则可以直接使用该接口，
    `AliyunIPipManager` | `getPipManager()` v3.25.0 新增
    `AliyunIProjectInfo` | `getProjectInfo()` 获取project中的资源信息
    `int` | `getRotation()` 获取视频旋转度
    `AliyunIClipConstructor` | `getSourcePartManager()` 获取编辑的流片段管理，可以实现对流片段的修改，删除，添加，获取操作
    `long` | `getStreamDuration()` 获取视频流时长
    `TimeEffectType` | `getTimeEffect()` 获取时间特效
    `int` | `getVideoHeight()` 获取视频高度
    `int` | `getVideoWidth()` 获取视频宽度
    `int` | `init(SurfaceView surfaceView, Context context)` 初始化
    `int` | `invert()` 全部倒播（对于某些条件不符合的视频，可能需要调用转码流程来获取比较好的效果）
    `boolean` | `isAudioSilence()` 获取是否处于静音状态
    `boolean` | `isPaused()` 状态获取,是否暂停
    `boolean` | `isPlaying()` Gets whether playback is in progress.
    `AliyunICanvasController` | `obtainCanvasController(Context context, int w, int h)` 获取涂鸦控制器
    `void` | `onDestroy()` 生命周期调用
    `int` | `pause()` 暂停播放
    `int` | `play()` 开始播放
    `int` | `rate(float rate, long startTimeMills, long durationMills, boolean needOriginDuration)` 播放速率
    `void` | `removeAnimationFilter(EffectFilter filter)` 移除动效滤镜
    `int` | `removeAudioEffect(int id, AudioEffectType type)` 删除某个音效
    `int` | `removeAudioFadeIn(int id)` v3.20 新增
    `int` | `removeAudioFadeOut(int id)` v3.20 新增
    `int` | `removeDub(EffectBean effect)` 移除配音特效
    `int` | `removeFrameAnimation(ActionBase action)` 删除指定的帧动画
    `void` | `removeImage(EffectPicture picture)` 移除添加的一张静态图片
    `int` | `removeMusic(EffectBean effect)` 移除音乐特效
    `int` | `removeRunningDisplayMode(int streamId, int id)` Deprecated.
    `int` | `repeat(int times, long startTimeMills, long durationMills, boolean needOriginDuration)` 重复播放（对于某些条件不符合的视频，可能需要调用转码流程来获取比较好的效果）
    `int` | `replay()` 重新开始播放
    `int` | `resetEffect(EffectType effectType)` 重置特效
    `int` | `resetVideoAugmentation(int streamId, VideoAugmentationType type)` v3.19.0 版本新增
    `int` | `resume()` 恢复播放
    `int` | `saveEffectToLocal()` 将所有特效持久化到本地文件 如果要使用AliyunICompose接口合成，必须通过该接口将特效配置持久化到本地文件中
    `int` | `seek(long time)` seek到某个时间点
    `void` | `setAnimationRestoredListener(OnAnimationFilterRestored li)` 设置动效滤镜恢复的回调，用于开发者恢复对应的UI，如果是草稿箱情况下，要恢复UI，需要在`init(SurfaceView, Context)` 之前设置该回调，因为`init(SurfaceView, Context)`内部会执行动效滤镜恢复逻辑
    `int` | `setAudioFadeIn(int id, ShapeType shapeType, long duration)` v3.20 新增
    `int` | `setAudioFadeOut(int id, ShapeType shapeType, long duration)` v3.20 新增
    `void` | `setAudioSilence(boolean silence)` 设置静音状态，该接口只对播放模式下有效，合成视频无法静音
    `int` | `setDisplayMode(VideoDisplayMode mode)` 设置视频展示模式
    `int` | `setDisplayView(SurfaceView surfaceView)` 更新显示的窗口,必须在`init(SurfaceView, Context)`成功之后调用
    `int` | `setDisplayView(TextureView textureView)` 更新显示的窗口，必须在`init(SurfaceView, Context)`成功之后调用，没有特殊需求不建议用TextureView
    `int` | `setFillBackgroundColor(int color)` 设置填充颜色，只有在`setDisplayMode(VideoDisplayMode)`为`VideoDisplayMode.FILL`时才有效
    `void` | `setMonitorSurfaceChange(boolean monitor)` 设置是否需要监听surface的变化，必须在`init(SurfaceView, Context)`之前设置，否则设置无效
    `void` | `setOutputPath(java.lang.String path)` 设置输出路径
    `int` | `setTransition(int index, TransitionBase transition)` 设置视频过渡动画时间长度，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
    `int` | `setTransition(java.util.Map<java.lang.Integer,TransitionBase> transitions)` 设置视频过渡动画时间长度，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
    `int` | `setVideoAugmentation(int streamId, VideoAugmentationType type, float value)` v3.19.0 版本新增
    `int` | `setVolume(int volume)` 设置音量
    `int` | `stop()` 停止播放
    `int` | `updateAnimationFilter(EffectFilter filter)` 更新动效滤镜参数，同一个时间区间内只能有一个动效滤镜，如果添加两个时间冲突了，则冲突的时间段，新添加的会覆盖之前添加的
    `void` | `updateCover(Source source)` v3.25.0 版本新增
    `int` | `updateTransition(int clipIndex, TransitionBase transitionBase)` 更新自定义转场对象，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
    `java.lang.String` | `version()` 获取版本号

- - ### Method Detail

    - #### setMonitorSurfaceChange

          void setMonitorSurfaceChange(boolean monitor)

      设置是否需要监听surface的变化，必须在`init(SurfaceView, Context)`之前设置，否则设置无效
      Parameters:
        `monitor` -

    - #### init

          int init(SurfaceView surfaceView,
                   Context context)

      初始化
      Parameters:
        `surfaceView` -
      Returns:
        `AliyunErrorCode.ERROR_PROJECT_NULL` `AliyunErrorCode.ERROR_LICENSE_FAILED` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_INIT_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_CREATE_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_RE_CREATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_SET_DISPLAY_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_MUXER_ERROR_CREAT_OUTPUT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_MUXER_ERROR_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_MUXER_ERROR_INVALIDATE_PARAM` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_MUXER_ERROR_FIND_ENCODER` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_MUXER_ERROR_NEW_STREAM` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_VIDEO_ENCODER_CREATE_ENCODER_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_VIDEO_ENCODER_ERROR_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_ENCODER_ERROR_INPUT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_ENCODER_WIDTHOUT_MATCH_ENCODER` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_ENCODER_ERROR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_EDITORLAYOUT_INVALID_SIZE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_RENDER_INIT_SPEAKER_FAILED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` 导入编辑流程下，导入接口未设置输出分辨率，或者设置的分辨率不合法

    - #### setDisplayView

          int setDisplayView(SurfaceView surfaceView)

      更新显示的窗口,必须在`init(SurfaceView, Context)`成功之后调用
      Parameters:
        `surfaceView` -
      Returns:
        `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE`-没有初始化成功 `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM`-surfaceView 为空

    - #### setDisplayView

          int setDisplayView(TextureView textureView)

      更新显示的窗口，必须在`init(SurfaceView, Context)`成功之后调用，没有特殊需求不建议用TextureView
      Parameters:
        `textureView` -
      Returns:
        `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE`-没有初始化成功 `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM`-surfaceView 为空

    - #### play

          int play()

      开始播放
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### replay

          int replay()

      重新开始播放
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### seek

          int seek(long time)

      seek到某个时间点
      Parameters:
        `time` - 时间，单位：微秒
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_SEEK_IN_OFFSET` `AliyunEditorErrorCode.SVIDEO_EDITOR_SEEK_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_SEEK_FAILED`

    - #### draw

          int draw(long time)

      强制绘制指定时间点的帧，需要在pause状态下调用，如果当前状态不是pause，会强制调用pause
      Parameters:
        `time` - 时间，单位：微秒
      Returns:
        `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE`

    - #### getCurrentFrame

          Bitmap getCurrentFrame()

      获取当前帧图片数据，推荐在子线程中调用 v3.25.0 新增
      Returns:
        帧图片

    - #### pause

          int pause()

      暂停播放
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR`

    - #### resume

          int resume()

      恢复播放
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### stop

          int stop()

      停止播放
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_STOP_ERROR`

    - #### getCurrentStreamPosition

          long getCurrentStreamPosition()

      获取当前流的位置（不受时间特效影响的）
      Returns:
        当前播放位置（时间单位：us）

    - #### getCurrentPlayPosition

          long getCurrentPlayPosition()

      获取当前播放位置（受时间特效影响的）
      Returns:
        当前播放位置（时间单位：us）

    - #### getStreamDuration

          long getStreamDuration()

      获取视频流时长
      Returns:
        视频流时长（时间单位：us）

    - #### getDuration

          long getDuration()

      获取播放时长
      Returns:
        播放时长（时间单位：us）

    - #### isPlaying

          boolean isPlaying()

      Gets whether playback is in progress.

    - #### isPaused

          boolean isPaused()

      状态获取,是否暂停

    - #### getVideoWidth

          int getVideoWidth()

      获取视频宽度

    - #### getVideoHeight

          int getVideoHeight()

      获取视频高度

    - #### getRotation

          int getRotation()

      获取视频旋转度

    - #### isAudioSilence

          boolean isAudioSilence()

      获取是否处于静音状态
      Returns:
        true 处于静音状态 false 没有静音

    - #### setAudioSilence

          void setAudioSilence(boolean silence)

      设置静音状态，该接口只对播放模式下有效，合成视频无法静音
      Parameters:
        `silence` - true 设置为静音状态 false 消除静音状态

    - #### setVolume

          int setVolume(int volume)

      设置音量
      Parameters:
        `volume` - 音量值为[0,100]，为0则静音，100则音量最大,默认音量值是50
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_CTL_INPUT_ERROR`

    - #### setDisplayMode

          int setDisplayMode(VideoDisplayMode mode)

      设置视频展示模式
      Returns:
        `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.SVIDEO_EDITOR_PARSE_RESOURCE_FAILED`
      See Also:
        `VideoDisplayMode`

    - #### addRunningDisplayMode

          @Deprecated
          int addRunningDisplayMode(VideoDisplayMode mode,
                                                int streamId,
                                                long startTimeMills,
                                                long durationMills)

      Deprecated.
      选择时间段设置显示模式，该接口将在指定时间段内覆盖`setDisplayMode(VideoDisplayMode)`设置的模式， 时间段外，依然采用`setDisplayMode(VideoDisplayMode)`所设置的模式
      Parameters:
        `mode` -
        `streamId` - 流ID，指定添加到哪个流上
        `startTimeMills` - 传stream time 单位：毫秒
        `durationMills` - 传stream duration 单位：毫秒
      Returns:
        正确返回效果id，错误返回错误码

    - #### removeRunningDisplayMode

          @Deprecated
          int removeRunningDisplayMode(int streamId,
                                                   int id)

      Deprecated.
      移除某段时间的显示模式设置
      Parameters:
        `streamId` - 流ID，指定移除某个流上的效果
        `id` - 效果id，由 `addRunningDisplayMode(VideoDisplayMode, int, long, long)` 返回
      Returns:
        正确返回0，错误返回错误码

    - #### setFillBackgroundColor

          int setFillBackgroundColor(int color)

      设置填充颜色，只有在`setDisplayMode(VideoDisplayMode)`为`VideoDisplayMode.FILL`时才有效
      Parameters:
        `color` - 背景颜色值，8位int型，格式为ARGB
      Returns:
        `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE`
      See Also:
        `setDisplayMode(VideoDisplayMode)`, `VideoDisplayMode`

    - #### applyFilter

          int applyFilter(EffectBean effect)

      使用滤镜效果
      Parameters:
        `effect` - 特效资源的路径及ID，设置为null表示移除滤镜
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION`

    - #### applyMV

          int applyMV(EffectBean effect)

      使用mv效果
      Parameters:
        `effect` - 特效资源的路径及ID，设置为null表示移除MV效果，接口调用完成之后，mv的音频流id可以通过`EffectBean.getMvAudioId()`来获取
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunErrorCode.ERROR_LICENSE_FAILED` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION`

    - #### applyWaterMark

          int applyWaterMark(java.lang.String imgPath,
                             float sizeX,
                             float sizeY,
                             float posX,
                             float posY)

      使用水印特效,如果需要使用文字水印，可以通过Bitmap工具把文字转成水印
      Parameters:
        `imgPath` - 水印图片路径
        `sizeX` -
        `sizeY` -
        `posX` -
        `posY` -
      Returns:
        `AliyunErrorCode.ERROR_EFFECT_USE_FAILED` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.SVIDEO_EDITOR_VIEW_TYPE_NOT_SUPPORTED`

    - #### addImage

          int addImage(EffectPicture picture)

      使用添加一张静态图片
      Parameters:
        `picture` - Bitmap及相关显示参数，x,y,w,h都是相对于显示范围的比例值
      Returns:
        `AliyunErrorCode.ERROR_EFFECT_USE_FAILED` `AliyunErrorCode.ERROR_TRES_PLAYER_UNPREPARED` `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunErrorCode.ERROR_PARAM_IMAGE_FILE_PATH_INVALID` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.SVIDEO_EDITOR_VIEW_TYPE_NOT_SUPPORTED`

    - #### removeImage

          void removeImage(EffectPicture picture)

      移除添加的一张静态图片
      Parameters:
        `picture` - Bitmap及相关显示参数，x,y,w,h都是相对于显示范围的比例值

    - #### addAnimationFilter

          int addAnimationFilter(EffectFilter filter)

      添加动效滤镜，同一个时间区间内只能有一个动效滤镜，如果添加两个时间冲突了，则冲突的时间段，新添加的会覆盖之前添加的
      Parameters:
        `filter` -
      Returns:
        `AliyunErrorCode.ERROR_EFFECT_USE_FAILED` `AliyunErrorCode.ERROR_INVALID_ARGUMENTS` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID`

    - #### updateAnimationFilter

          int updateAnimationFilter(EffectFilter filter)

      更新动效滤镜参数，同一个时间区间内只能有一个动效滤镜，如果添加两个时间冲突了，则冲突的时间段，新添加的会覆盖之前添加的
      Parameters:
        `filter` -
      Returns:
        `AliyunErrorCode.ERROR_EFFECT_USE_FAILED` `AliyunErrorCode.ERROR_INVALID_ARGUMENTS` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID`

    - #### addFrameAnimation

          int addFrameAnimation(ActionBase action)

      对指定的流或者素材资源添加帧动画
      Parameters:
        `action` -
      Returns:
        正确返回资源id，错误返回错误码
      See Also:
        `ActionBase`

    - #### removeFrameAnimation

          int removeFrameAnimation(ActionBase action)

      删除指定的帧动画
      Parameters:
        `action` -
      Returns:
        正确返回0，错误返回错误码

    - #### removeAnimationFilter

          void removeAnimationFilter(EffectFilter filter)

      移除动效滤镜
      Parameters:
        `filter` -

    - #### clearAllAnimationFilter

          void clearAllAnimationFilter()

      移除所有动效滤镜

    - #### applyMusic

          int applyMusic(EffectBean effect)

      使用music效果 音乐作用时间可以选择，时间设置
      Parameters:
        `effect` - 特效资源的路径及ID
      Returns:
        成功返回流ID，失败返回对应的error code `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`
      See Also:
        `EffectBean`

    - #### applyDub

          int applyDub(EffectBean effect)

      使用配音效果 音乐作用时间可以选择，时间设置
      Parameters:
        `effect` - 特效资源的路径及ID
      Returns:
        成功返回流ID，失败返回对应的error code `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`
      See Also:
        `EffectBean`

    - #### removeMusic

          int removeMusic(EffectBean effect)

      移除音乐特效
      Parameters:
        `effect` -
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`
      See Also:
        `EffectBean`

    - #### removeDub

          int removeDub(EffectBean effect)

      移除配音特效
      Parameters:
        `effect` -
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_PAUSE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`
      See Also:
        `EffectBean`

    - #### getFilterLastApplyId

          int getFilterLastApplyId()

      获取上次使用的滤镜特效的id，如果有设置的话。仅用于保存和恢复
      Returns:
        上次使用滤镜特效的资源ID `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE`

    - #### getMVLastApplyId

          int getMVLastApplyId()

      获取上次使用的mv特效的id，如果有设置的话，仅用于保存和恢复
      Returns:
        上次使用MV特效的资源ID `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE`

    - #### getMusicLastApplyId

          int getMusicLastApplyId()

      获取上次使用的音乐特效的id，如果有设置的话，仅用于保存和恢复
      Returns:
        上次使用音乐特效的资源ID `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE`

    - #### getPaintLastApply

          Paint getPaintLastApply()

      获取上次使用的涂鸦的画笔，如果有设置的话，仅用于保存和恢复
      Returns:
        上次使用的涂鸦的画笔

    - #### applyMusicMixWeight

          int applyMusicMixWeight(int id,
                                  int weight)

      设置音乐和视频原音的混合权重，id对应的流和主流的权重加起来是100，而其他流保持不变， 举例：同一时刻混音有三个流，分别是主流（weight：40），混音1（weight：30，id：1），混音2（weight：20，id：2），假如通过 该接口设置混音1为70，即applyMusicMixWeight(1, 70)，则这个时候三个流的权重分别是主流（weight：30），混音1（weight：70）， 混音2（weight：20），混音2的权重保持不变，主流的权重变成100-混音1的权重
      Parameters:
        `id` - 流id 可以通过`EffectBean.getId()`获取
        `weight` - 取值 【0, 100】，实际上内部的区间是[0，10]所以如果外部传入53或者59，效果是一样的，因为内部对应的都是5
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### applyMusicWeight

          int applyMusicWeight(int id,
                               int weight)

      单独设置某一路音频音量权重（包含素材流和主流）
      Parameters:
        `id` - 流id 可以通过`EffectBean.getId()`获取，如果是调整原音则可以通过`getSourcePartManager()`，先获取 片段管理器`com.aliyun.svideosdk.common.impl.AliyunClipConstructor`，然后通过`com.aliyun.svideosdk.common.impl.AliyunClipConstructor#getAllClips()` 获取到片段列表，遍历列表，通过`AliyunClip.getId()`拿到主流每个片段的流ID，然后用这些流ID，分别设置每个片段的音量比重。
        `weight` - 取值 【0，100】，实际上内部的区间是[0，10]所以如果外部传入53或者59，效果是一样的，因为内部对应的都是5
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### denoise

          @Deprecated
          int denoise(int id,
                                  boolean needDenoise)

      Deprecated.

      降低指定音频流的噪声（v3.19.0以后已废弃）

      请用 #denoise(int,int)代替

      Parameters:
        `id` - 音频流id
        `needDenoise` - 是否需要去噪,比如开了之后需要关闭，再调用一次，传入false
      Returns:
        正确返回0，错误返回错误码

    - #### denoise

          int denoise(int id,
                      int denoiseWeight)

      降低指定音频流的噪声,0~100，0表示关闭降噪，100表示降噪能力最强

      v3.19.0 新增

      Parameters:
        `id` - 音频流id
        `denoiseWeight` - 0表示关闭降噪，100表示降噪能力最强
      Returns:
        正确返回0，错误返回错误码

    - #### createPasterManager

          AliyunPasterManager createPasterManager()

      创建贴图manager，负责贴图的添加渲染
      Returns:
        贴图管理器
      See Also:
        `AliyunPasterManager`

    - #### createRollCaptionComposer

          AliyunRollCaptionComposer createRollCaptionComposer()

      创建翻转字幕composer，负责编排一组字幕自动生成动画效果

      v3.20.0 新增

      Returns:
        翻转字幕编排器
      See Also:
        `AliyunRollCaptionComposer`

    - #### getPasterRender

          AliyunPasterRender getPasterRender()

      底层的贴图渲染类，如果没有UI编辑的需求则可以直接使用该接口，
      Returns:
        贴图渲染对象
      See Also:
        `AliyunPasterRender`

    - #### obtainCanvasController

          AliyunICanvasController obtainCanvasController(Context context,
                                                         int w,
                                                         int h)

      获取涂鸦控制器
      Parameters:
        `context` - 建议传入applicationContext
        `w` - 涂鸦画布的宽
        `h` - 涂鸦画布的高
      Returns:
        涂鸦控制器
      See Also:
        `AliyunICanvasController`

    - #### onDestroy

          void onDestroy()

      生命周期调用

    - #### setTransition

          int setTransition(java.util.Map<java.lang.Integer,TransitionBase> transitions)

      设置视频过渡动画时间长度，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
      Parameters:
        `transitions` - 转场特效的map表
      Returns:
        成功返回0，失败返回对应的ErrorCode

        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunErrorCode.ERROR_PARAM_TRANSITION_DURATION_INVALID` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_EDITORLAYOUT_INVALID_SIZE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_RENDER_INIT_SPEAKER_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_VIDEO_ENCODER_ERROR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### setTransition

          int setTransition(int index,
                            TransitionBase transition)

      设置视频过渡动画时间长度，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
      Parameters:
        `index` - 视频索引
        `transition` - `TransitionBase`
      Returns:
        成功返回0，失败返回对应的ErrorCode

        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunErrorCode.ERROR_PARAM_TRANSITION_DURATION_INVALID` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_EDITORLAYOUT_INVALID_SIZE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_RENDER_INIT_SPEAKER_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_VIDEO_ENCODER_ERROR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### updateTransition

          int updateTransition(int clipIndex,
                               TransitionBase transitionBase)

      更新自定义转场对象，接口说明：指定视频索引添加过渡时长，当索引为0时为第一段视频添加过渡时长， 此时过渡动画将从第一段的开头起算，只在第一段视频开头起作用，不会影响其他视频段。 当索引大于0且不大于视频总数时，该过渡时间作用于上一段视频的结束和本段视频的开始， 即上一段视频的结尾和本段视频的开头重叠在一起，重叠的时间长度为该过渡时长。 因为sdk音频混流的限制，过渡时间长度最大不能超过最小时长视频时间长度的一半。保证过渡时间内只有两个视频在播放状态
      Parameters:
        `transitionCustom` - 自定义转场特效
      Returns:
        成功返回0，失败返回对应的ErrorCode

        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunErrorCode.ERROR_PARAM_TRANSITION_DURATION_INVALID` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_EDITORLAYOUT_INVALID_SIZE` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_RENDER_INIT_SPEAKER_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_VIDEO_ENCODER_ERROR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_START_ERROR`

    - #### setAnimationRestoredListener

          void setAnimationRestoredListener(OnAnimationFilterRestored li)

      设置动效滤镜恢复的回调，用于开发者恢复对应的UI，如果是草稿箱情况下，要恢复UI，需要在`init(SurfaceView, Context)` 之前设置该回调，因为`init(SurfaceView, Context)`内部会执行动效滤镜恢复逻辑
      Parameters:
        `li` -

    - #### version

          java.lang.String version()

      获取版本号
      Returns:
        版本号信息

    - #### getAliyunLogInfo

          AliyunLogInfo getAliyunLogInfo()

      获取打点数据
      Returns:
        打点信息

    - #### setOutputPath

          void setOutputPath(java.lang.String path)

      设置输出路径
      Parameters:
        `path` -

    - #### rate

          int rate(float rate,
                   long startTimeMills,
                   long durationMills,
                   boolean needOriginDuration)

      播放速率
      Parameters:
        `rate` - 倍速
        `startTimeMills` - 开始时间 单位ms
        `durationMills` - 时长 单位ms
        `needOriginDuration` - 是否需要保持原视频长度
      Returns:
        成功返回时间特效ID，失败返回对应的错误码

        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_TIME_EFFECT_NOT_SUPPORT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### repeat

          int repeat(int times,
                     long startTimeMills,
                     long durationMills,
                     boolean needOriginDuration)

      重复播放（对于某些条件不符合的视频，可能需要调用转码流程来获取比较好的效果）
      Parameters:
        `times` - 重复次数
        `startTimeMills` - 开始时间 单位ms
        `durationMills` - 时长 单位ms
        `needOriginDuration` - 是否需要保持原视频长度
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_TIME_EFFECT_NOT_SUPPORT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### invert

          int invert()

      全部倒播（对于某些条件不符合的视频，可能需要调用转码流程来获取比较好的效果）
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_TIME_EFFECT_NOT_SUPPORT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### deleteTimeEffect

          int deleteTimeEffect(int id)

      删除时间特效
      Parameters:
        `id` - 时间特效id
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_PARAM` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_TIME_EFFECT_NOT_SUPPORT` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`

    - #### addTailWaterMark

          int addTailWaterMark(java.lang.String imagePath,
                               float sizeX,
                               float sizeY,
                               float posX,
                               float posY,
                               long durationUs)

      添加片尾
      Parameters:
        `imagePath` - 水印路径
        `sizeX` - 相对宽
        `sizeY` - 相对高
        `posX` - 相对位置x轴
        `posY` - 相对位置Y轴
        `durationUs` - 时长 单位：us
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.SVIDEO_EDITOR_FILE_NOT_EXIST` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_INVALID_OPTION`

    - #### resetEffect

          int resetEffect(EffectType effectType)

      重置特效
      Parameters:
        `effectType` - 重置的特效类型
      Returns:
        `AliyunErrorCode.ERROR_TRES_ILLEGAL_EDITOR_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_NATIVE_NOT_INITED` `AliyunEditorErrorCode.SVIDEO_EDITOR_INVALID_STATE` `AliyunEditorErrorCode.SVIDEO_EDITOR_PREPARE_ERROR` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_RENDER_ERROR_SCENE_INVALID` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_FILE_STREAM_LIST_FAILED` `AliyunEditorErrorCode.ALIVC_FRAMEWORK_AUDIO_PROCESS_OPTION_LIST_FAILED`
      See Also:
        `EffectType`

    - #### getClipStartTime

          long getClipStartTime(int clipIndex)

      Parameters:
        `clipIndex` - 片段的索引
      Returns:
        片段的开始时间

    - #### getSourcePartManager

          AliyunIClipConstructor getSourcePartManager()

      获取编辑的流片段管理，可以实现对流片段的修改，删除，添加，获取操作

    - #### getProjectInfo

          AliyunIProjectInfo getProjectInfo()

      获取project中的资源信息

    - #### getTimeEffect

          TimeEffectType getTimeEffect()

      获取时间特效

    - #### applySourceChange

          int applySourceChange()

      执行流改变的操作，该操作会导致编辑的视频重新播放

    - #### saveEffectToLocal

          int saveEffectToLocal()

      将所有特效持久化到本地文件 如果要使用AliyunICompose接口合成，必须通过该接口将特效配置持久化到本地文件中
      Returns:
        正确返回0，错误返回错误码

    - #### applyBlurBackground

          int applyBlurBackground(int streamId,
                                  long startTimeMills,
                                  long durationMills,
                                  float blurRadius)

      添加模糊背景
      Parameters:
        `streamId` - 流ID
        `startTimeMills` - 开始时间 单位：毫秒
        `durationMills` - 持续时间 单位：毫秒
        `blurRadius` - 模糊半径[0,29]
      Returns:
        正确返回资源id，错误返回错误码

    - #### deleteBlurBackground

          int deleteBlurBackground(int streamId,
                                   int id)

      删除模糊背景
      Parameters:
        `streamId` - 流ID
        `id` - 资源id
      Returns:
        正确返回0，错误返回错误码

    - #### compose

          int compose(AliyunVideoParam param,
                      java.lang.String outputPath,
                      AliyunIComposeCallBack callback)

      合成
      Parameters:
        `param` - 输出视频的相关参数
        `outputPath` - 输出路径
        `callback` - 合成回调
      Returns:
        正确返回0，错误返回错误码

    - #### cancelCompose

          int cancelCompose()

      取消合成
      Returns:
        正确返回0，错误返回错误码

    - #### audioEffect

          int audioEffect(int id,
                          AudioEffectType type,
                          int weight)

      增加音效 如果素材无音轨，该接口返回成功，但是没有效果
      Parameters:
        `id` - 指定的音频流id
        `type` - 特效类型 `com.aliyun.svideosdk.editor.AudioEffectType`
        `weight` - 特效效果参数 [0,100]
      Returns:
        正确返回该音效的id，错误返回错误码

    - #### removeAudioEffect

          int removeAudioEffect(int id,
                                AudioEffectType type)

      删除某个音效
      Parameters:
        `id` - 通过添加音效获取的资源id
        `type` - 特效类型 `com.aliyun.svideosdk.editor.AudioEffectType`
      Returns:
        正确返回0，错误返回错误码

    - #### setAudioFadeIn

          int setAudioFadeIn(int id,
                             ShapeType shapeType,
                             long duration)

      v3.20 新增

      设置音频淡入,从音频0秒开始

      Parameters:
        `id` - 流ID
        `shapeType` - 淡入的曲线形状 `ShapeType`
        `duration` - 淡入时长。0表示关闭
      Returns:
        正确返回0，错误返回错误码

    - #### setAudioFadeOut

          int setAudioFadeOut(int id,
                              ShapeType shapeType,
                              long duration)

      v3.20 新增

      设置音频淡出, 从后面到音频结束

      Parameters:
        `id` - 流ID
        `shapeType` - 淡出的曲线形状 `ShapeType`
        `duration` - 淡出时长.0表示关闭
      Returns:
        正确返回0，错误返回错误码

    - #### removeAudioFadeIn

          int removeAudioFadeIn(int id)

      v3.20 新增

      移除音频淡入效果

      Parameters:
        `id` - 流ID
      Returns:
        正确返回0，错误返回错误码

    - #### removeAudioFadeOut

          int removeAudioFadeOut(int id)

      v3.20 新增

      移除音频淡出效果

      Parameters:
        `id` - 流ID
      Returns:
        正确返回0，错误返回错误码

    - #### setVideoAugmentation

          int setVideoAugmentation(int streamId,
                                   VideoAugmentationType type,
                                   float value)

      v3.19.0 版本新增

      设置视频增强

      Parameters:
        `streamId` - 目标流id
        `type` - 视频增强类型 `VideoAugmentationType`
        `value` - 参数值
      Returns:
        正确返回0，错误返回错误码

    - #### resetVideoAugmentation

          int resetVideoAugmentation(int streamId,
                                     VideoAugmentationType type)

      v3.19.0 版本新增

      重置视频增强参数

      Parameters:
        `streamId` - 目标流id
        `type` - 视频增强类型 `VideoAugmentationType`
      Returns:
        正确返回0，错误返回错误码
      See Also:
        `VideoAugmentationType`

    - #### getPipManager

          AliyunIPipManager getPipManager()

      v3.25.0 新增

      画中画管理类

      Returns:

    - #### getEditorProject

          AliyunEditorProject getEditorProject()

      v3.23.0 版本新增

      获取工程配置

      Returns:
        工程配置

    - #### updateCover

          void updateCover(Source source)

      v3.25.0 版本新增

      更新封面图片

      Parameters:
        `source` - 草稿封面，如果为空则默认用第一帧图片