AfterEffects模板云端渲染解决方案

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 本文介绍使用ICE高级模板渲染AfterEffects特效视频,通过组装不同的ClipsParam替换AE模板中的素材,达到视频批量生产的目的。

本文介绍使用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

  1. VE Exporter下载及安装请参考插件下载和安装

  2. 安装完成后,即可在AfterEffects中打开VE Exporter。

步骤二:设置可替换参数,导出ICE高级模板

  1. 打开AE工程,在窗口栏中打开VE Exporter,选择创建标准模板2.0-载入合成,将源文件中的素材导入至插件素材列表。使用流程

  1. 点击不可修改文字,为需要替换的素材设置编辑组。可以每个可替换素材设置UI标记,在提交API合成时会用到。设置UI标记

  2. 点击导出模板,等待导出完成后,即可得到ICE高级模板文件(zip格式)。

步骤三:将高级模板注册到ICE

  1. 打开ICE控制台>云剪辑模板>高级模板。

  2. 点击上传模板,在弹框中选择步骤二得到的高级模板文件,并上传。上传模板

  3. 当模板状态为可用时,保存模板ID,即可通过OpenAPI来提交渲染了。模板状态

说明

也可通过OpenAPI来注册高级模板,参考:高级模板创建及使用

步骤四:使用模板ID和云端素材提交合成任务

  1. 根据模板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。

  1. 替换ClipsParam中的text和mediaId

上一步获得的ClipsParam如下:

{
    "name":"text",
    "media0":"mediaId"
}

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

{
    "name":"云小宝",
    "media0":"https://your-bucket.oss-cn-shanghai.aliyuncs.com/object01.jpg"
}

  1. 提交合成任务

调用 提交剪辑合成作业 接口提交合成任务,输入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官方答疑群咨询交流。二维码

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
19天前
|
缓存 数据处理 数据库
构建高效移动应用:基于云函数的动态背景同步技术
【4月更文挑战第8天】 在移动应用开发中,提升用户体验和后端服务效率始终是核心目标之一。随着云计算的兴起,云函数作为一种轻量级的计算服务模式,为移动应用提供了新的优化途径。本文将探讨一种利用云函数实现的动态背景同步技术,该技术能够在不占用移动设备额外资源的前提下,实现数据的实时更新和同步,从而为用户提供无缝衔接的体验。我们将详细介绍这一技术的工作原理、实现方法以及在实际移动应用中的应用场景。
|
4天前
|
vr&ar
什么是云交互技术?实时渲染是云交互吗?
云交互指的是用户与云服务器上的应用实时互动,强调低延迟以避免卡顿。"云"可指公有云、私有云或混合云。实时云渲染是一种云交互技术,将3D应用或大模型放在服务器端,用户设备发送指令,服务器实时处理并反馈视频流。这种技术降低了对用户硬件的要求,尤其是对于3D应用和大模型,减少了使用门槛,支持多种设备交互,促进了数字孪生技术的普及和便利性提升。
9 0
什么是云交互技术?实时渲染是云交互吗?
|
4月前
|
自然语言处理 JavaScript 前端开发
低代码平台加载远端组件解决方案(1)——defineAsyncComponent
低代码平台加载远端组件解决方案(1)——defineAsyncComponent
71 0
|
4月前
|
存储 缓存 运维
实时云渲染平台有哪些?那个更好用?
实时云渲染平台有哪些?那个更好用?
|
4月前
|
缓存 安全 数据可视化
实时云渲染是什么?怎么用?用在哪?
实时云渲染是什么?怎么用?用在哪?
|
4月前
|
负载均衡 算法 vr&ar
实时云渲染的关键技术有哪些?
实时云渲染的关键技术有哪些?
|
7月前
|
数据可视化 5G 云计算
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
常见的渲染类型有以下几种:实时渲染、离线渲染、实时云渲染、混合渲染。那么什么是实时渲染?实时渲染和离线渲染有哪些区别?各自有哪些典型应用场景...... 有没有人感觉知道了,但又没完全知道? 今天小编就尽量为大家用简单易懂的方式先解释下实时渲染、离线渲染、实时云渲染这3个概念。
干货:实时渲染和离线渲染的区别?实时云渲染又是什么?
|
7月前
|
存储 安全 数据安全/隐私保护
实时云渲染应用之虚拟仿真项目的四大优势
实时云渲染方案中,虚拟仿真程序存储在服务器上,程序执行时占用的是服务器的显卡和CPU资源,用户侧机器无特殊硬件要求,只要能正常的观看1080P的视频即可。因为云渲染方案中,虚拟仿真程序存在服务器上,执行过程也在服务器,因此产生的数据也是在服务器上,数据泄露风险更低,安全系数更高。从用户侧的角度来说,点量实时云渲染方案相比于传统的方式,学生无需安装任何程序和客户端,学生通过网页,就可以打开服务器上的虚拟仿真程序进行操作学习。效果和本地安装几乎无任何差别,摆脱了对于电脑硬件参数的高性能要求,可以做到即点即用。
53 0
|
9月前
|
前端开发 数据可视化 JavaScript
漏刻有时数据可视化大屏核心框架模版更换前端模版操作(2)API开发及数据调用
漏刻有时数据可视化大屏核心框架模版更换前端模版操作(2)API开发及数据调用
66 0