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

Replace 以编程方式更改aepx文件中的文本,replace,mp4,video-processing,after-effects,video-conversion,Replace,Mp4,Video Processing,After Effects,Video Conversion,我正在尝试使用PHP开发一个API,它将接收来自用户的文本作为输入。 我需要更改aepx文件中的文本。在我的研究中,我发现标记和分别包含文本值和对应的十六进制值 我能够解析并替换aepx中标记的文本。 我还可以更改的bdata属性的十六进制值 但在我做了所有更改之后,它没有呈现(尝试使用aerender命令运行)。此外,在打开更改后的aepx文件时,后效应用程序(最新版本-cc 2018)正在崩溃 例子: 起初的 占位符文本 变动后 你好,世界! 考虑:占位符文本有16个字符(因为还计算了

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

我能够解析并替换aepx中标记的文本。 我还可以更改的bdata属性的十六进制值

但在我做了所有更改之后,它没有呈现(尝试使用aerender命令运行)。此外,在打开更改后的aepx文件时,后效应用程序(最新版本-cc 2018)正在崩溃

例子: 起初的

占位符文本
变动后

你好,世界!

考虑:
占位符文本
有16个字符(因为还计算了
空格
字符)

确保新的
输入
文本
占位符文本的总字符长度相同(如果需要较短的文本,可以使用空格增加长度)

最简单的解决方法是:

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

  • 您的PHP API应该检查
    输入
    文本长度,如果少于30个字符,则用空格
    填充剩余部分,可能使用For循环。如果
    input
    高于30个字符的限制,则将其减至前30个字符,并忽略其余字符

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


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

  • 在AfterEffects中打开项目
  • 转到要修改的文字图层
  • 单击箭头图标,显示带有秒表图标和文本“源文本”的小节
  • ALT+单击秒表图标,您将看到它下面的另一个部分,其中包含文本“Expression Source text”
  • 将其值设置为“thisLayer.name”
  • 单击文件>另存为>另存为xml
  • 这将创建一个aepx文件
  • 在任何文本编辑器中打开aepx文件并搜索要修改的文本。确认它看起来像所附的样本aepx图像。下面是我们在上述步骤中通过AfterEffects创建的表达式行“thisLayer.name”
  • 现在将文本“这是要更改的文本”更改为您希望的内容
  • 渲染并检查。如果一切正常,则必须更改
  • 附图:

  • 设置表达式的“后效果”步骤
  • 样本aepx一瞥

  • 我不知道为什么.aepx不会呈现,但您可以围绕Templater Bot的命令行界面构建一个PHP API包装器,它允许您在命令行上与AE交互。有进展吗?答案解决了你的问题吗?@VC.One谢谢你的帮助,Aepx开始渲染,但我的问题没有解决。渲染后文本保持不变。渲染前,在“后效编辑器”中打开文本时,文本看起来是否发生了更改?实际上,我通过修改AEP文件本身测试了答案,我以前从未需要使用AEPX,但我知道它。当我很快有机会的时候,我会看看这个AEPX编辑会发生什么。它似乎没有改变。旧的文本也显示在编辑器中。
    <ldta bdata="0000000c00020000000000010000000000005da80000000000005da8000afc8000005da80000008700 0000000000000000000000000000000000000100010000506c616365686f6c6465722074657874000000000000 000000000000000000000000000200000000000000000000000100000000000000000000000000000000000000 0300000000000000000000000000000000000000000000000000000000"/>
    
    <string>Placeholder text</string>
    
    <ldta bdata="0000000c00020000000000010000000000005da80000000000005da8000afc8000005da80000008700 000000000000000000000000000000000000010001000048656C6C6F20576F726C642100000000000000000000 000000000000000000020000000000000000000000010000000000000000000000000000000000000003000000 00000000000000000000000000000000000000000000000000"/>
    
    <string>Hello World!</string>