There are a lot of recent discussions about H.264 replacing Flash as a video format. Technically, this is a wrong comparision (unfortunately quoted by numerous technical news sites including TechCrunch).

Since this blog has been covering Flash Video for many years, I would like to add some technical background to help better understand why this comparision is not correct. I hope this will help people to be able to better participate in this discussion.

Flash itself is not a video format, but has build-in codecs – meaning it can handle the following video formats without external components:

– H.264 video (.f4v,.mov,.mp4,3gp,etc..)
– ON2 VP6 video (.flv)
– AAC/AAC+ audio (.mp4,.m4a)
– MP3 audio (.mp3)

Decoding and encoding
– Sorenson Spark/H.263 video (.flv)
– Nelly Moser audio
– Speex audio

H.264 is licensed by MPEG-LA. If you are using H.264 in a commercial environment, MPEG-LA is charging license fees. It’s free for non-commercial use. This is a reason why some companies are preferring to continue to use ON2 VP6 with Flash, which doesn’t have similar license restrictions.

The SWF is embedded in the HTML page (which is officially supported by the HTML specs), which has several options to consume e.g. H.264 video content.

The argument now is why can’t a website simply bypass the Flash SWF, and play the video through the HTML video tag. Let’s look at the requirements for a lot of video content on the web:

1) My users need to be able to play the content without technical hurdles

It sounds simple, but is probably the number one reason why most video content on the web is played through Flash. A lot of businesses require a Flash Player version with 95% or higher penetration, before embracing it for their website. A new Flash Player version can reach this number in record time, but still – it’s a very strong requirement. Flash allows consistent playback across all browsers and soon most devices.

The HTML video tag doesn’t specify the codec, meaning H.264 works with certain browsers, but not with the Mozilla Firefox browser, Opera, and older browsers that are not updated. It will take a long, long time (if ever) before consistent H.264 playback across desktop browsers with penetration rates up to 95% will become reality. And as we know, the web moves fast – eventually H.264 will be replaced by codec X by then.

2) My content is valuable, don’t steal it

Content protection is very important for premium content. Without it you wouldn’t be able to watch your favorite TV shows or movies on the web. SWF guarantees adequate content protection, which needs to consistently evolve to respond to ongoing attacks. FP 10.1 for instance will bring Flash content protection to a new level with Flash Access DRM.

The video tag doesn’t specify any content protection.

3) I want more than just progressive download, for instance X

X in this case could be RTMP or HTTP streaming, P2P, video chats, live events. Flash Player 10.1 gives you all of this and more.

The current implementation of the video tag doesn’t support any advanced video delivery techniques.

4) I want to provide my users an engaging video experience

If you are working at an interactive agency, and your goal is to create engaging experiences, playing a video clip is often not sufficient. You want interactive video in creative environments, with overlays, transparency – easy to author and design. Video is a first class citizen in Flash, meaning the creative has full control over the video to embed it in an engaging experience.

The HTML video tag works for video playback, but has it limits when it comes to creative expressiveness and creative tooling.

5) I can’t afford authoring / optimizing for browser X,Y and Z

Once a Flash website has been authored, it works constantly across all browsers. Author once, deploy across all platforms. That saves money.

HTML rendering is browser dependent. It has been worse with former versions of HTML, but is and will continue to be the case due to the nature of competing browser platforms.

6) I want to make money with online video

Flash is the de-facto standard for online video advertisement and monetization with a very rich ecosystem, which allows to run ads within your video experience, and use detailed reporting to measure success. The reason why a lot of advertisement is in Flash is because the authoring tools are also targeting creatives, and therefore are tightly integrated into creative workflows to increase productivity and lower costs. It also guarantees a consistent experiences across platforms/browsers.

The video tag doesn’t support this ecosystem yet, meaning only slowly and very limited support for ad monetization.

As you can see, there are a lot of reasons why you can’t simply replace Flash pointing to a H.264 video with the video tag, pointing to a H.264 video.

H.264 for mobile

For mobile, there is a even more relevant hurdle. Currently most mobile device hardware doesn’t support all variations of H.264, but only the mobile centric profile – baseline. Most content on the web requires higher quality H.264 video, which is primarily encoded in the main and high profiles. This basically means mobile devices can’t play most of the web H.264 video content natively – although it’s in the H.264 format, you have to re-encode the content to a lower profile (the reason why QuickTime has an mobile export option).

Flash Player 10.1 for Android can use the hardware for baseline decoding (same battery efficiencies as “native” video playback), and also offers a SW decoding option for higher quality profiles (also with very decent battery life). Flash offers the full web experience on mobile without having to re-encode your video library.

But advanced video features work on my iPad in the browser, e.g live streaming

Yes, but only on the iPad and on Safari browsers with QuickTime. The video tag allows to connect to the underlying video system, and use some of the platform specific features. It won’t work on non-Safari browsers though, and it not part of the current HTML5 specs.


A lot of words for a complicated topic, but hopefully it shows the problem. The video tag doesn’t provide the features to replace Flash, but it will continue to evolve. And so will Flash. It’s important to have the options.

And to end with a quote from Andy Rubin, VP of Google: “Sometimes being open means not being militant about the things consumers are actually enjoying”