Video Compression Formats for the Web

WebRTC specifies that every web browser must support two video compression formats – H.264 and VP8.

VP8 is a video compression format. It is an open source and free project hence no royalties or other payments for using it. VP8 was created by On2 Technologies and is now owned by Google (who acquired On2 in 2010). Company released it as an open source project in 2010. VP8 is used widely in the WebM file format. It is intended as an HTML5 video tag. It's one of the supported codecs on YouTube. VP8 is supported by Firefox and Google Chrome but not in Internet Explorer.

H.264, also known as MPEG-4 Part 10, Advanced Video Coding, is a video compression format widely used in many different areas, such as Blu-Ray videos, video streaming, it is the main codec for YouTube, Vimeo and iTunes. Google Chrome has native support for H.264 and Mozilla Firefox also supports it using the OpenH264 implementation developed together with Cisco. First versions have limited support and are used only for WebRTC, but the recent version supports video directly on web pages (through the HTML5 video element). The main advantage when using H.264 is the huge existing installation base.

When comparinig the quality of VP8 and H.264, there's not a big difference. The main advantage of H.264 is its ubiquity. It is considered as the major standard despite its being proprietary. H.264 has hardware decoding support on many GPUs such as Nvidia, AMD, Intel, embedded HW decoders available on most mobile devices like tablets and mobile phones. The main problem with its use is that it's proprietary. It's a patented standard and the owner should be paid royalty.

H.264 is very sensitive to motion compression, so on dynamic scenes it won't be as effective as on static images. Well, it mostly applies to movies or anything else, where there's motion. Increased bitrate is what helps prevent visual artifacts. Today's Internet connection speeds generally allow sending huge amounts of data in real time so it shouldn't be a problem.

For end users there's no differences what to use, because they aren't choosing codecs. Two most popular web browsers have native support of both codecs in Windows, Macs OS X and Linux. Mobile devices also support H.264 which is enough.

VP8 and H.264 have limited features and will only meet the requirements for a limited time. There's already a new set of codecs created for huge resolutions (like 8K) called VP9 and H.265. The licensing is inherited from their predecessors VP9 is free and H.265 is proprietary. It will take some time before new version will be officialy supported by new software. Until then everyone has two mature and widely used codecs to choose from.

The best way to check which codecs are supported by your system is to visit https://www.youtube.com/html5. It shows the info about supported video codecs and Media Source Extension – browser feature used to transer secured (DRM) content. Recently Google started to offer youtube HTML5 player by default, so it's an evidence of the ubiquity of native video support on the web.