You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON文件与After Effects关联渲染动态视频?含网页场景

嘿,这个需求其实挺常见的,尤其是批量生成个性化视频的时候。我分两部分给你拆解——先讲本地JSON怎么和AE联动生成视频,再说说网页表单场景下的动态方案。

一、基础流程:本地JSON与AE联动生成视频

1. 制作AE基础模板

  • 打开After Effects,新建一个合成(比如设置为1080p分辨率、3秒时长、25帧/秒)
  • 添加一个文本层,输入占位符(比如{{name}}),调整好字体、大小、位置等样式;如果需要动画,给文本层加个淡入淡出或者简单的位移动画都可以
  • 记得给这个文本层起个好认的名字(比如“姓名文本”),后面脚本要用到

2. 用脚本读取JSON并批量替换内容

AE支持用JavaScript脚本(.jsx格式)操作项目,这里有两种实用方式:

方式一:直接读取本地JSON文件

写一段简单的脚本,保存为render-names.jsx,然后在AE里通过文件>脚本>运行脚本文件执行:

// 读取本地JSON文件(替换成你的JSON文件实际路径)
var jsonFile = new File("C:/Users/xxx/Documents/names.json");
jsonFile.open("r");
var jsonData = JSON.parse(jsonFile.read());
jsonFile.close();

// 选中你的模板合成(也可以用app.project.item("合成名称")指定)
var targetComp = app.project.activeItem;

// 遍历每个姓名,生成对应视频
for (var i = 0; i < jsonData.length; i++) {
    var currentName = jsonData[i].name;
    
    // 替换文本层内容
    var textLayer = targetComp.layers("姓名文本");
    textLayer.property("Source Text").setValue(currentName);
    
    // 添加到渲染队列
    var renderItem = app.project.renderQueue.items.add(targetComp);
    var outputModule = renderItem.outputModule(1);
    
    // 应用H.264预设(生成MP4)
    outputModule.applyTemplate("H.264");
    // 设置输出路径和文件名(每个姓名对应单独文件)
    outputModule.file = new File("C:/Users/xxx/Output/" + currentName + ".mp4");
}

// 启动批量渲染(取消注释即可自动执行)
// app.project.renderQueue.render();

方式二:用AE可视化的“数据驱动动画”绑定

  • 打开窗口>数据驱动动画面板,点击创建新数据源,选择你的JSON文件,AE会自动识别name字段
  • 选中文本层的Source Text属性,拖到面板里的name字段上,完成绑定
  • 之后还是用类似上面的脚本,遍历JSON数据切换数据源并添加渲染任务,操作更直观

3. 执行渲染

运行脚本后,AE的渲染队列会自动添加所有姓名对应的任务,确认输出路径和格式无误后,点击渲染按钮就能批量生成MP4了。

二、网页表单场景:让AE从URL动态读取JSON

如果你的表单提交后,JSON数据是通过后端接口暴露的(比如https://your-server.com/api/submitted-names返回目标数组),可以修改脚本让AE直接从网络拉取数据,甚至实现表单提交后自动触发渲染。

1. 后端准备工作

  • 表单提交后,后端把用户输入的姓名存储起来,提供一个GET接口返回格式正确的JSON数组
  • 注意要配置CORS允许AE所在的机器访问,或者如果AE和后端在同一局域网/服务器,直接用IP地址访问接口即可

2. 修改脚本从URL读取JSON

把之前的本地文件读取逻辑换成网络请求,脚本示例:

// 从后端接口读取JSON(替换成你的实际接口URL)
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://your-server.com/api/submitted-names", false); // 同步请求确保数据加载完成
xhr.send();
var jsonData = JSON.parse(xhr.responseText);

// 后续的渲染逻辑和本地版本完全一致
var targetComp = app.project.activeItem;
for (var i = 0; i < jsonData.length; i++) {
    var currentName = jsonData[i].name;
    var textLayer = targetComp.layers("姓名文本");
    textLayer.property("Source Text").setValue(currentName);
    
    var renderItem = app.project.renderQueue.items.add(targetComp);
    var outputModule = renderItem.outputModule(1);
    outputModule.applyTemplate("H.264");
    outputModule.file = new File("C:/Users/xxx/Output/" + currentName + ".mp4");
}

// 自动启动渲染
app.project.renderQueue.render();

3. 实现表单提交后自动触发渲染(可选)

如果想让流程完全自动化,可以用AE自带的aerender命令行工具,让后端在表单提交完成后调用这个命令启动渲染:

  • aerender的路径一般是Adobe After Effects 20XX\Support Files\aerender.exe(Windows)或/Applications/Adobe After Effects 20XX/aerender(Mac)
  • 命令示例:
aerender -project "D:/Projects/NameVideoTemplate.aep" -comp "姓名合成" -script "D:/Scripts/render-names.jsx"

后端可以在收到表单提交的回调里执行这个命令,AE就会自动读取最新的JSON数据并生成视频。


内容的提问来源于stack exchange,提问作者user3348410

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:20:33