创建并使用高级模板

智能生产制作支持使用高级模板进行视频剪辑,实现复杂动效样式的高级媒体效果。通过阅读本文,您可以了解创建并使用高级模板的方法。

创建高级模板

通过控制台上传

  1. 使用VE Exporter将AE工程导出为模板文件(.zip格式)。具体操作,请参见高级模板制作流程

  2. 通过模板工厂控制台上传模板文件。

通过OpenAPI创建

调用AddTemplate创建模板,传入config(高级模板OSS地址)。

AddTemplateRequest request = new AddTemplateRequest();
request.setType("VETemplate");
request.setName("高级模板测试");
request.setConfig("{\"oss_url\":\"http://your-bucket.oss-cn-shanghai.aliyuncs.com/object.zip\"}");
AddTemplateResponse response = iceClient.addTemplate(request);
System.out.println("templateId : " + response.getBody().getTemplate().getTemplateId());
说明

此处高级模板oss_url的值(OSS地址)为示例值,请根据实际情况设置。

使用高级模板

通过控制台使用

使用高级模板进行剪辑,请参见使用高级模板进行云剪辑

通过OpenAPI使用

  1. 获取模板信息。

    调用GetTemplate获取模板信息,传入TemplateId

    GetTemplateRequest request = new GetTemplateRequest();
    request.setTemplateId("****20b48fb04483915d4f2cd8ac****");
    GetTemplateResponse response = iceClient.getTemplate(request);
    GetTemplateResponseBody.GetTemplateResponseBodyTemplate template = response.getBody().getTemplate();
    System.out.println("templateId : " + template.getTemplateId());
    System.out.println("clipsParam : " + template.getClipsParam());

    返回示例如下所示:

    {
        "RequestId":"******11-DB8D-4A9A-875B-275798******",
        "Template":{
            "TemplateId":"****20b48fb04483915d4f2cd8ac****",
            "Name":"高级模板测试",
            "Type":"VETemplate",
            "Status":"Available",
            "ModifiedSource":"OpenAPI",
            "CreateSource":"OpenAPI",
            "Config":"{\"oss_url\":\"http://your-bucket.oss-cn-shanghai.aliyuncs.com/object.zip\"}",
            "ClipsParam":"{\"Text7\":\"text\",\"Text6\":\"text\",\"Text5\":\"text\",\"Text4\":\"text\",\"Text3\":\"text\",\"Text2\":\"text\",\"Text1\":\"text\",\"Text0\":\"text\",\"Media3\":\"mediaId\",\"Media2\":\"mediaId\",\"Media1\":\"mediaId\",\"Media0\":\"mediaId\"}",
            "PreviewMedia":"",
            "CoverURL":""
        }
    }
    说明

    您也可以使用系统内置模板,使用方式与上述使用个人创建模板类似,不再重复介绍。系统内置模板请参见公共模板库——高级模板

  2. 根据实际需求替换以上步骤返回示例中ClipsParam参数的textmediaId字段。

    {
        "Text0":"字幕0",
        "Text1":"字幕1",
        "Text2":"字幕2",
        "Text3":"字幕3",
        "Text4":"字幕4",
        "Text5":"字幕5",
        "Text6":"字幕6",
        "Text7":"字幕7",
        "Media0":"****20b48fb04483915d4f2cd8ac****",
        "Media1":"****20b48fb04483915d4f2cd8ac****",
        "Media2":"****20b48fb04483915d4f2cd8ac****",
        "Media3":"****20b48fb04483915d4f2cd8ac****"
    }
    说明
    • ClipsParam为合成服务的参数,您可以根据实际需求替换text为指定的文案,替换mediaId为指定的媒资ID或对应的OSS地址(包括视频和图片),支持混合使用。

    • 如果参数ClipsParam只设置了部分字段,未设置的字幕默认为空,媒资默认为模板的原始素材。

    • 字幕支持设置字体,视频、图片支持设置适配模式,详情请参见扩展功能

  3. 调用合成服务。

    调用SubmitMediaProducingJob提交剪辑合成作业,传入TemplateIdClipsParam

    SubmitMediaProducingJobRequest request = new SubmitMediaProducingJobRequest();
    request.setTemplateId("****20b48fb04483915d4f2cd8ac****");
    request.setClipsParam("{\"Text7\":\"字幕7\",\"Text6\":\"字幕6\",\"Text5\":\"字幕5\",\"Text4\":\"字幕4\",\"Text3\":\"字幕3\",\"Text2\":\"字幕2\",\"Text1\":\"字幕1\",\"Text0\":\"字幕0\",\"Media3\":\"****20b48fb04483915d4f2cd8ac****\",\"Media2\":\"****20b48fb04483915d4f2cd8ac****\",\"Media1\":\"****20b48fb04483915d4f2cd8ac****\",\"Media0\":\"****20b48fb04483915d4f2cd8ac****\"}");
    request.setOutputMediaConfig("{\"MediaURL\":\"http://your-bucket.oss-cn-shanghai.aliyuncs.com/object.mp4\"}");
    SubmitMediaProducingJobResponse response = iceClient.submitMediaProducingJob(request);
    System.out.println("jobid : " + response.getBody().getJobId());

扩展功能

设置视频、图片的适配模式

使用.adapt_type设置视频、图片的缩放模式,取值范围:

  • 0:不适配。

  • 1:居中填满。

  • 2:完整居中显示。

  • 3:不等比缩放。

{
    "Text7":"字幕7",
    "Text6":"字幕6",
    "Text5":"字幕5",
    "Text4":"字幕4",
    "Text3":"字幕3",
    "Text2":"字幕2",
    "Text1":"字幕1",
    "Text0":"字幕0",
    "Media3":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object01.jpg",
    "Media2":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object02.jpg",
    "Media1":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object03.jpg",
    "Media0":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object04.jpg",
    "Media3.adapt_type":0,
    "Media2.adapt_type":1,
    "Media1.adapt_type":2,
    "Media0.adapt_type":3
}

修改字幕字体

使用.font_file设置字幕字体,也支持设置OSS地址使用自有字体。字体列表请参见字体列表

{
    "Text7.font_file":"SimSun",
    "Text6.font_file":"Yuanti",
    "Text5.font_file":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-font1.ttf",
    "Text4.font_file":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-font2.ttf",
    "Text7":"字幕7",
    "Text6":"字幕6",
    "Text5":"字幕5",
    "Text4":"字幕4",
    "Text3":"字幕3",
    "Text2":"字幕2",
    "Text1":"字幕1",
    "Text0":"字幕0",
    "Media3":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object01.jpg",
    "Media2":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object02.jpg",
    "Media1":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object03.jpg",
    "Media0":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object04.jpg"
}

其他设置

参数ClipsParam还支持以下设置,方便在剪辑的同时对素材进行编辑:

{
  // 媒资
  "Media1": "a8f5f167f44f4964e6c998dee827110c",
  "Media1.loop": 1,  //视频/Gif 素材有效,0:使用引擎默认循环逻辑,1:循环,2:不循环
  "Media1.volume": 0.5,  //视频素材有效, 音量>=0, 标准音量范围为0~1,默认值为0
  "Media1.adapt_type": 0,  //适配方式 0:不做适配,1:cover(居中填满空间),2:contain(完整居中显示),3:fill(不等比缩放),4:transform(使用transform字段对应的矩阵) 默认值为1
  "Media1.transform": [a,c,e,b,d,f],  //行矩阵,[scale, skewX, transX, skewY, scaleY, transY]。矩阵为在原始图片的局部坐标系矩阵,默认为单位矩阵
  "Media1.clip_start": 0.0,  //视频裁剪开始时间,不需要裁剪不传即可,clip_end必须大于clip_start
  "Media1.clip_end": 10.0,  //视频裁剪结束时间,大于0表示需要裁剪,小于等于0表示末尾不需要裁剪
  
  // 字幕
  "Text1":"测试字幕",
  "Text1.adapt": true, //是否开启文字自适应,仅对文本框类型文字有效,默认使用模板设计中的适配方式
  "Text1.fill": "#FFFFFF", //文字填充颜色
  "Text1.stroke": "#FFFFFF", //文字描边颜色
  "Text1.stroke_width": 0.0, //描边宽度
  "Text1.stroke_over_fill": false, //描边是否在填充之上
  "Text1.size": 10, //文字大小,单位为像素
  "Text1.font_file": "SimSun" //字体系列名称
}