如何让text layer自动匹配audio layer时长、时间与位置?
After Effects 图层自动对齐/镜像适配实现方案
针对批量语录类内容的制作需求,分两种场景给可直接用的实现方法,不用手动逐个调整图层时长和位置:
方案1:表达式实现(单条内容快速调试用)
不需要安装额外工具,给对应属性加表达式即可自动生效:
- 时长自动匹配音频层:给文本层的「不透明度」属性添加以下表达式,文本会自动在音频层的时间范围内显示,超出范围自动隐藏,无需手动拉伸图层出入点
// 将引号内内容替换为你的音频层实际名称 const targetAudio = thisComp.layer("你的音频层名称"); time >= targetAudio.inPoint && time <= targetAudio.outPoint ? 100 : 0;
- 位置自动镜像适配:给文本层的「位置」属性添加以下表达式,复制图层后会自动生成对称位置的镜像层,无需手动拖动坐标
// 将引号内内容替换为你作为位置参考的图层名 const refLayer = thisComp.layer("参考位置图层名"); // 下方为上下镜像逻辑,需要左右镜像就把坐标索引调换,改为[thisComp.width - refLayer.position[0], refLayer.position[1]]即可 const mirrorPosition = [refLayer.position[0], thisComp.height - refLayer.position[1]]; mirrorPosition
方案2:批量脚本实现(200条内容批量处理首选)
单条加表达式处理200条内容效率太低,直接运行以下脚本,选中需要配对的音频层、文本层后一键完成所有时长对齐、镜像复制、位置适配操作:
{ const activeComp = app.project.activeItem; if (!(activeComp instanceof CompItem)) { alert("请先选中要处理的合成"); exit(); } const selectedLayers = activeComp.selectedLayers; let audioList = [], textList = []; // 自动识别分类选中的音频、文本图层 for (let i = 0; i < selectedLayers.length; i++) { if (selectedLayers[i] instanceof AudioLayer) audioList.push(selectedLayers[i]); if (selectedLayers[i] instanceof TextLayer) textList.push(selectedLayers[i]); } // 按选中顺序配对图层,自动完成对齐和镜像 const processCount = Math.min(audioList.length, textList.length); for (let i = 0; i < processCount; i++) { const currentAudio = audioList[i]; const currentText = textList[i]; // 文本层时长完全匹配对应音频层 currentText.inPoint = currentAudio.inPoint; currentText.outPoint = currentAudio.outPoint; // 复制文本层生成镜像层 const mirroredText = currentText.duplicate(); // 默认生成上下对称位置的镜像字幕,需要左右镜像替换下方坐标逻辑即可 const originPos = currentText.property("Transform").property("Position").value; mirroredText.property("Transform").property("Position").setValue([ originPos[0], activeComp.height - originPos[1] ]); } alert(`已完成${processCount}组内容处理`); }
脚本使用方法:打开AE后依次点击「文件」-「脚本」-「新建脚本编辑器」,粘贴上述代码后,在合成里选中要处理的音频、文本层,点击运行即可。如果需要调整镜像偏移距离、对齐规则,直接修改脚本里位置计算的对应数值就行。
批量处理前建议先保存工程,避免操作失误需要回退
内容的提问来源于stack exchange,提问作者Lukas Red
相关产品推荐
相关产品推荐

