AfterEffects模板云端渲染解决方案

本文涉及的产品
对象存储 OSS,20GB 3个月
视频点播 VOD,流量+存储+转码
对象存储 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,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
SQL 移动开发 运维
5分钟自建可视化平台,在线拖拽组件也太方便了!
5分钟自建可视化平台,在线拖拽组件也太方便了!
213 0
5分钟自建可视化平台,在线拖拽组件也太方便了!
|
4月前
|
开发框架 API 开发者
Flutter表单控件深度解析:从基本构建到高级自定义,全方位打造既美观又实用的移动端数据输入体验,让应用交互更上一层楼
【8月更文挑战第31天】在构建美观且功能强大的移动应用时,表单是不可或缺的部分。Flutter 作为热门的跨平台开发框架,提供了丰富的表单控件和 API,使开发者能轻松创建高质量表单。本文通过问题解答形式,深入解读 Flutter 表单控件,并通过具体示例代码展示如何构建优秀的移动应用表单。涵盖创建基本表单、处理表单提交、自定义控件样式、焦点管理和异步验证等内容,适合各水平开发者学习和参考。
111 0
|
5月前
|
前端开发
通用研发提效问题之动态渲染的配置页,如何解决
通用研发提效问题之动态渲染的配置页,如何解决
|
7月前
|
前端开发 物联网 异构计算
实时云渲染串流技术详解
云串流即使应用于云旅游、考古、数字孪生、云展厅等领域,通过将3D应用运行于云端,降低用户端配置需求。技术流程包括用户股指令、服务器执行、编码传输及前端播放,实现低延迟的实时云渲染。在弱网环境下,需只能调节画质确保流畅性。3D应用采用云推理,服务器需满足3D应用的硬件要求,尤其是GPU和GPU的性能,而前端主要负责解码播放,一般1080P视频能力即可。自行研发成本高,建议选择成熟商家点量云流。
248 0
实时云渲染串流技术详解
|
7月前
|
vr&ar
什么是云交互技术?实时渲染是云交互吗?
云交互指的是用户与云服务器上的应用实时互动,强调低延迟以避免卡顿。"云"可指公有云、私有云或混合云。实时云渲染是一种云交互技术,将3D应用或大模型放在服务器端,用户设备发送指令,服务器实时处理并反馈视频流。这种技术降低了对用户硬件的要求,尤其是对于3D应用和大模型,减少了使用门槛,支持多种设备交互,促进了数字孪生技术的普及和便利性提升。
234 0
什么是云交互技术?实时渲染是云交互吗?
|
7月前
|
移动开发 小程序 前端开发
【5月开发者日回顾】自定义TabBar、自定义组件支持 observers两大功能即将上线
【5月开发者日回顾】自定义TabBar、自定义组件支持 observers两大功能即将上线
55 11
|
7月前
|
存储 缓存 运维
实时云渲染平台有哪些?那个更好用?
实时云渲染平台有哪些?那个更好用?
|
缓存 安全 数据可视化
实时云渲染是什么?怎么用?用在哪?
实时云渲染是什么?怎么用?用在哪?
|
数据格式
宜搭自定义页面组件 TablePc 渲染错误
宜搭自定义页面组件 TablePc 渲染错误
270 4
|
7月前
|
自然语言处理 JavaScript 前端开发
低代码平台加载远端组件解决方案(1)——defineAsyncComponent
低代码平台加载远端组件解决方案(1)——defineAsyncComponent
404 0