涂图

  • 首页
  • 解决方案
    • 拍照和图片编辑
    • 视频录制和后期编辑
    • 模板视频
    • 人像美颜
    • 人脸特效
    • 滤镜特效
    • 贴纸特效
  • API服务
    • 人像服务
    • 视频融合
    • 人脸云
    • 在线滤镜
  • 客户案例
  • 下载
  • 文档
  • 关于我们
  • 控制台
  • 一、新手上路
  • 控制台操作说明
    • 控制台使用说明
    • 自定义资源上传说明
  • 二、SDK 文档
  • 图像 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 相册组件的使用
      • 照片美化组件的使用
      • 主题包基础使用
      • 自定义滤镜
      • 自定义贴纸
      • 自定义界面
      • 自定义 ProgressHUD 提示框(2.0.0~3.2.7)
      • 自定义 ProgressHUD 提示框
      • API 文档
      • 致谢
    • Android 文档
      • 快速开始
      • 安装与更新
      • 集成向导
      • 相机组件的使用
      • 照片美化组件的使用
      • 头像设置组件的使用
      • 多选相册组件的使用
      • 主题包基础使用
      • 自定义贴纸
      • 自定义滤镜
      • 自定义界面
      • 自定义进度信息提示框
      • 自定义 Activity 打开相机
      • API 文档
      • 致谢
    • iOS 技术问题
      • 「Incorrenct app key」
      • 更换滤镜效果图
      • 导航栏与状态栏
      • 组件中使用部分滤镜
      • Cocoapods 相关问题
      • 图片尺寸变化
      • Photos.framework 相关错误
      • 多包名发布
      • GPUImage 的相关错误
      • TuSDKTSALAsset 转换系统对象
      • 滤镜无法显示名称
      • 获取相机的点击事件
    • Android 技术问题
      • Incorrenct app key
      • 重复引用包
      • Recyclerview 库缺失
      • 方法数超出 65536 限制
      • 传入图片路径
      • 指定裁剪比例
      • 指定相册每行列数
      • 禁用相册自动跳转
      • 如何使用部分滤镜?
      • 代码混淆
      • TuSDK 使用的依赖库
      • 多渠道打包
      • 设置相机输出尺寸
      • 相机横屏设置
      • 自定义照片美化组件各功能模块效果默认参数值
    • 拼图设计
      • 拼图模板导出
    • 版本更新日志
      • iOS 版本更新日志
      • Android 更新日志
  • 视频剪辑 SDK
    • 产品说明
      • 产品指南
    • iOS文档
      • TuSDK Video Editor iOS 接入文档
    • Android文档
      • TuSDK Video Editor Android 接入文档
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 流处理(特效相机) SDK
    • 产品说明
      • 产品指南
    • iOS 文档
      • TuSDK特效相机接入文档-iOS
      • TuSDK直播特效接入说明-iOS
    • Android 文档
      • TuSDK特效相机接入文档-Android
      • TuSDK直播特效接入说明-Android
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 视频融合 SDK
    • 产品说明
      • 产品指南
      • 模板管理
    • iOS 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 2.0
      • API文档
    • Android 文档
      • 快速开始
      • 安装与更新
      • TuSDK EVA 接入说明 (2.0.0+)
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 短视频 SDK
    • 产品说明
      • 产品指南
      • 性能测试报告
    • iOS 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • Android 文档
      • 快速开始
      • 集成向导
      • 录制相机的使用
      • 视频编辑器的使用
      • 功能 API 的使用
      • API 文档
    • iOS 技术问题
      • 常见问题
    • Android 技术问题
      • 常见问题
    • 版本更新日志
      • iOS 版本更新日志
      • Android 版本更新日志
  • 三、云服务文档
  • 人像服务
    • 使用文档
      • 快速入门
      • 核心功能
    • API概述
      • API 概述
      • API 文档
    • 常见问题
      • 常见问题
  • 视频融合(云渲染)
    • 使用文档
      • 快速入门
      • 模板管理
    • API概述
      • API概述
      • API 文档
    • 模板设计
      • (新)标准模板设计规范
      • (旧)标准模板设计规范
      • 支持的 AE 功能和属性
      • 动态模板设计规范
    • 模板导出
      • (新)模板导出插件安装
      • (新)模板导出插件使用
      • (旧)模板导出插件安装
      • (旧)模板导出插件使用
      • (旧)模板效果查看器
      • (旧)模板打包规范
    • 常见问题
    • 版本更新日志
      • 导出插件版本更新日志
      • 效果查看器更新日志
  • 人脸云
    • 使用文档
      • 快速入门
      • 核心功能
    • API 概述
      • API 概述
    • 常见问题
      • 常见问题
  • 在线滤镜
    • 使用文档
      • 快速入门
      • 核心功能
      • FILTER API
      • API 错误码表
    • API概述
      • API 概述
    • 常见问题
      • 常见问题
  • 四、综合
  • 涂图隐私协议
  • 用户退出机制
  • 动态贴纸设计规范
  • 美妆贴纸设计规范
  • 云服务账单说明
  • 应用包名与密钥
  • 基础服务开发者升级流程
  • 五、常见问题
  • 常见问题
  • 遇到问题,怎么办?
  • 如何使用贴纸管理、滤镜管理?

TuSDK Video Editor 接入说明文档

SDK基础说明

接入示例

// 1.初始化处理环境       
val mEngine = Engine.getInstance()
mEngine.init(null)

// 2.创建Video Editor
var editor: VideoEditor = VideoEditor()
val openConfig: VideoEditor.OpenConfig = VideoEditor.OpenConfig()
openConfig.width = 800
openConfig.height = 800
editor.create(openConfig)

// 3.创建Video Clip
val videoConfig = Config()
videoConfig.setString(VideoFileClip.CONFIG_PATH, path)
val videoClip = Clip(editor.context, VideoFileClip.TYPE_NAME)
videoClip.setConfig(videoConfig)

// 4.创建Audio Clip
val audioConfig = Config()
audioConfig.setString(AudioFileClip.CONFIG_PATH, path)
var audioClip = Clip(editor.context, AudioFileClip.TYPE_NAME)
audioClip.setConfig(audioConfig)

// 5.创建视频层
var videoLayer = ClipLayer(editor.context, true)
val videoLayerConfig = Config()
videoLayerConfig.setNumber(Layer.CONFIG_MAIN_LAYER, 1)
videoLayer.setConfig(videoLayerConfig)

// 6.创建音频层
var audioLayer = ClipLayer(mEditor!!.context, false)
val audioLayerConfig = Config()
audioLayerConfig.setNumber(Layer.CONFIG_MAIN_LAYER, 1)
audioLayer.setConfig(audioLayerConfig)

// 7.将Clip 添加到对应层内
videoLayer.addClip(100, videoClip)
audioLayer.addClip(100, audioClip)

// 8.将对应Layer加入到对应的Composition中
mEditor!!.videoComposition().addLayer(11, videoLayer)
mEditor!!.audioComposition().addLayer(11, audioLayer)

// 9.初始化播放器
var mPlayer: VideoEditor.Player = mEditor.newPlayer()
// 10.设置播放状态与进度回调
mPlayer.setListener(Listener() {})
// 11.启动播放器
mPlayer.open()

// 12.初始化渲染View
val displayView : DisplayView = DisplayView()
displayView.init(Engine.getInstance().mainGLContext)
// 13.绑定播放器
displayView.attachPlayer(mPlayer)

// 14.创建Effect
var mFilterProperty: TusdkFilterEffect.PropertyBuilder = TusdkFilterEffect.PropertyBuilder()
var mFilterEffect: Effect = Effect(mEditor!!.context, TusdkFilterEffect.TYPE_NAME)
mFilterEffect.setConfig(mFilterConfig)
mFilterEffect.setProperty(TusdkFilterEffect.PROP_PARAM, mFilterProperty.makeProperty())

// 15.添加Effect
videoClip.effects().add(120, mFilterEffect)

基础类说明

Config

Config 相关的属性为不可动态调节的属性,Config属性变动时,需要重新对VideoEditor进行重新构建

Config 接口说明

public Config();

public Config(Config o);

public boolean setNumber(String key, double v);

public boolean setNumber(String key, long v);

public boolean setBoolean(String key, boolean v);

public boolean setString(String key, String str);

public boolean setBuffer(String key, byte[] buf);

public boolean setBlob(String key, Blob blob);

public String getString(String key);

public double getNumber(String key);

public long getIntNumber(String key);

public boolean getBoolean(String key);

public String getStringOr(String key, String v);

public long getIntNumberOr(String key, long v);

public double getNumberOr(String key, double v);

public byte[] getBuffer(String key)

Property

Property 相关属性为可动态调节属性,Property属性变动时,会实时生效,不需要重新构建VideoEditor

SDK内各层级只可读属性同样通过Property输出,Property构造由各模块自行实现.用户无需手动构造Property.

Clip

Clip作为SDK内的最小单元,负责图片,视频等实例的创建,Clip 类型分别包含 :

  • VideoFileClip 视频轨道
  • AudioFileClip 音频轨道
  • ImageClip 图片
  • Text2DClip 文字
  • VideoReverseFileClip 视频轨道倒放
  • SilenceClip 静音音频数据

各类型Clip可以通过Config来设置相应的属性,加载对应资源.

VideoFileClip 属性说明

  • CONFIG_PATH 视频路径
  • CONFIG_TRIM_START 素材开始位置
  • CONFIG_TRIM_DURATION 素材持续时长

AudioFileClip 属性说明

  • CONFIG_PATH 音频路径
  • CONFIG_TRIM_START 素材开始位置
  • CONFIG_TRIM_DURATION 素材持续时长

ImageClip 属性说明

  • CONFIG_PATH 图片路径
  • CONFIG_DURATION 图片持续时长
  • CONFIG_MAX_SIDE 图片最大边长

Text2DClip 属性说明

  • CONFIG_DURATION 素材持续时长
Text2DClip Property
/**
* 文字显示位置信息
*/
public static class InteractionInfo {

        /**
         * 角度
         */
        public double rotation = 0;
        public double posX = 0;
        public double posY = 0;
        /**
         * 宽度
         */
        public int width = 0;
        /**
         * 高度
         */
        public int height = 0;

        public InteractionInfo(Property prop);
}

/**
* 文字对齐位置
*/
public static enum Alignment {
        LEFT, CENTER, RIGHT;
}

public static class Style {
    // 正常
     public static final int NORMAL = 0;
    // 下划线
     public static final int UNDERLINE = 1 << 0;
}

// Text Clip 可动态调节参数
public static class PropertyHolder {

        public PropertyHolder();


        public PropertyHolder(Property prop);

        // default values
        /**
         * 字体路径
         */
        public String font = "";
        /**
         * 文字
         */
        public String text = "";

        public double posX = 0.5;
        public double posY = 0.5;
        /**
         * 文字缩放大小
         */
        public double fontScale = 1.0;
        /**
         * 旋转角度
         */
        public double rotate = 0;
        /**
         * 字间距
         */
        public double textScaleX = 1.0;
        /**
         * 行间距
         */
        public double textScaleY = 1.0;
        /**
         * 文字描边宽度
         */
        public double strokeWidth = 0.1;
        /**
         * 文字描边颜色
         */
        public int strokeColor = Color.BLACK;
        /**
         * 文字颜色
         */
        public int fillColor = Color.WHITE;
        /**
         * 背景颜色
         */
        public int bgColor = Color.TRANSPARENT;

        /**
         * 文字对齐方式
         */
        public Alignment alignment = Alignment.CENTER;
        /**
         * 文字样式
         */
        public int style = Style.NORMAL;
}
public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
}

VideoReverseFileClip 属性说明

  • CONFIG_PATH 视频路径
  • CONFIG_TRIM_START 素材开始位置
  • CONFIG_TRIM_DURATION 素材持续时长

SilenceClip 属性说明

  • CONFIG_DURATION 静音数据持续时长

Clip 接口说明

// 构造默认Clip
public Clip(EditorContext ctx);

// 根据传入的类型构造Clip
public Clip(EditorContext ctx, String type);

// 根据传入的Model构造Clip
public Clip(EditorContext ctx, Model model);

// 获取类型
public String getType();

// 设置Config
public boolean setConfig(Config config);

// 获取Config
public Config getConfig();

// 设置Model
public boolean setModel(Model m);

// 获取Model
public Model getModel();

// 设置Property
public boolean setProperty(String key, Property prop);

// 获取Property
public Property getProperty(String key);

// Clip预加载
public boolean activate();

// Clip状态复原
public void deactivate();

// 获取轨道信息
public StreamInfo getStreamInfo();

// 返回当前Effects列表
public Effects effects();

Layer

Layer 用于包含Clip,Layer内部的播放顺序为线性的,Layer的长度取决于内部所有Clip的长度和转场信息.

Layer 接口说明

// 设置Config
public boolean setConfig(Config config);

// 设置对应Key值的Property
public boolean setProperty(String key, Property prop);

// 获取当前轨道信息
public StreamInfo getStreamInfo()

ClipLayer

用于添加Clip的Layer实现

ClipLayer 接口说明
/**
* @param ctx 上下文对象
* @param bVideo 视频/音频
*/
public ClipLayer(EditorContext ctx, boolean bVideo);

// 从Model中创建ClipLayer
public ClipLayer(EditorContext ctx, Model model);

// 设置转场效果
// 1 --> 2 当前转场需添加在2上面
public boolean setTransition(int idx, Transition trans);

// 设置当前索引位置设置的转场效果
public Transition getTransition(int idx);

// 解除转场
public boolean unsetTransition(int idx);

// 添加Clip
public boolean addClip(int idx, Clip clip);

// 删除Clip
public boolean deleteClip(int idx);

// 交换Clip
public boolean swapClips(int idx1, int idx2);

// 移动Clip
public boolean moveClip(int fromIdx, int toIdx);

// 获取Clip
public Clip getClip(int idx);

// 获取全部Clip
public HashMap<Integer, Clip> getAllClips();

Layer 属性说明

  • CONFIG_MAIN_LAYER 是否为基础层(最下面的layer)

  • CONFIG_START_POS 当前Layer开始位置

  • CONFIG_BLEND_MODE 当前Layer混合模式

  • PROP_OVERLAY 混合属性调节

  • PROP_MIX 混音属性调节

OverlayProperty 混合属性调节

用于调整多个Layer混合情况下,当前Layer的各混合属性

public static class OverlayPropertyHolder {

        public OverlayPropertyHolder();

        public OverlayPropertyHolder(Property prop);

        // default values

        // 混合强度
        public double blend_strength = 0.5;
        // 不透明度
        public double opacity = 1.0;
        // X 坐标 (0~1)
        public double pzr_pan_x = 0.5;
        // Y 坐标 (0~1)
        public double pzr_pan_y = 0.5;
        // 缩放比例
        public double pzr_zoom = 1.0;
        // 角度
        public double pzr_rotate = 0;

    }


 public static class OverlayPropertyBuilder {
        public OverlayPropertyHolder holder = new OverlayPropertyHolder();

        public OverlayPropertyBuilder() {
        }
        public OverlayPropertyBuilder(OverlayPropertyHolder p);

        public Property makeProperty();
 }
AudioMixProperty 混音强度调节

作用于AudioLayer中,控制混音情况下,各层级混音强度

public static class AudioMixPropertyHolder {

        public AudioMixPropertyHolder();

        public AudioMixPropertyHolder(Property prop);

        // default values
        // 混音强度
        public double weight = 1.0;

}

public static class AudioMixPropertyBuilder {
        public AudioMixPropertyHolder holder = new AudioMixPropertyHolder();

        public AudioMixPropertyBuilder() {
        }
        public AudioMixPropertyBuilder(AudioMixPropertyHolder p);

        public Property makeProperty(); 
}

Effect

Effect为特效单元,Effect可作用于Clip,Layer,Composition.

特效清单:

  • AudioPitchEffect 变声变调
  • AudioRepeatEffect 音频重复
  • AudioRepeatEffectV2 时长内音频重复
  • AudioStretchEffect 音频变速
  • AudioTrimEffect 音频裁剪
  • CanvasResizeEffect 背景调节
  • ColorAdjustEffect 颜色调整
  • CropEffect 画面裁剪
  • TusdkFilterEffect 颜色滤镜
  • TusdkMVEffect MV特效
  • TusdkParticleEffect 魔法特效
  • TusdkSceneEffect 场景特效
  • VideoRepeatEffect 视频重复
  • VideoStretchEffect 视频变速
  • VideoTransformEffect 视频画面变换
  • VideoTrimEffect 视频裁剪

AudioPitchEffect

AudioPitchEffect Property
public static class PropertyBuilder {
        /**
         * 强度(-60~60)
         */
        public double pitch = 0.5;

        public Property makeProperty();
}

AudioRepeatEffect

  • CONFIG_BEGIN 重复开始位置
  • CONFIG_END 重复结束位置
  • CONFIG_REPEAT_COUNT 重复次数

AudioRepeatEffectV2

  • CONFIG_DURATION 重复时长

AudioStretchEffect

  • CONFIG_STRETCH 速度系数
  • CONFIG_BEGIN 速度调节开始位置
  • CONFIG_END 速度调节结束位置

AudioTrimEffect

  • CONFIG_BEGIN 裁剪开始位置
  • CONFIG_END 裁剪结束位置

CanvasResizeEffect

  • CONFIG_WIDTH 目标宽度
  • CONFIG_HEIGHT 目标高度
CanvasResizeEffect Property
// 位置信息
public static class InteractionInfo {
        // 角度
        public double rotation = 0;
        public double posX = 0;
        public double posY = 0;
        // 宽度
        public int width = 0;
        // 高度
        public int height = 0;

        public InteractionInfo(Property prop);

}

    // 背景颜色类型
public static enum BackgroundType {
        // 颜色
        COLOR,
        // 模糊
        BLUR,
}


public static class PropertyHolder {

        public BackgroundType type = BackgroundType.COLOR;
        public int color = Color.BLACK;
        // 模糊强度
        public double blurStrength = 0.5;//[0, 1]

        public double panX = 0.5;
        public double panY = 0.5;
        // 缩放比例
        public double zoom = 1;
        //角度
        public double rotate = 0;


        public PropertyHolder();

        public PropertyHolder(Property prop);
}

public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
}

ColorAdjustEffect

ColorAdjustEffect Property
    // 白平衡
    /// 0:temp:[-1, 1], 1:tint:[0, 1]
    public static final String PROP_TYPE_WhiteBalance = "white-balance";

    // 圣光阴影
    /// 0:highlight:[0, 1], 1:shadow:[0, 1]
    public static final String PROP_TYPE_HighlightShadow = "highlight-shadow";

    // 锐化
    /// 0:[-1, 1]
    public static final String PROP_TYPE_Sharpen = "sharpen";

    // 亮度
    /// 0:[-1, 1]
    public static final String PROP_TYPE_Brightness = "brightness";

    // 对比度
    /// 0:[0, 1]
    public static final String PROP_TYPE_Contrast = "contrast";

    // 饱和度
    /// 0:[-1, 1]
    public static final String PROP_TYPE_Saturation = "saturation";

    // 曝光度
    /// 0:[-1, 1]
    public static final String PROP_TYPE_Exposure = "exposure";

    public static class PropertyItem {
        public String name;
        public double[] values;
        public PropertyItem(String key, double v);
        public PropertyItem(String key, double v1, double v2);
    }
    public static class PropertyHolder {
        public List<PropertyItem> items = new ArrayList<PropertyItem>();
        public PropertyHolder();
        public PropertyHolder(Property prop);
    }
    public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
    }

CropEffect

  • CONFIG_LEFT 左
  • CONFIG_TOP 上
  • CONFIG_RIGHT 右
  • CONFIG_BOTTOM 下

TusdkFilterEffect

  • CONFIG_CODE 滤镜代号
TusdkFilterEffect Property
    /**
     * 可调节参数
     */
    public static final String PROP_PARAM = "parameters";

    public static class PropertyHolder {
        /**
         * 滤镜作用域起点
         */
        public long begin = 0;
        /**
         * 滤镜作用域终点
         */
        public long end = 0;

        /**
         * 滤镜强度(0~1)
         */
        public double strength = 0.5;

        public PropertyHolder();

        public PropertyHolder(Property prop);
    }


    public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
    }

TusdkMVEffect

  • CONFIG_ID MV贴纸ID
TusdkMVEffect Property
    /**
     * 可调节参数
     */
    public static final String PROP_PARAM = "parameters";

    public static class PropertyHolder {
        /**
         * 滤镜作用域起点
         */
        public long begin = 0;
        /**
         * 滤镜作用域终点
         */
        public long end = 0;
        public PropertyHolder();
        public PropertyHolder(Property prop);

    }

    public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
    }

TusdkParticleEffect

  • CONFIG_NAME 魔法效果代号
TusdkParticleEffect Property
 /**
     * 当前新增粒子坐标
     */
    public static final String PROP_PARTICLE_POS = "particle-pos";
    /**
     * 全部可调节参数
     */
    public static final String PROP_PARAM = "parameters";

    public static class ParticlePosPropertyBuilder {
        /// range: [0, 1]
        public double posX = 0;
        public double posY = 0;

        /**
         * 粒子缩放大小
         */
        public double scale = 0.5;
        /**
         * 粒子颜色
         */
        public int tint = Color.TRANSPARENT;
        public Property makeProperty();
    }


    public static class PropertyHolder {
        /**
         * 粒子特效开始时间,相对于视频时间轴
         */
        public long begin = 0;
        /**
         * 粒子特效结束时间,相对于视频时间轴
         */
        public long end = 0;

        /**
         * 粒子大小比例
         */
        public double scale = 0.5;
        /**
         * 粒子颜色
         */
        public int tint = Color.TRANSPARENT;//use default color from config;

        public static class PosInfo {
            /**
             * @param t 当前粒子时间
             * @param x
             * @param y
             */
            public PosInfo(long t, double x, double y);
            public long timestamp = 0;//msec
            public double x = 0;
            public double y = 0;
        }


        /**
         * 全部粒子信息
         */
        public ArrayList<PosInfo> trajectory = new ArrayList<>();
        public PropertyHolder();
        public PropertyHolder(Property prop);
    }

    public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
    }

TusdkSceneEffect

  • CONFIG_NAME 场景特效代号
TusdkSceneEffect Property
 /**
     * 可调节参数
     */
    public static final String PROP_PARAM = "parameters";

    public static class PropertyHolder {
        /**
         * 滤镜作用域起点
         */
        public long begin = 0;
        /**
         * 滤镜作用域终点
         */
        public long end = 0;
        public PropertyHolder();
        public PropertyHolder(Property prop);
    }


    public static class PropertyBuilder {
        public PropertyHolder holder = new PropertyHolder();
        public PropertyBuilder();
        public PropertyBuilder(PropertyHolder p);
        public Property makeProperty();
    }

VideoRepeatEffect

  • CONFIG_BEGIN 重复开始位置
  • CONFIG_END 重复结束位置
  • CONFIG_REPEAT_COUNT 重复次数

VideoStretchEffect

  • CONFIG_STRETCH 视频速度系数
  • CONFIG_BEGIN 速度调节开始位置
  • CONFIG_END 速度调节结束位置

VideoTransformEffect

  • CONFIG_MODE 视频变换模式
  • MODE_None 无变换
  • MODE_k90 顺时针旋转90度
  • MODE_k270 顺时针旋转270度
  • MODE_K180 旋转180度
  • MODE_VFlip 垂直翻转
  • MODE_HFlip 水平翻转

VideoTrimEffect

  • CONFIG_BEGIN 裁剪开始位置
  • CONFIG_END 裁剪结束位置

Effect 接口说明

// 通过类型创建Effect
public Effect(EditorContext ctx, String type);

// 通过Model创建Effect
public Effect(EditorContext ctx, Model model);

// 获取当前类型
public String getType();

// 设置Config
public boolean setConfig(Config config);

// 获取Config
public Config getConfig();

// 设置Model
public boolean setModel(Model m);

// 获取Model
public Model getModel();

// 设置Property
public boolean setProperty(String key, Property prop);

// 获取Property
public Property getProperty(String key);

VideoEditor 视频编辑器

VideoEditor 接口说明

// 通过Model恢复
public boolean create(EditorModel model);

// 通过设置创建
public boolean create(OpenConfig config);

// 更新编辑器设置
public boolean update(OpenConfig config);

// 创建Player
public VideoEditor.Player newPlayer();

// 重置Player
public void resetPlayer();

// 创建Producer
public VideoEditor.Producer newProducer();

// 重置Producer
public void resetProducer();

// 获取当前Player
public VideoEditor.Player getPlayer();

// 获取当前Producer
public VideoEditor.Producer getProducer();

// 获取当前上下文对象
public EditorContext getContext();

// 构建Editor
public boolean build();

// 返回Video Composition
public Composition videoComposition();

// 返回Audio Composition
public Composition audioComposition();

// 返回草稿对象
public EditorModel getModel();

Player 接口说明

// 启动 Player
public boolean open();

// 关闭 Player
public void close();

// 锁定结构
public void lock();

// 解锁结构
public void unlock();

// 设置进度与状态监听
public void setListener(Listener l);

// 设置Player参数
public boolean setOutputConfig(OutputConfig config);

// 获取当前总时长
public long getDuration();

// 开始播放
public boolean play();

// 暂停播放
public boolean pause();

// seek到指定位置(不更新画面)
public boolean seekTo(long ts);

// seek到指定位置(同时更新画面)
public boolean previewFrame(long ts);

Producer 接口说明

// 初始化 Producer
public boolean init(String output);

// 释放 Producer
public void release();

// 设置进度与状态监听
public void setListener(Listener l);

// 设置输出文件属性
public boolean setOutputConfig(OutputConfig config);

// 启动 Producer
public boolean start();

// 终止 Producer
public void cancel();

// 获取输出文件时长
public long getDuration();

Player与Editor交互流程

  1. Lock 播放器player.lock()
  2. 更新 Clip/Effect/Layer*.setConfig(cfg)
  3. 重建 Editoreditor.build()
  4. Unlock 播放器player.unlock()
  5. 播放器 Seekplayer.seek(ts)

  • SDK基础说明
  • 基础类说明
  • 在线技术支持
  • 专业售前售后团队
  • 版本定期更新
  • 全方位解决方案

商务合作

  • 177-6716-7529
  • 2969573855
  • sales@tusdk.com
  • 浙江省 杭州市 西湖区 西斗门9号 福地创业园1号楼3楼301室

关注我们

qrcode

©2019-2025 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号

  • 177-6716-7529
  • sales@tusdk.com
  • 2969573855