Saya mencoba lari aerender
(Renderer baris perintah After Effects) via launchd
untuk membuat video pada interval waktu. Perintah berfungsi dengan baik di Terminal. Di launchd
- bahkan ketika saya gunakan screen -d -m ...
- selalu keluar lebih awal. Ini pengaturan saya.
Lewati ke bawah untuk hal-hal yang sudah saya coba.
Plist untuk 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
naskah:
#!/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
Keluaran:
Berikut adalah apa yang terlihat seperti output normal, ketika saya menjalankan ./render.sh
dari baris perintah:
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.
...
Ini terpotong. Ini juga menampilkan pengaturan komposisi dan membuat kemajuan, selalu berhasil. Tidak ada yang berguna untuk tujuan ini.
Inilah output yang dicatat ketika saya menjalankannya launchd
:
aerender version 15.0.1x73
PROGRESS: Launching After Effects...
PROGRESS: ...After Effects successfully launched
Dan itu saja. (Pada kenyataannya saya menjalankan ini dalam konteks di mana saya dapat mencatat kode keluar dan selalu 0. Untuk tujuan ini saya secara drastis menyederhanakan proyek menjadi apa yang Anda lihat di sini, dan itu masih tidak berjalan).
Hal yang saya coba:
- Set
KeepAlive
untuktrue
dalam daftar- Ini baru meluncurkan kembali proses setelah keluar
- Menambahkan
/dev/null
sebagaiStandardInPath
dalam daftar (sesuai posting ini )- Masih keluar lebih awal
- Menambahkan
-i
dan-c
ke awalProgramArguments
(dari posting yang sama seperti di atas )- Perintah tidak berjalan
- Set
AbandonProcessGroup
untuktrue
dalam daftar- Masih keluar lebih awal
- Menambahkan
&
untuk menempatkan tugas di latar belakang- Output keheningan
- Meluncurkan
aerender
denganscreen -d -m ...
- Menggunakan flag -L dan memeriksa log, hasilnya sama; berhenti setelah
aerender
meluncurkan After Effects dan kemudian keluar sebelum rendering.
- Menggunakan flag -L dan memeriksa log, hasilnya sama; berhenti setelah
Lari ps aux | grep aerender
menunjukkan lebih dari 20 proses yang berjalan (mungkin dari semua waktu saya menjalankan skrip), kebanyakan dari mereka aerendercore
. Tapi tidak ada output, tidak ada video.
Apa yang saya lakukan salah?
(Diedit / Diperbarui)
Menurut utas ini di StudioSysAdmins , masalah yang saya temui adalah karena
aerender
Ketergantungan pada Window Manager.- Robin Scher
Saya akhirnya menyelesaikan ini dengan menggunakan AppleScript (
osascript
) di daftar properti seperti:Ini dia apa
run.applescript
seperti:saya memberitahu
launchd
menggunakanosascript
untuk berlariaerender
dalam konteks jendela Terminal. Sedikit berbelit-belit, tetapi berhasil!sumber