通过 ve 模板实现一键在线视频制作。具体工具从以下网站获取:
http://vesdk.com/ https://www.mbjia.com/。
ve 视频引擎领有弱小的 ae 导出工具个渲染 sdk, 咱们能够从 ae 工具中导出根底模板, 通过渲染 sdk 进行视频制作。https://www.mbjia.com/ 就是通过这种模式实现一键视频制作。
-
ve 视频模板
模板文件夹构造
assets:寄存所有参加模板渲染资源文件
datas:寄存所有动画数据文件
ui:寄存 ui 界面设计所需配饰图文件
config.json:模板配置文件
music.mp3:音频文件规范模板 config 文件介绍
{
"settings": {"attr": 0 // 属性设置 1: 关上 OIT 渲染},
"fps": 30, // 模板的主帧速率
"main": "comp0", // 渲染应用的主合成的 name 属性,SDK 反对预合成,所以导出的合层不止一个,这里定义的是主合成的 name。"description": "合成 1", // 模板的形容,对应 AE 中主合成的名称
"version": "1.3.0.beta", //SDK 内核版本号,与渲染成果非亲非故
"ui_version": "2.0", // 编辑界面版本号目前分为 1.0 与 2.0 2.0 界面更加欠缺更加易懂
"type": 1, // 模版属性,按位设置,1: 一般模版,2: 动静模版,4: 滤镜,512: 字符动画
// 请留神这是一个按位设置的值, 如果一般模板中含有字符动画
// type 的二进制值为 1001, 也就是 1 + 512 = 513
// 所以判断模板类型不要通过 == 去判断, 而是通过按位与去判断,
// 比方判断是不是规范模板 type & 1 != 0, 而不是 type == 1
"snap": [], // 整型数组,要截图的帧索引号,目前尚无实现
"comps": [{ // 保留所有合成对象
"name": "comp0", // 合成名称
"duration": 150, // 总帧数
"fps": 30, // 帧率
"size": [720, 1280], // 合成大小,局部机型不反对超过 4096
"bg": "#ffffffff", // 背景色彩
"layers": [{ // 合成中的所有层对象
"uuid": "layer_2", // 层的惟一 ID
"ui_key": "", // 设计师界面中的由设计师设置的标记"ui_extra":"", // 设计师界面中的由设计师设置的额定信息
"source": "assetkey0", // 层所对应的资源 ID
"type": 32769, // 层的属性 如 3D 属性,层类型等
"blend": 0, // 混合模式
"matte": 0, //trakmat 类型
"resample": 0, //
"enabled": true, // 是否可见
"range": [0, 0, 149,30], // 对应层的终点帧 Start Time,可见的终点帧 In Point,可见的继续帧数 (Out Point - In Point) 下文有详解, 第四个数据已废除
"mask": [], // 蒙版数据
"effects": [], // 特效数据
"transform": { // 变换信息,3d 层为三维数组
"p": [360.0, 640.0], // 地位,[x 轴坐标,y 轴坐标]
"a": [540.0, 960.0], // 锚点,[x 轴坐标,y 轴坐标]
"s": [1.0, 1.0], // 缩放,[x 轴缩放,y 轴缩放]
"t": 1.0, // 透明度, 0 - 1.0
"r": 0.0 // 旋转角度
}
}]
}],
"assets": [{ // 保留所有素材对象数组
"key": "assetkey0", // 素材的惟一 ID
"ui_key": "", // 设计师在导出工具中为素材设置的标识 key"ui_extra":"", // 设计师在导出工具中为素材设置的附加数据
"fps": 30, // 在 AE 中解释素材选项中如果指定帧速率,则存在此 key,否则为 0 或不存在
"name": "asset1.mp4", // 素材的名称,依据素材类型 type 的不同,name 字段的作用也不同
"type": 1, // 素材的类型 0: 未知的素材类型 1: 图片或视频或图片序列帧素材 2:OpenGL 纹理素材 3: 预合成素材 4: 固态色彩素材 5: 自定义素材
"num": 0, // 如果该素材为图片序列帧素材,那么这个 num 代表序列帧文件的数量,其余状况下 num 字段为 0
"text_anim":"data.json", // 文字动画数据,仅开启高级字符动画时存在
"size": [1080, 1920], // 素材大小,ui 2.0 文字素材不再应用这个尺寸(参考 editSize)
"ui":{// 变换信息仅反对 2D 图片与文字只同时存在一种
"f":"a.png", // 前景图(配饰图)"b":"b.png", // 背景图
// 图片素材信息
"group": 10, // 组索引
"index": 0, // 组内索引
"duration": 278, // 继续帧数(以主合成帧率为基准的最大帧数)"accept": 0, // 承受素材类型
"type": 1, // 可编辑类型 1: 图片 2: 文字 3: 高级字符动画文字
"editSize": [100, 100], // 编辑区域,图片素材大小
"p": [100.5, 38.0],
"a": [100.5, 38.0],
"s": [1.0, 1.0],
"t": 1.0,
"r": 0.0,"area": [0, 0, 100, 100] // 设计师指定的点击选中区域,别离是 x 轴坐标, y 轴坐标, width, height
// 文字素材信息
"group": 9, // 组索引
"index": 0, // 组内索引
"duration": 348, // 继续帧数(以主合成帧率为基准的最大帧数)"type": 2, // 可编辑类型 1: 图片 2: 文字 3: 高级字符动画文字
"default": "编辑文字", // 默认文字
"max": 4, // 最大字数
"font": "SimHei", // 字体残缺名称
"font_style": "Regular", // 字体款式(例如粗体、细体或斜体等)"font_family": "STSong",// 字体系列名称
"font_file": "Songti.ttc",// 字体文件名称(不保障为所有字体类型返回字符串;对于某些类型的字体,返回值可能是空字符串)"size": 92, // 字体大小
"line_height": 110, // 行高
"fill": "#ffffff", // 填充色彩
"stroke": "#000000", // 描边色彩
"width": 0, // 描边宽度
"strokeOverFill": true, // 描边是画在填充之上
"align": 0, // 排版形式 0: 左对齐 1: 右对齐 2: 居中对齐
"direction": 0,// 文字方向 0: 横向文字 1: 纵向文字
//--------------------------------------------------------------------------------
//type= 3 类型文字可调用 SDK 绘制图片,须要用到以下信息
"box_text":true, // 是否是文本框类型文字(仅高级字符动画反对)"adapt":true, // 是否开启自适应(仅高级字符动画反对)"bound":[-50,-50,100,100], // 文本框[x,y,width,height](仅高级字符动画反对)//--------------------------------------------------------------------------------
"faux_bold":true, // 是否应用仿粗体(高级字符动画暂未反对)"faux_italic":true, // 是否应用仿斜体(高级字符动画暂未反对)"shadow": "#000000", // 投影(弃用,图层款式投影已反对)"s_alpha": 0.0,//(弃用,图层款式投影已反对)"s_angle": 0,//(弃用,图层款式投影已反对)"s_dist": 0,//(弃用,图层款式投影已反对)"s_size": 0,//(弃用,图层款式投影已反对)"editSize": [100, 100], // 编辑区域,文字图片素材大小
"p": [0.0, 0.0],
"a": [0.0, 0.0],
"s": [1.0, 1.0],
"t": 1.0,
"r": 0.0,
"area": [0, 0, 100, 100] // 设计师指定的点击选中区域,别离是 x 轴坐标, y 轴坐标, width, height
}
}],
"ui_group": [ // 对应 assets->ui->group
{
"size": [
720,
1080
]
},
{
"size": [
720,
1080
]
}
]
}
confi 配置文件中蕴含模板所有素材信息和参数,咱们能够通过这些参数编辑组装咱们须要制作的是的对应 json, 而后通过渲染 sdk 实现视频制作。
- 模板解析
次要解析 config.json 文件获取上述模型中所须要的信息(模板类型,sdk 版本,ae 版本,fps,size,duration 等都能够间接获取应用, 可替换文字数量和可替换图片数量须要遍历 assets 获取。解析可编辑的 asset (有 ui 字段),把默认替换素材(name 字段), 前景图(f 字段),后景图(b 字段),config.json 后上传至云端供前端模板编辑是获取素材应用; - 模板编辑
前端在初始化实现编辑界面后, 能够对可编辑素材进行编辑, 比方旋转, 缩放, 位移, 更改文字内容. 之后把数据组装成 replaceJson replaceJson 详解 后, 再调用后端 api 组成渲染工作数据, 调用渲染 api 开启视频渲染即可.
本篇文章旨在为大家为大家实现一键视频制作提供思路。想要具体理解 VE 视频引擎能够去网站征询, 获取具体服务。