Today, we are officially announcing support for Google's WebM video format.
We had to overcome quite a few hurdles in order to make this happen. I'd like to share a few of our experiences with you.
Our custom FFmpeg build used to be a FFmpeg SoC fork. While it was a couple of versions behind, it was rich in features - and notably, it supported watermarking. Unfortunately, the SoC fork was not maintained and modern day WebM work was done in FFmpeg "head", which meant that our version was never going to support libvpx (WebM video codec).
Watermarking simply didn't work with the new FFmpeg, and WebM didn't work with "our old" FFmpeg. This is something we really had no choice but to find a fix for, because just killing off this beloved feature certainly wasn't an option to us.
So, we were left with two choices: running separate FFmpeg builds for different tasks (ouch), or getting someone to port watermarking (movie source vfilter) back to FFmpeg "head".
We decided to get in touch with one of the FFmpeg developers and we worked together to implement the required fix. After that, FFmpeg was capable of watermarking WebM files, and we were already a huge step forward.
But we hadn't reached the finish just yet.
The FFmpeg version bump meant that we had to upgrade most of our stack along with it (think libfaac, x264, etc.). Now, we love Ubuntu and APT, but at this point (despite pinning, custom packages, etc.) it was bringing us more problems than it solved. Our versioning and compiling requirements were simply too specific. After one dependency kept leading to another, we reached the conclusion that full stack control was the only viable option for us. So, we began to compile specific versions of ExifTool, ImageMagick, Theora, FAAC, JPEG, Ogg, TIFF, FAAD, LAME, opencore-amr, Vorbis, FFmpeg, live_segmenter, PNG, VPX, Ghostscript, MPlayer, SDL, and x264. This was painful at first, but with automated build scripts and our huge test suite (which visually compares results), we are now able to pinpoint and fix encoding issues using the slightest of version bumps of any underlying media library. We can do this quickly, safely, with relative ease and without running into packaging conflicts. What's more is that we can even upgrade between distros without affecting our encoding capabilities.
So, even if it took us a bit longer than we had hoped, we can now finally – and happily – announce WebM support with watermarking, and we also have a better foundation to show for it. And, did I mention we didn't break any customer install while at it? Long live test coverage!
Share your Transloadit project to earn $300
We love seeing how our community uses Transloadit. Tweet @transloadit to get your proposal approved, share what you’ve built in the form of a blog post or a tutorial on your website, and earn a $300 Gift certificate of your choice as well as a full year of the Startup Plan, at no cost after you publish.
Follow us on Twitter:Follow @transloadit
We're SO STOKED to announce the Transloadit Community Plan! 🎉🎉🎉 Unlimited uploading, importing and exporting, 5GB of encoding/month, and access to 50 different file conversion features for all.— 🤖 Transloadit (@transloadit) July 2, 2020
Best part? It's free. Forever. 🤑 Find out more https://t.co/zXWLi3Xa0G pic.twitter.com/DlY5xz1mPG