import pyscreenshot as ImageGrab
The pyscreenshot module claims to be cross platform. (you can "pip install pyscreenshot")
subprocess.call takes a list of arguments as its first argument. On the mac at least if you pass a single string with embedded spaces it tries to find a single executable with that name (including the spaces!) which naturally fails. If I 'split' the string it appears to work:
call("ffmpeg -r 20 -i img-%3d.png -vf scale=412:412 -y movie.avi".split())
Anyway, I hope that helps folks who try this out on a mac (and possibly linux as well!)
-steve