ffmpeg architecture recommendation

Hi! I have a basic CRUD web application that allows users to generate images, gifs, videos. The process can take a while since it can generate thousands of images/gifs/videos. Right now, I just execute a Node script in a child process and it works perfectly fine.

However, my traffic is growing and I always get worried when 2+ processes are triggered at the same time.

I’m open to recommendations here, but I would like to execute my Node script from a droplet that I create on-demand and kill when it’s done.

What is the best way to achieve this?

  • Should I create/use a Docker image with ffmpeg and use that to create a droplet? (Does it need to build the image for each droplet created?)
  • Should I create a droplet, take snapshot, then use the snapshot to create my on-demand droplets

Thank you!

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

Since you’re looking for suggestion, here’s mine.

If your users access your application primarily from the desktop browser (preferably Chrome), you may want to offset such image/video/gif generation onto the clients’ devices instead.

Thus, the users generate their own assets on their local device, right in the browser.

That is what I currently do on app . experienceafrica . today. I’m using FFMPEG WASM (web assembly running in browser) which allows the running of all FFMPEG commands (it’s just a port, so same use)

That way, you can save yourself of all the cloud-based architecture complexities, unless doing so is critical to your services.


  • You can save time and resources, and not having to do things in the cloud
  • You offset whatever computational needs to your users


  • Best works in Chrome 92+ (as at in 2021 October. The other browsers are just too unreliable or doesn’t support)
  • Limit of file size possible to process. ShareArrayBuffer has got some limitations.

You gotta weigh your options. In my use case, doing everything in browser on Desktop works.

You may just include warnings/disable the viewing of the application when on mobile or unsupported browser. It’s unfortunate, but Chrome remains the only browser that supports these cutting edge technologies.