

I started building a tool that simplifies video scripting and the first version worked from JSON. If you can break up your complex filter effects into smaller, isolated ffmpeg commands it may be slightly slower but your rendering pipeline will be significantly more robust. It's excellent at transcoding and doing minor filter graphs but trying to get too crazy with complex filter graphs will lead you down a dark path that imho ffmpeg wasn't really meant for. My advice is to think carefully about what you want to use ffmpeg for. This could be due to anything from some combination of VM resource constraints, internal ffmpeg leaks that compound at scale, etc etc. Creating complex filter graphs programmatically (as ffcms does in this case) is super powerful, but I've also found in practice that larger filter graphs often lead to random, impossible to debug errors. One non-obvious piece of advice I have for developers delving into ffmpeg's filter_complex is to try and keep the filter graphs as short and simple as possible. If you're interested in some non-trivial OSS examples, check out and. I built and sold a company built largely around FFmpeg and this type of tool would've been really useful for understanding how FFmpeg's filter chain works. This is really awesome - FFmpeg's filter_complex is powerful and appropriately named "complex" lol.
