As a form of advanced procrastination, I did a great deal of research on Flash video codecs this morning. I was spurred by reaction to a presentation I made last night where a young lady quite bluntly said, “You can do better [quality Flash video compression].”
The short answer: yes, one can do better than the status quo, but it costs money.
Adobe’s Flash 6+ players support the standard “YouTube” quality Sorenson Spark (Sorenson H.263) codec. Most YouTube videos (and, for that matter, most online video sites) use a derivation of this codec.
Starting with Flash 8, Adobe’s Flash team decided to support On2’s VP6 codec. On2’s proprietary VP6 codec is a beauty when compared to files of same bitrate encoded with Sorenson. Here are some examples.
Here’s the rub: it costs nothing to implement a site using ffmpeg to convert media files into FLV video files using the older Sorenson codec. But, if you want to use VP6 On2 charges upwards of $3,500/year to use their codec via the command line which would support automatic server side encoding of videos.
There is, however, quite a complicated hack around this restriction. On2 used to release a free, personal version of the VP6 encoder for Windows which included vp6vfw.dll — a Video for Windows encoding library. Using some fancy hacks described here you can get mencoder to use the vp6vfw.dll on any platform, even via the command line.
Yes, it would work. But would On2 come a-knockin’?
And, why did Adobe agree to this arrangement? Is VP6 really the best format? (It does look nice!) Or did On2 work out a lucrative agreement with Adobe so they both get a nice chunk of that $3,500/year?
A nice link from VP6’s Wikipedia page shed light on some of these questions. Flash Player Principal Engineer Tinic Uro openly discusses why VP6 was chosen over H.264. (Many saw H.264 as a natural, open successor to Sorenson/H.263.)
Some choice quotes:
- Quality. This is the first thing we looked at and our target was to eat least cut the bandwidth in half while keeping the same visual quality.
- Legacy hardware support. It’s nice to have a new shiny video codec, but if it does not run on an older Macintosh what’s the point? Flash is about ubiquity, not forcing people to upgrade hardware or even require specialized hardware. Our target was a Pentium III 500Mhz and a Mac G3 running at 800Mhz.
It’s a pain to consider having to pay $3,500/year for a video codec. (Completely out of the question for now.) But, VP6 sure does deliver a beautiful product.
[EDIT 6/20/08]: After the below comments, and reading this thread which links back to this post, I think the headline should instead read, “Adobe hands On2 a fat wad of cash. On2 throws it away.”
On2, you have a pricing problem. A fixed cost ($3,500/yr) for your server product is silly. Here’s a better answer: let me use the codec for free, we’ll call this a “development version,” and come back and charge me if I’m actually able to make a successful website using your product.
If I’m successful, then I would be happy to pay MORE than $3,500/yr, especially if your codec is responsible for building a multimillion dollar business. Instead, given your current pricing structure, I’ll develop my website with H.264. If the site is a success, you won’t see a dime.