Video publishing speed is a usability problem. When a user hits the "upload" button, they don't want to have to wait a few minutes (or longer) to see their video play. But that's what happens almost anywhere.
The problem is video encoding. Encoding video is really slow because video is really complex. A typical video is compressed by about 97% (!) to make it playable. Which makes it even more amazing that video is still about 70% of internet traffic. If it weren't for video encoding, the entire internet would need to be 23x bigger to support the same amount of video.
When we say video encoding is slow, think of it this way: video encoding often takes 25%-100% of the duration of the video, with a minimum of 30s. This is just a rule of thumb, but it holds true of most transcoding platforms running on modern hardware, whether it's your own ffmpeg deployment or a cloud transcoding service like Zencoder or Elastic Transcoder.
This isn't great for users. Who wants to see this?
Let's change this.
Mux Video is the first video streaming platform that doesn't make users wait for transcoding. We can prepare short video in seconds instead of minutes, and feature-length films in and a couple of minutes instead of half an hour. Over time we expect to get these times even lower.
We ran some tests of Mux Video against three leading transcoding platforms: Zencoder, Bitmovin, and Elastic Transcoder. (If you were to build your own platform by standing up ffmpeg on EC2, expect performance somewhere in the range of Zencoder and Elastic Transcoder.)
We configured each platform with the same settings, creating a multibitrate HLS stream using the same codecs, bitrates, profiles, etc. Four S3-hosted input files were then run through each platform ten times. We measured the average clock time from initially submitting a video to the video being ready for playback.
Here are the results.
How did you do that?
We do this through the power of just-in-time transcoding. When a video is submitted, we download the file, slice it into short chunks, and then it's ready to play. When the first user requests the video, we start transcoding, and the video starts playing almost immediately. When the second user requests the video, they watch the previously encoded video.
This isn't easy, which is why almost no one does this. But besides providing a much better experience for end users, it unlocks a whole host of possibilities, like on-the-fly video editing, or creating new formats dynamically for specific devices, or re-transcoding video ads to perfectly match the surrounding video.
Is this a good test?
We get that we're not a neutral party, and people do unfair product comparisons all the time, but we've really tried to make this a fair test. Feel free to ask us for more details of our methodology or suggest improvements.
But more importantly, try this for yourself. Sign up for Mux Video and a few other services and see how the performance compares.