阿里云首页 智能媒体生产

高级模板创建及使用

本篇介绍使用ICE OpenAPI创建及使用模板。以及高级模板的扩展功能。

高级模板由Adobe AfterEffects生成,结合用户素材达到规模化生产的效果,支持大量AE特效。

创建高级模板

使用VE Exporter将AE工程导出模板文件(zip格式),VE Exporter使用请参考VE Exporter插件的使用手册

将zip上传到OSS,使用OSS地址创建高级模板。

高级模板config示例(注意OSS地址格式):

{"oss_url":"http://your-bucket.oss-cn-shanghai.aliyuncs.com/object.zip"}

创建高级模板示例代码:

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());

使用高级模板

不同模板的ClipsParam参数不同,接下来介绍如何拼接对应模板的ClipsParam参数,并提交合成。

1、根据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":""
    }
}

其中ClipsParam即为调用合成服务的ClipsParam参数,用户需要把mediaId换成自己的媒资id,把text换成自己想替换的字幕文案。

其中mediaId,既可以换成图片的mediaId,也可以换成视频的mediaId。

2、替换ClipsParam中的text和mediaId

上一步获得的ClipsParam如下:

{
    "Text0":"text",
    "Text1":"text",
    "Text2":"text",
    "Text3":"text",
    "Text4":"text",
    "Text5":"text",
    "Text6":"text",
    "Text7":"text",
    "Media0":"mediaId",
    "Media1":"mediaId",
    "Media2":"mediaId",
    "Media3":"mediaId"
}

替换text和mediaId后即可作为ClipsParam参数调用合成服务:

{
    "Text0":"字幕0",
    "Text1":"字幕1",
    "Text2":"字幕2",
    "Text3":"字幕3",
    "Text4":"字幕4",
    "Text5":"字幕5",
    "Text6":"字幕6",
    "Text7":"字幕7",
    "Media0":"****20b48fb04483915d4f2cd8ac****",
    "Media1":"****20b48fb04483915d4f2cd8ac****",
    "Media2":"****20b48fb04483915d4f2cd8ac****",
    "Media3":"****20b48fb04483915d4f2cd8ac****"
}

用户还可以修改字幕字体、图片/视频的适配方式,参考 扩展功能

3、调用合成服务

和普通模板类似,提交合成服务,并传入TemplateId和ClipsParam

参考 提交剪辑合成作业

示例代码:

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());

扩展功能

1、使用OSS地址作为输入

用户可以直接使用媒资ossurl作为媒资输入,渲染出来的效果和使用mediaId一致

以上例子中,ClipsParam可以换成如下部分。

{
    "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示例,OSS地址可以去掉签名,只保留?号前面的部分。

2、控制图片适配模式

媒资素材,参数添加.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
}

3、修改字幕字体

字幕,参数添加.font_file控制字幕字体

参考字体:字体列表

示例:

{
    "Text7.font_file":"SimSun",
    "Text6.font_file":"Yuanti",
    "Text5.font_file":"fangzhengfangsong",
    "Text4.font_file":"fangzhengheiti",
    "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"
}

4、使用系统模板

系统提供了高级模板公共模板库,用户可直接使用,使用方式与个人模板类似。

参考:高级模板-公共模板库

5、使用默认素材

提交合成时,如果用户ClipsParam只传了部分参数,也能渲染出内容,字幕默认使用空,媒资默认用模板原始素材。
以上面模板举例,以下ClipsParam提交后也可以渲染出来内容,未填的参数使用默认值:
{
    "Text2":"字幕2",
    "Text1":"字幕1",
    "Text0":"字幕0",
    "Media1":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object03.jpg",
    "Media0":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object04.jpg"
}

使用限制

1、高级模板媒资素材只支持:

图片:jpg, jpeg, gif, png

视频:mp4, mov

2、高级模板输出格式目前只支持:

mp4, mov, mkv, avi, ts

首页 智能媒体生产 开发指南 模板工厂 高级模板创建及使用