I found a tutorial on how to do this here but since I’m not all that adept at Python just yet (or Deadline for that matter, I’ve only just taken charge of our render farm) I haven’t yet deciphered it:
In the meantime, we have a problem in that we need to take all of the image frames we generate from AfterEffects and Cinema4D and convert them into a ProRes of varying flavours in certain frame rates, sometimes with Alpha channels etc.
So since we’re all Mac based I was able to write a bash script that will automate the encode of image sequences without the need for any technical knowledge by the graphics team. Its simply runs an interface in which the team selects various options and at the end builds the appropriate Ffmpeg command
Just a sample of what the script does:
echo "\n\t\tWhat framerate is the material?"
echo "\t1) 23.98fps"
echo "\t2) 24fps"
echo "\t3) 25fps"
echo "\t4) 29.97fps"
echo "Answer 1,2,3 or 4? \c"
Ask the user what frame rate they want for the output:
echo "\n\t\tWhat ProRes format would you like?"
echo "\t1) ProRes422 (Proxy)" # -profile:v 0 gives a 11.4MB size and moves you to 10-bit 4:2:2 space
echo "\t2) ProRes422 (LT)" # -profile:v 1 ranges at around 28MB, it too is in 10-bit 4:2:2 space
echo "\t3) ProRes422 (Normal)" # -profile:v 2 moves us up to 45.2MB with 10-bit 4:2:2 space and finally
echo "\t4) ProRes422 (HQ)" # -profile:v 3 goes to 67.9MB at 10-bit 4:2:2
echo "\t5) ProRes4444 "
echo "\t6) ProRes4444 (Alpha Channel)"
echo "Answer 1,2,3 etc? $flavour \c"
if [[ "$flavour" = "1" ]]; then
flavour_out="prores -profile:v 0 -pix_fmt yuv422p10"
elif [[ "$flavour" = '2' ]]; then
flavour_out="prores -profile:v 1 -pix_fmt yuv422p10"
elif [[ "$flavour" = '3' ]]; then
flavour_out="prores -profile:v 2 -pix_fmt yuv422p10"
elif [[ "$flavour" = '4' ]]; then
flavour_out="prores -profile:v 3 -pix_fmt yuv422p10"
elif [[ "$flavour" = '5' ]]; then
flavour_out="prores_ks -profile:v 4 -pix_fmt yuv444p10"
elif [[ "$flavour" = '6' ]]; then
flavour_out="prores_ks -profile:v 4 -pix_fmt yuva444p10"
echo "Unknown parameter"
And then builds a FFmpeg command that runs and drops the file in a designated drop folder for pickup.
# Finally run ffmpeg command
/Volumes/DeadlineRepository/ffmpeg/ffmpeg -f image2 -framerate $framerate_out -i /Volumes/Graphics/_RenderFarmTest/$gfx_machine/ProRezzerated%4d$extension -c:v $flavour_out /Volumes/Graphics/_RenderFarmTest/$gfx_machine/Output_$ProRes$framerate_out.mov
Thats just a small code snippet to get the gist. Anyone else done anything similar or have another solution?