如何通过NSTask / Process执行`aerender`命令行工具?

时间:2019-04-21 20:58:14

标签: objective-c swift nstask

我正在尝试通过NSTask / Process执行aerender命令行工具来构建概念证明macOS应用程序以渲染Adobe After Effects项目文件,但效果不佳。

var task: Process = Process()

func render()

    let compPath = "/Users/Admin/Documents/test-proj.aep"

    task.launchPath = "/Applications/Adobe After Effects CC 2019/aerender"
    task.arguments = ["-project", compPath,
                      "-comp", "output"]

    do {
        try task.run()
    } catch let error {
        print(error)
    }
}

上面的代码在后台成功启动After Effects,但是日志产生以下输出:

aerender version 16.1.1x4
PROGRESS: Launching After Effects...
aerender ERROR -1701: AEGetParamPt failed at line 780

我还尝试将命令放入单独的Shell脚本中,然后从应用程序中执行该命令,但这也会产生相同的结果。

我可以使用bashzsh在终端中直接成功运行相同的命令,并获得完美的视频呈现。因此,我认为这是NSTask / Process的错误,而不是aerender

该应用程序具有:

  • 应用程序沙箱已关闭
  • 完整磁盘访问权限以读取 并写。

目前,我愿意接受Obj-C或Swift中的所有想法和答案!

感谢阅读!

1 个答案:

答案 0 :(得分:0)

您需要在Mac中安装ESTK(ExtendScript工具套件)。就我而言,我在安装时将其修复。

请参阅Adobe Extendscript Toolkit CC download for macOS 10.13.2