Dear Vlad/Inlife,
I am experiencing a bug with nexrender following the guide by you here:
https://medium.com/@inlife/guide-to-after-effects-automation-and-personalization-6039e9fa10d1
I made a JSON file very similar to the file in your guide (please find it below), and had a problem while running the following line in the cli (I am using After Effects CC 2015):
nexrender-cli-win64.exe --file document.json --binary="D:\ProgramFiles\Aobe\Adobe After Effects CC 2015\Support Files\aerender.exe" --workpath "D:\Fun"
The error is shown in the screenshot below:

In case the image is not clear, the error says:
job rendering failed
Error: Error loading postrender module @nexrender/action-copy: Error: ENOENT: no such file or directory, open 'D:\Fun\oZttHX9GXgHvU6WZ5Soz_\file\D:\Fun\myresult.mp4'
at module.exports.PromiseSerial.map.requireg.catch.err (C:\snapshot\nexrender\packages\nexrender-cli\node_modules\@nexrender\core\src\tasks\actions.js:0:0)
The output I get is an encode.mp4 file (2 KB in size, basically empty, length=00:00:00), and a result.avi file (6MB in size, basically empty, length=00:00:00).
To my surprise, I tried the file on aerender itself and it worked !
I used the following command:
aerender.exe -project "C:\Users\WaleedTemp\Downloads\Compressed\Adobe After Effects - Simple Logo Reveal\Adobe After Effects - Simple Logo Reveal\Simple Design Element Logo.aep" -comp "render" -output "D:\Fun\tester.mp4"
It did not face the 'file not found problem' in the aerender log created by nexrender, and rendered an approx. 1GB, 6 seconds, .avi file. I then used FFmpeg to convert it to .mp4 and it gave me a nice 288 KB, 6 seconds, .mp4 file.
1- I do not have QuickTime player installed, does that have to do with this issue? I know I can't render an mp4 file directly in after affects if I do not have QuickTime player installed. However, I can also see that you use FFmpeg with rendering an .avi file, so I guess you are using (avi+FFmpeg) instead of QuickTime, isn't it ?
2- That could have to do with how nexrender handles the assets in the .aep file itself, because the aerender log says:
"WARNING:After Effects warning: logged one error error: Unable to Render: File Not Found C:\Users\jumbre23\Desktop\Simple Design Element Logo folder(Footage)\logo.png"
on the last line.
If you downloaded the .aep file from the link here, you will notice that the folder contains a (Footage) folder, that in turn contains a "logo.png" file, however, nexrender is not able to see this and somehow refers to the path that the original file creator used to input the "logo.png". To check this, I will try to substitute the assets and check if the problem was that nexrender could not deal with the default assets without substitution.
3- This error is very similar to the error in issue #132 , trying your suggested "--skip-cleanup" option, I get:
job rendering successfully finished
in the cli, however the video length is still 00:00:00 and it does not play.
Waiting to hear from you and thank you for your open source efforts !
Best Regards,
Waleed
{
"template": {
"src": "file:///C:/Users/WaleedTemp/Downloads/Compressed/Adobe After Effects - Simple Logo Reveal/Adobe After Effects - Simple Logo Reveal/Simple Design Element Logo.aep",
"composition": "render"
},
"actions":{
"postrender": [
{
"module": "@nexrender/action-encode",
"preset": "mp4",
"output": "encoded.mp4"
},
{
"module": "@nexrender/action-copy",
"input": "encoded.mp4",
"output": "file///D:/Fun/myresult.mp4"
}
]
}
}
Hello @wmustafaAwad!
From what I see quickly looking over it, seems like there is an issue when the user provides custom work directory option AND also sets up an absolute path the "output" option of the action-copy. The error message pretty much reports that it can't find the path.
Please try removing --workpath "D:\Fun" argument and see if that helps with anything.
Hello @wmustafaAwad ,
there is missing colon in action-copy output value (it should be _file:///D:/Fun/myresult.mp4_)
Also try set the output path without "_file:///_" so only "_D:/Fun/myresult.mp4_". It works for me this way and I also have --workpath set so I believe combination of those two is not the issue.
Hello @littlewall
Thank you for the help !
I got pretty excited (and..ehm.. well, a bit embarrassed) by the mistake. However, it did not work even after trying both approaches suggested by you, it gives me:
1- For the correction (adding colon):
job rendering failed
Error: Error loading postrender module @nexrender/action-copy: Error: ENOENT: no such file or directory, open 'D:\Fun\kO5az4443SU0o7ABuGcHX\file:\D:\Fun\myresult.mp4'
at module.exports.PromiseSerial.map.requireg.catch.err (C:\snapshot\nexrender\packages\nexrender-cli\node_modules\@nexrender\core\src\tasks\actions.js:0:0)
2- For removing the whole 'file:///' thing:
It gives " job rendered successfully", but the output (now 'myresult.mp4') is a zero length 2KB mp4 file.
Will check out removing the workpath and return back to you @inlife
Edited:
Tried @inlife 's tip and it gave me an output just like the second case above:
" job rendered successfully", but the output (now 'myresult.mp4') is a zero length 2KB mp4 file
Ok, I looked at the issue once again. It seems like there are two problems, separate and unrelated.
And first, the main one is that rendering finishes with a video length of 0:00:00.
Considering there are no errors with rendering itself, are you sure that composition you are trying to render is set to be with a certain amount of frames?
Such warnings (like cant access footage file) should not be a causing critical render problem unless you add a flag that prevents rendering if footage item is missing.
However, regarding image substitution, you need to manually specify all needed footage assets in the job description (using job.assets as it showed in the readme), so they would be delivered to the machine/folder where rendering is taking place at.
so I guess you are using (avi+FFmpeg) instead of QuickTime, isn't it?
Yes, since AE pretty much disallows to render anything but avi/mov from the actual cli side, nexrender uses FFmpeg as one of the optional finishing steps.
That problem seems a bit weird, we need to understand what is causing the initial file to be wrongly rendered.
Hey @inlife and @littlewall , it worked !
Thank you guys for the help.
What I did was:
I only added the paths of the assets in the JSON file. Apparently, nexrender has a problem reading the path if it's not clearly stated in the JSON file, which is a very helpful tip for the future.
So, for your and any later inquirer's reference, I am putting the JSON file here:
{
"template": {
"src": "file:///D:/Fun/Adobe After Effects - Simple Logo Reveal/Simple Design Element Logo.aep",
"composition": "render"
},
"assets": [
{
"src": "file:///D:/Fun/Adobe After Effects - Simple Logo Reveal/(Footage)/logo.png",
"composition": "Your_Logo",
"type": "image",
"layerName": "logo.png"
},
{
"composition": "your text",
"type": "data",
"layerName": "your text here",
"property": "Source Text",
"expression": "'Hello'"
},
{
"composition": "shadow_comp",
"type": "data",
"layerIndex": 3,
"property": "Source Text",
"expression": "'Hello'"
},
{
"src": "file:///D:/Fun/Adobe After Effects - Simple Logo Reveal/(Footage)/circle.mp3",
"type": "audio",
"layerIndex": 3
}
],
"actions":{
"postrender": [
{
"module": "@nexrender/action-encode",
"preset": "mp4",
"output": "encoded.mp4"
},
{
"module": "@nexrender/action-copy",
"input": "encoded.mp4",
"output": "D:/Fun/myresult.mp4"
}
]
}
}
very nice 馃憤
Hi All,
Till a few days ago the encoding process was working just fine. However now i keep getting this error. Any idea why this might be happening ?

Hello All,
@kushalkalambi I am facing same issue now.that is below
UnhandledPromiseRejectionWarning: Error: spawn EBUSY
how to resolve this issue?
Please help me.
@sitestrokes The issue people had before was with antivirus: https://github.com/inlife/nexrender/issues/285
Most helpful comment
Hey @inlife and @littlewall , it worked !
Thank you guys for the help.
What I did was:
I only added the paths of the assets in the JSON file. Apparently, nexrender has a problem reading the path if it's not clearly stated in the JSON file, which is a very helpful tip for the future.
So, for your and any later inquirer's reference, I am putting the JSON file here: