- Streaming production
- Streaming fundamentals
- Encoding your video
- Choosing production tools
- Distributing your video
- Video tutorials
- Peer review
YouTube uses FFMPEG for encoding
- Categorized in: Streaming production
I guess for many producers, the title is akin to "there is no Santa Claus," or "the Republican Party's top priority is reducing taxes for the one-percenters who fund their PACs;" obvious facts, and just not news. On the other hand, for many other producers, confirmation that YouTube uses FFMPEG might mean that they should take a closer look at how they service their own encoding chores.
By way of background, I was preparing a presentation about choosing an enterprise encoder for the Adobe Media Server Users Group. Seemed like defining an enterprise encoder was a reasonable first step. Then I remembered an impression that YouTube used command line encoding tool FFMPEG for their voluminous encodings. Since YouTube is an enterprise, and encodes more video than all other producers combined, if they did use FFMPEG, this would make FFMPEG an "enterprise encoder," albeit one with more feature gaps than Paul Ryan's plans for medicare.
So I googled YouTube and FFMPEG, and found this post; Google’s YouTube Uses FFmpeg, which confirmed my vague impression. Basically, the author, Multimedia Mike, was one of the creators of FFMPEG, and later analyzed files produced by YouTube and found unique file pecularities that could only have been produced by his code.
No IP controversy here, FFMPEG is open source and YouTube is free to use it. Not that you or I would care about this, but there are no royalty implications either; according to the MPEG-LA FAQ on H.264 royalties, royalties are only due on "branded encoder and decoder products sold both to End Users and on an OEM basis for incorporation into personal computers" (emphasis supplied), not encoders built for your own use. Even for encoders built for sale to others, the first 100,000 are free.
Confirmation that YouTube uses FFMPEG is significant for several other reasons, however.
First, FFMPEG uses the x264 H.264 video codec, which myself and other resources have found to be the highest quality H.264 codec available. If you're concerned about playback compatibility of that codec on computers or mobile devices, obviously you don't need to be; it is rock solid, or YouTube wouldn't use it.
In addition, if you have in-house technical resources who can script a system around FFMPEG and are looking for an enterprise encoder, you should at least consider FFMPEG as a low-cost alternative. For virtually all enterprise users, I think a third-party product is a much better choice; programs like ProMedia Carbon, Telestream Vantage and Sorenson Squeeze Server offer a much more comprehensive feature set, while hardware encoders like Elemental Server, Envivio 4Caster and VBricks' 9000 Series offer much greater performance in convenient rack-mounted form factors. For non-UGC use, you also need to think about how to integrate quality control into your encoding workflow as well as support for adaptive streaming formats like HTTP Live Streaming, HTTP Dynamic Streaming, Smooth Streaming and DASH, all of which you'd have to build yourself if you go the FFMPEG route.
But if all you need is massive single file H.264 output of top quality video, an encoding system built around FFMPEG might be the right choice.