I'm not happy when I'm rendering unless I can actually smell burning plastic, nothing is more frustrating than AE telling you that your render won't complete until the heat death of the universe, while at the same time your CPU is barely raising a sweat. However there is something you can do about it.
After effects comes with a command line renderer called aerender.exe plain ol' aerender on mac). It's in the AE program folder. Using it is a bit challenging for people unused to the -=awesome -=power of the command line, but it is definitely worth doing if you're doing some heavy lifting in After Effects, and you want to be able to harness all the power of your machine.
The beauty of it is that you can run as many instances as you like. What I normally do is keep adding instances until I start running low on memory. I have a 40 physical core machine and it takes a lot to max out the CPU but here's a screenshot where I finally managed it. Each one of those windows is a new instance of the AE render engine:

In that example the per-frame speed of each renderer barely decreased compared to a single instance, so I achieved a speed increase of roughly 4000%. YMMV, depending on how many cores and how much ram your machine has. I went to the effort because I had a project involving very long and and reasonably complex comps. The project would simply not have got done without this technique, or I would have had to farm it out to a commercial render farm.
Of course the speed-up comes at a price, which is a slight increase in complexity of your workflow. You need to set your comps to render as image sequences, and use the multi-machine settings so that each renderer will look for the next unrendered frame. At the end if you need a movie file you'll have to do a compression pass, but in my case I usually master to a png or tiff sequence, and then run off h.264 encoded copies for clients from the master.
And you need to know a little bit about the command line. Stop looking so glum—that's a GOOD thing, that's a GOOD thing.
Windows
The powershell command line I used in that scenario was:
for ($i = 0 ; $i -lt 40; $i++ ){
Start-Process 'C:\Program Files\Adobe\Adobe After Effects <<version>>\Support Files\aerender.exe'-ArgumentList '-project', '"c:\path\to\project.aep"'
sleep 5;
}
This is executed in a powershell window (type in WindowsR and then type powershell.exe). This is a shell scripting language integrated into modern versions of Windows that can be used for all kinds of stuff.
Mac
Using Bash version > 3 (default shell in current versions of OSX), or indeed with cooler shells like zsh, you can use this script:
for i in {1..40}; do
/Applications/Adobe\ After\ Effects\ CC\ 2017/aerender -project ~/Path/to/myproject.aep &
sleep 5
done
The script works thus:
- starts a loop which goes for 40 repeats, you can change the 40 to whatever you think is a sane amount.
- Then it starts aerender as a new process either with the
start-process
command in PS or with the &
in bash, Obviously change the path to aerender.exe / aerender and your project to whatever it is on your machine. A quick and accurate way of filling in paths with the command line is to drag files and folders into it. Also using the tab to auto-fill paths saves a lot of typing and typos.
- Finally it sleeps for 5 seconds—I found that opening too many instances of aerender too quickly was a reliable way to bluescreen / kernel panic my computer.
If you have multiple comps you can render them as movies but start a new renderer for each one. If you invoke aerender.exe like this
aerender.exe -project "c:\path\to\proj.aep" -rqindex 3
it will render the third comp on the render queue. Putting it into a script you can do:
Windows
$numcomps = 12
$projpath= "C:\path\to\project.aep"
for($i=1; $i -lt ($numcomps+1); $i++){
Start-Process 'C:\Program Files\Adobe\Adobe After Effects <<version>>\Support Files\aerender.exe' -ArgumentList '-project', '$projpath', '-rqindex', '$i'
sleep 5;
}
Mac
for i in {1..12}; do
/Applications/Adobe\ After\ Effects\ CC\ 2017/aerender -project ~/Path/to/myproject.aep -rqindex $i &
sleep 5
done
That will start a new aerender instance for each comp–once again, change the 12 to however many comps there are in the queue. Note that this technique can run into problems if you have lots of comps in your queue–if you use all your physical memory things will come to a shuddering halt pretty quick. To keep the number of instances down you have to check how many aerender processes are running and only start a new one when a running one finishes. A simpler workaround is to make as many copies of your project as you want there to be instances, with the render queue divided up between them, and then render them all concurrently. So render thread one would be rendering comps 1,2,3, render thread two would be doing 3,4,5, and so on.
More details here (my blog).