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.
The superstar of Flash video compression is On2‘s proprietary VP6 codec.
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.
Well, nice in theory, but in fact On2 has never made a profit, despite the VP6 codec going into Flash 8 nearly three years ago now… So the arrangement actually hasn’t turned out to be lucrative, at least for On2.
In any event, the community is now focusing far more on H.264, a worldwide standard which was incorporated into Flash last year. You should be able to find plenty of free or low-cost encoding solutions for H.264.
@Ryan: Wow, I stand corrected!
I will definitely check out H.264.
A quick check shows our compiled version of ffmpeg already supports x264 so this should be no problem. Thanks for the tip, looking forward to squeezing some great quality improvement.
No problem, good luck with it. If you check out Adobe’s Flash version penetration figures here http://www.adobe.com/products/player_census/flashplayer/version_penetration.html you’ll see that the most recent version of Flash 9 which brought in H.264 achieved over 60% worldwide penetration in under four months of release…
So now, three months later, you’re probably closer to 80-90% penetration, thanks mostly to easy automatic upgrades of the Flash player (in other words, if your visitor doesn’t have the latest version of Flash to play your H.264 content, they will be guided to upgrade seamlessly and painlessly in under 10 seconds).
Maybe Adobe should just buy On2 and release the codec for free?