以编程方式更改 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 表达式执行此操作。以下是对我有用的步骤:
- 在 AfterEffects 中打开项目
- 转到要修改的文本图层
- 单击显示带有秒表图标和文本的子部分的箭头图标 "Source Text"
- ALT + 单击秒表图标,您将在其下方看到另一个部分,其中包含文字 "Expression Source Text"
- 将其值设为"thisLayer.name"
- 单击文件 > 另存为 > 另存为 xml
- 这将为您创建一个 aepx 文件。
- 在任何文本编辑器中打开 aepx 文件并搜索您要修改的文本。确认它看起来像所附示例 aepx 图像中的样子。以下是我们在上述步骤中通过 AfterEffects 创建的表达式行 "thisLayer.name"。
- 现在将文本 "This is the text to be changed" 更改为您想要的任何内容,
- 渲染并检查。如果一切正常,则必须进行更改。
附加图片:
- After Effects 设置表达式的步骤
- 示例 aepx 一瞥。
我正在尝试使用 PHP 开发一个 API,它将接收来自用户的文本作为输入。
我需要更改 aepx 文件中的文本。在我的研究中,我发现
我能够解析和替换 aepx 中
但是在我进行了所有更改之后,它没有渲染(尝试 运行 使用 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 表达式执行此操作。以下是对我有用的步骤:
- 在 AfterEffects 中打开项目
- 转到要修改的文本图层
- 单击显示带有秒表图标和文本的子部分的箭头图标 "Source Text"
- ALT + 单击秒表图标,您将在其下方看到另一个部分,其中包含文字 "Expression Source Text"
- 将其值设为"thisLayer.name"
- 单击文件 > 另存为 > 另存为 xml
- 这将为您创建一个 aepx 文件。
- 在任何文本编辑器中打开 aepx 文件并搜索您要修改的文本。确认它看起来像所附示例 aepx 图像中的样子。以下是我们在上述步骤中通过 AfterEffects 创建的表达式行 "thisLayer.name"。
- 现在将文本 "This is the text to be changed" 更改为您想要的任何内容,
- 渲染并检查。如果一切正常,则必须进行更改。
附加图片:
- After Effects 设置表达式的步骤
- 示例 aepx 一瞥。