Introducing Shotstack, the Cloud Video Editing API
Tags: sideprojects, ffmpeg, video
Published: 2019-06-21 09:26:36

[Shotstack](https://shotstack.io/) is a cloud-based API for creating and editing videos using a simple JSON format and a rendering engine that can render 1000's of videos concurrently.

The go to technology for server based programmatic video editing has traditionally been the open source utility FFmpeg. FFmpeg is a command line utility that performs video manipulation tasks such as transcoding, resizing, trimming and stitching clips together and applying a range of filters and effects. You might use it in your application by either executing it directly or via a wrapper library like PHP-FFmpeg or fluent-ffmpeg for NodeJS.

This is a great approach for simple, individual videos, but the commands can get complicated and features limited when you want to do more sophisticated editing.

There are also important considerations to think about when you start editing videos at any kind of scale; even a simple edit can consume 100% CPU for several seconds or even minutes depending on length and resolution of the input and output files.

Typically, you would solve this with a combination of queues, load balancers, multiple servers, instances or containers and auto scaling. All of this takes expertise, effort and time to setup and maintain.

I created the Shotstack platform to take away all this complexity and let you just focus on creating videos. The API lets you specify how your video edit is to be arranged using a simple to understand JSON format.

I have tried to reproduce a format similar to a non linear video editor like iMovie or Adobe Premiere with a timeline, tracks/layers, clips that work with images, titles and videos and a number of built in effects, transitions and filters that can be added with one line of code.

The other component of the platform is the server side rendering engine - just POST your edit to the render endpoint and it will take care of queuing your render job and scaling up a new instance to take care of the processing and rendering. Your image and video assets just need to be stored on an accessible URL and they will be downloaded into the edit. After a short period of time it'll spit out a final rendered mp4 video or a gif ready to download.

###Why did I build this, you might be asking?

Shotstack started as a side project many years ago with the goal of using machine learning and visual recognition to automatically edit GoPro videos. The A.I. side of things proved more complicated than I anticipated but I had developed the back-end API and rendering engine and thought developers could use it to create their own automated, personalised, large scale video applications.

I've been speaking to a growing number of online video services, some creating millions of videos per month, that are building their own platforms. They are all building something similar, in isolation, spending months re-inventing the wheel and I believe this should be simpler - developers should be able to get setup and create their first video in minutes rather than months, freeing them up to focus on their application rather than infrastructure and maintenance.

I want to share the API with you to see what you might create. My goal is to create a WordPress like ecosystem of applications, modules and video templates that developers can plug together to create new kinds of video-based projects, applications and services.

I'm currently offering free access to the developer community to try out and experiment with the API and there is a [GitHub account](https://github.com/shotstack) with some SDK’s, example code and demo projects. Register for keys here: https://dashboard.shotstack.io/registeror visit https://shotstack.io/ for more details.

I hope you will join me on this journey building a new way of creating video online.