以编程方式更改 aepx 文件中的文本

Change text in aepx file programmatically

我正在尝试使用 PHP 开发一个 API,它将接收来自用户的文本作为输入。 我需要更改 aepx 文件中的文本。在我的研究中,我发现 标签和 分别包含文本值和相应的十六进制值。

我能够解析和替换 aepx 中 标签的文本。 我还可以更改 .

的 bdata 属性的十六进制值

但是在我进行了所有更改之后,它没有渲染(尝试 运行 使用 aerender 命令)。此外,After Effect 应用程序(最新的 -cc 2018)在打开更改后的 aepx 文件时崩溃。

示例:

原创

<ldta bdata="0000000c00020000000000010000000000005da80000000000005da8000afc8000005da80000008700 0000000000000000000000000000000000000100010000506c616365686f6c6465722074657874000000000000 000000000000000000000000000200000000000000000000000100000000000000000000000000000000000000 0300000000000000000000000000000000000000000000000000000000"/>

<string>Placeholder text</string>

变更后

<ldta bdata="0000000c00020000000000010000000000005da80000000000005da8000afc8000005da80000008700 000000000000000000000000000000000000010001000048656C6C6F20576F726C642100000000000000000000 000000000000000000020000000000000000000000010000000000000000000000000000000000000003000000 00000000000000000000000000000000000000000000000000"/>

<string>Hello World!</string>

考虑:Placeholder text 有 16 个字符(因为还计算了 space 个字符)。

确保您的新 input 文本 的长度 与总字符数 Placeholder text 的长度相同(您可以使用 spaces 来增加长度,在需要较短文本的地方)。

最简单的解决方法是:

  • 使 Placeholder text 具有最大预期长度(例如:30 个字符),因此在 AE 中创建一个文本字段并按 space 30 次(或使 10 spaces 然后复制这 10 个 空白 字符并重新粘贴它们 2 次)。

  • 您的 PHP API 应检查 input 文本长度,如果低于 30 个字符,则用 space " " 填充剩余部分也许使用 For 循环。如果 input 超过 30 个限制,则 trim 减少到前 30 个字符并忽略其余字符。

  • 最终字符串的长度应与您在 A.E 中创建的文本字段的长度相同。您的 API 现在可以安全地将最终文本放入您的 AEPX 文件中。

您可以使用 After Effects 表达式执行此操作。以下是对我有用的步骤:

  1. 在 AfterEffects 中打开项目
  2. 转到要修改的文本图层
  3. 单击显示带有秒表图标和文本的子部分的箭头图标 "Source Text"
  4. ALT + 单击秒表图标,您将在其下方看到另一个部分,其中包含文字 "Expression Source Text"
  5. 将其值设为"thisLayer.name"
  6. 单击文件 > 另存为 > 另存为 xml
  7. 这将为您创建一个 aepx 文件。
  8. 在任何文本编辑器中打开 aepx 文件并搜索您要修改的文本。确认它看起来像所附示例 aepx 图像中的样子。以下是我们在上述步骤中通过 AfterEffects 创建的表达式行 "thisLayer.name"。
  9. 现在将文本 "This is the text to be changed" 更改为您想要的任何内容,
  10. 渲染并检查。如果一切正常,则必须进行更改。

附加图片:

  1. After Effects 设置表达式的步骤
  2. 示例 aepx 一瞥。