本文介绍使用ICE高级模板渲染AfterEffects特效视频,通过组装不同的ClipsParam替换AE模板中的素材,达到视频批量生产的目的。
概述
背景
Adobe AfterEffects能制作出丰富绚丽的视频特效而被设计师广泛使用。市面上有大量AE模板供设计师选择,设计师导入AE模板,并替换自己的素材,即可渲染出需要的视频。由于AE的封闭性,替换素材、批量合成这些工作往往还是需要人工来做,当有大量渲染任务时,人工成本巨高无比。
智能媒体生产ICE高级模板功能,专注于AE模板的批量渲染,且与OSS、VOD等服务无缝衔接,客户可以上传自己的AE模板和素材到云端,通过指定规则即可达到批量合成的目的。本篇介绍如何使用ICE进行AE模板的云端批量合成。
目标读者
使用AfterEffects进行视频合成的设计师和开发者,有批量合成AE特效视频的业务方。
方案介绍
设计师通过AfterEffects设计视频模板,通过VE Exporter配置可替换素材,并导出ICE高级模板。
研发通过OpenAPI使用高级模板,根据业务需求替换模板中的素材渲染出多个视频。
方案优势
云端素材替换
市面上的AE渲染平台依托于AE自有渲染引擎,上传一次AE工程只能渲染一个视频,达不到批量生产的目的。ICE可以在云端自由替换素材,上传一次模板可多次使用,通过不同的配置还能对素材进行预处理。同时ICE和OSS、VOD无缝衔接,可以直接引用OSS、VOD上的素材做渲染。
高性能、低成本
智能媒体生产ICE依托于媒体处理服务MPS,有海量的GPU资源,可以从容应对高并发、大文件、高实时性的业务场景。ICE按照成片时长计费,用户即用即取,且保证高可用性。
方案实施
前提条件
开通ICE服务。
开通OSS或VOD服务。
本地已安装Adobe AfterEffects。
操作步骤
步骤一:下载并安装VE Exporter
VE Exporter下载及安装请参考插件下载和安装。
安装完成后,即可在AfterEffects中打开VE Exporter。
步骤二:设置可替换参数,导出ICE高级模板
打开AE工程,在窗口栏中打开VE Exporter,选择创建标准模板2.0-载入合成,将源文件中的素材导入至插件素材列表。
点击不可修改文字,为需要替换的素材设置编辑组。可以每个可替换素材设置UI标记,在提交API合成时会用到。
点击导出模板,等待导出完成后,即可得到ICE高级模板文件(zip格式)。
步骤三:将高级模板注册到ICE
打开ICE控制台>云剪辑模板>高级模板。
点击上传模板,在弹框中选择步骤二得到的高级模板文件,并上传。
当模板状态为可用时,保存模板ID,即可通过OpenAPI来提交渲染了。
也可通过OpenAPI来注册高级模板,参考:高级模板创建及使用。
步骤四:使用模板ID和云端素材提交合成任务
根据模板ID获取高级模板
示例代码:
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":"{\"name\":\"text\",\"media0\":\"mediaId\"}",
"PreviewMedia":"",
"CoverURL":""
}
}
其中ClipsParam即为调用合成服务的ClipsParam参数,用户需要把mediaId换成自己的媒资id(或素材OSS地址),把text换成自己想替换的字幕文案。
其中mediaId,既可以换成图片的mediaId,也可以换成视频的mediaId。
替换ClipsParam中的text和mediaId
上一步获得的ClipsParam如下:
{
"name":"text",
"media0":"mediaId"
}
替换text和mediaId后即可作为ClipsParam参数调用合成服务:
{
"name":"云小宝",
"media0":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object01.jpg"
}
提交合成任务
调用 提交剪辑合成作业 接口提交合成任务,输入TemplateId、ClipsParam、成片地址,提交成功后可以得到JobId。
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());
根据JobId获取任务状态,当任务状态为Success时,视频渲染完成,即可通过地址访问视频了。
while (true) {
GetMediaProducingJobRequest getMediaProducingJobRequest = new GetMediaProducingJobRequest();
getMediaProducingJobRequest.setJobId(jobId);
GetMediaProducingJobResponse getMediaProducingJobResponse = iceClient.getMediaProducingJob(getMediaProducingJobRequest);
System.out.println("GetMediaProducingJobResponse : " + JSONObject.toJSONString(getMediaProducingJobResponse.body));
String status = getMediaProducingJobResponse.getBody().getMediaProducingJob().getStatus();
if ("Success".equals(status) || "Failed".equals(status)) {
break;
}
Thread.sleep(1000);
}
常见问题
支持的AE功能、插件、素材类型有哪些
由于ICE使用VE引擎做AE工程渲染,暂不支持的AE全部功能,已支持的功能请参考:支持的AE功能、支持的AE插件。
设计师也可使用VE Cleaner将AE模板中暂时不被VE引擎支持的功能预处理掉,以实现模板在VE中正常渲染。
更多文档
欢迎加入智能媒体生产ICE官方答疑群咨询交流。