Every so often I hear criticism from CBC’s audience that we choose "proprietary codecs" for the distribution of our audio and video material. The arguments usually go something along the lines of:
- CBC is a publicly-funded organization
- CBC shouldn’t be beholden to proprietary technologies as it limits accessibility
- Therefore CBC should stream audio and video in completely open formats (e.g. Ogg Vorbis, Ogg Theora, etc.)
Nobody wants to be accused of limiting accessibility, and CBC certainly doesn’t start with a position like, "hey, we should be jerks and just lock out anyone who’s using FreeBSD/Linux/OpenSolaris/HP-UX/etc. from watching/listening to our material!" But many moving parts in the encoding and distribution ecosystem prevent us from being completely open, as I’ll explain in this article.
In order to get live and on-demand material to you, there are enterprise systems in place to both encode and deliver it. In TV, live signals are encoded off television signal routers using Digital Rapids encoders and streamed out of the broadcast centre, whereas video-on-demand can be generated at any time by pulling material off a non-linear-editing (NLE) system – in our case, an Avid Unity ISIS – and transcoding it to a web-friendly format.
The same is true in radio, only the systems are different; Dalet+ is used for audio-on-demand export (with built-in transcoding), and hardware encoders are used to turn live audio feeds into the MP3 streams you hear on cbc.ca/listen/
(By the way, in case you’re wondering, I only feel comfortable naming some of the technologies involved because the information is freely available on the Internet – I’m not revealing any proprietary secrets here.)
The material isn’t streamed to you directly, though; CBC uses a content delivery network (CDN) in order to accelerate delivery to the end user, and also to minimize the size of the standing bandwidth contract for the broadcasting centre itself.
As you can see, several pieces of infrastructure have to support a given codec before it can be used for encoding and transmitting material across the Internet:
- Live encoders
- Content delivery network
Whether we like it or not, the codecs supported by our vendors are likely to be the most popular ones in industry. For video, you will see codecs like the various flavors of MPEG, VC-1 (WMV), Quicktime, On2 VP6/VP7, and so on. For audio, you will see AAC, MP2, MP3, and WMA.
At this stage, you might be asking, why don’t we go it alone in order to support open codecs? Why don’t we, for example, build homegrown encoding appliances using Linux boxes running ffmpeg? Or do the content delivery to the end user ourselves by purchasing multi-gigabit-per-second Internet connections?
The answer, of course, is cost: CBC is not funded to be able to do the research and development necessary to engineer, in-house, media encoding and distribution solutions that could match what we can buy off-the-shelf from industry. Sadly, we do not have the luxury of an R&D department (like the BBC’s) that can even invent new codecs like Dirac to meet our needs.
Given these constraints, we try to choose codecs that are as accessible as possible; for example, we’ve recently phased out Windows Media Audio live radio streaming in favour of variable-bitrate (VBR) MP3 so that folks on Mac OS and UNIX/Linux aren’t cut out of our offerings. And, most of our video content has been converted to Flash.
Do I, and many of my co-workers, wish we could use more open codecs? For sure! But until the corporation is funded to do technological research as one of its goals, we remain consumers of other people’s inventions – in order to meet the primary goals of producing television and radio programming itself.