J'essaie d'exécuter aerender
(le moteur de rendu en ligne de commande d'After Effects) par l'intermédiaire de launchd
pour rendre une vidéo à un intervalle de temps donné. La commande fonctionne bien dans le Terminal. Dans launchd
- même lorsque j'utilise screen -d -m ...
- il sort toujours prématurément. Voici ma configuration.
Passez au bas de la page pour les choses que j'ai déjà essayées.
plist pour launchd
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.home.VideoGenerator</string>
<key>ProgramArguments</key>
<array>
<string>/Users/home/Developer/VideoGenerator/exec/render.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>StartInterval</key>
<integer>300</integer>
<key>StandardErrorPath</key>
<string>/var/log/com.home.VideoGenerator.err.log</string>
<key>StandardOutPath</key>
<string>/var/log/com.home.VideoGenerator.out.log</string>
</dict>
</plist>
render.sh
script :
#!/bin/bash
/Applications/Adobe\ After\ Effects\ CC\ 2018/aerender -project /Users/home/Developer/VideoGenerator/resource/video.aep -comp ExportMe -output /Users/home/Developer/VideoGenerator/output/video.mov -OMtemplate Output
Sortie :
Voici à quoi ressemble la sortie normale, lorsque j'exécute ./render.sh
à partir de la ligne de commande :
aerender version 15.0.1x73
PROGRESS: Launching After Effects...
PROGRESS: ...After Effects successfully launched
PROGRESS: Adding specified comp to Render Queue
PROGRESS: 4/2/18 8:41:57 AM PDT: Starting composition ExportMe.
...
C'est tronqué. Il sort également les paramètres de composition et la progression du rendu, toujours avec succès. Rien d'utile pour cet usage.
Voici la sortie enregistrée lorsque je l'exécute à partir de launchd
:
aerender version 15.0.1x73
PROGRESS: Launching After Effects...
PROGRESS: ...After Effects successfully launched
Et c'est tout. (En réalité, je l'exécute dans un contexte où je peux enregistrer le code de sortie et c'est toujours 0. Dans ce but, j'ai radicalement simplifié le projet à ce que vous voyez ici, et il ne fonctionne toujours pas).
Des choses que j'ai essayées :
- Définir
KeepAlive
atrue
dans la liste- Cela relance juste le processus après qu'il soit sorti.
- Añadir
/dev/null
comme leStandardInPath
dans le plist (comme dans ce poste )- Sortir encore tôt
- Añadir
-i
y-c
au début deProgramArguments
(de la même poste que ci-dessus )- La commande ne s'exécute pas
- Définir
AbandonProcessGroup
atrue
dans la liste- Sortir encore tôt
- Ajouter
&
pour mettre la tâche en arrière-plan- Silence dans la sortie
- Lancement
aerender
avecscreen -d -m ...
- En utilisant l'indicateur -L et en vérifiant le journal, la sortie est la même ; elle s'arrête après
aerender
lance After Effects, puis quitte avant le rendu.
- En utilisant l'indicateur -L et en vérifiant le journal, la sortie est la même ; elle s'arrête après
Running ps aux | grep aerender
montre plus de 20 processus en cours d'exécution (probablement en raison de toutes les fois où j'ai exécuté le script), la plupart d'entre eux aerendercore
. Mais pas de sortie, pas de vidéo.
Qu'est-ce que je fais de mal ?