Before explaining the article you should know that Firefox has been supporting MP3 and H.264 since 2013, starting with Firefox-22.
In 2008, the first edition of HTML5 was introduced to the world. This version of HTML brought its first implementation of the <audio> and <video> elements. This enabled native audio and video playback within browsers. Until then, third-party plugins like Adobe Flash had to be used for audio or video playback, although it still remained an option for browsers that didn’t support native playback. With the advent of browser support for audio or video playback, it also came in the discrepancy of what codes were supported by each browser.
Before continuing further, a brief backstory on container formats and codecs is needed.
- Container format: In a nutshell, a container format is like packages of all the media contents into one file (a file extension usually corresponds to the container), for example, MPEG-4, AVI, Flash Video, Ogg, etc. Each container format mostly contains a corresponding video and audio codec.
- Codec: The codec (coder-decoder) is what is used in compressing the media files, for efficiency and reduction in size mainly. The two significant container formats to be discussed here are MPEG-4 and Ogg.
- MPEG-4: It standards are currently the most popular and are used ubiquitously around the world. This container format is associated with the H.264 video codec and MP3 audio codec. Since the context is audio here, let’s focus on MP3. The MP3 was developed by MPEG(Moving Picture Experts Group) and is patent-encumbered. This means the algorithms implementing this codec are patented, and hence anyone who wants to use this codec must pay a license fee to MPEG LA (the license-brokering company for the MPEG codecs). This is the reason why any out-of-the-box Linux system is incompatible with MP3 playbacks.
- Ogg: It is an open standard, open-source–friendly, and patent-unencumbered container format. Its video codec is called Theora and audio codec is called Vorbis. Ogg is supported out-of-the-box by all major Linux distributions.
Time period and reason to not support MP3 in Mozilla: The Youtube and Vimeo, in 2010, announced they were moving to support the new audio and video elements of HTML5, and adopt the H.264 codec for their videos. Subsequently, many more companies began to widely adopt MPEG-4 as well. Mozilla was against supporting MPEG-4 formats on their browser in the past, mainly because it was a patented software, and with patented software comes a lot of limitations, security, and most importantly a tangible licensee fee. The annual licensing fee for H.264 back in 2010 was 5 million USD. The Google Chrome and Safari supported the MPEG-4 formats at that time. Mozilla believed license fees affected not only browser developers and distributors, but also acted like a toll-booth for common users who wish to produce audio or video content. So if the MPEG-4 formats were to become standardized, Mozilla believed it would pose a barrier in the development community undermining the incentive for new developers who would be hesitant on starting off with something that has a price tag attached to it. Mozilla had no apparent means to license H.264 or MP3 under terms that would cover other users of their technology, such as Linux distributors. They wanted the web experience to be selfless and affordable for everyone equally around the world.
There was also a possibility of allowing support for the formats via the underlying operating system, instead of the browser itself, perhaps if the OS supported the formats. This was an indirect way Firefox could have supported MPEG-4, without taking on the task itself. But Mozilla cited a security reason for not doing so, they said it might lead to “exposure of arbitrary codecs to hostile content”.
Supportin period of MP3 on Mozilla: However, beginning with one of their nightly builds in 2013, Firefox began supporting MP3 and H.264, and has been ever since. This happened after a new format called WebM came into the picture. Initially, H.264 had a clause that it could be used royalty-free only for free broadcasts, until 2015. But in 2010, Google came up with WebM and made it open-sourced and royalty-free for life. In response to this, MPEG LA extended the royalty-free clause for free video broadcasts to a lifetime period too. Despite this, Mozilla thought WebM competed well, would pick up popularity and usage, and would make H.264 eventually wane away. But quite the opposite ended up happening, WebM never picked up and H.264 was becoming even more widely adopted. And thus Mozilla eventually yielded into supporting H.264.
Note: Any mention of H.264 also includes the MP3 codec, as they were almost always implemented and used together as a package deal.