Как запустить инструмент командной строки `aerender` через NSTask / Process?

#objective-c #swift #nstask

#objective-c #swift #nstask

Вопрос:

Я пытаюсь создать концептуальное приложение macOS для рендеринга файла проекта Adobe After Effects, выполнив aerender инструмент командной строки через NSTask / Process, но без особого успеха.

 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
  

Я также попытался поместить команды в отдельный сценарий оболочки и вместо этого выполнить его из приложения, но это также приводит к тем же результатам.

Я могу успешно запускать те же команды непосредственно в терминале, используя bash и zsh и получать идеальную визуализацию видео. Поэтому я думаю, что это ошибка с NSTask / Process, а не aerender .

Приложение имеет:

  • Изолированная среда приложений отключена
  • Полные права доступа к диску для чтения и записи.

На данный момент я открыт для всех идей и ответов в Obj-C или Swift!

Комментарии:

1. Возможно, в вашей оболочке есть настройки переменных среды, которых вам Process не хватает.

Ответ №1:

Вам необходимо установить ESTK (ExtendScript Tool Kit) на вашем mac. В моем случае я исправил это при установке.

Обратитесь к загрузке Adobe Extendscript Toolkit CC для macOS 10.13.2