While I was developing beebPlayer – and also since I’ve discontinued
it – I’ve been surprised at some of the misunderstandings about how it
actually worked. In fact, so much that I felt I should probably
explain exactly what beebPlayer was and how it worked. Right now.
…but first we need to establish what the BBC’s iPlayer is.
iPlayer isn’t just a website – it’s an encoding powerhouse and delivery platform.
It’s responsible for chewing through hours of broadcast TV and pumping
out each programme into many different forms to ensure the widest and
greatest number of people are able to access the content. For example,
the finale of Doctor Who on Saturday will first have been converted
into a dozen or so different formats. Half of these are all mostly the
same format, but simply at different bitrates and qualities to suit a
variety of different users on both slow and fast connections (smartly
chosen automatically by the Flash player). There’s another format for
viewers who want to watch the HD version. There are a few more
versions for iPhone/iPod/iPad users. Then there are a couple more for
services such as Virgin’s net-connected Freeview boxes. To encode all
this on a normal desktop PC would take a few days, if not a week – and
yet the BBC has to do this for every single television programme they
air, for every hour of every channel every day. Altogether, it’s a
complex and impressive system – and that’s before the whole server
architecture, networking backend and immense amounts of bandwidth
required to get it from the BBC’s servers to the content servers
(mirrors) and finally from those all the way to your monitor or screen
at the same time as everyone else. And of course, there’s also
radio…
However, for our purposes, the most important thing about iPlayer is
that it also caters for mobile phones, primarily those running the
Symbian operating system (i.e. most ‘dumbphones’ made by Nokia,
Sony-Ericsson and so on.), and provides mobile streams for these phones in a 3G streaming
format designed for small screens and delivered over
RTSP. All users of these phones have to do is load up their WAP or WWW
browser and head to the iPlayer website to install the iPlayer app
onto their phone.
Unfortunately, the BBC mobile TV
website isn’t (or rather, wasn’t)
particularly knowledgeable about Android phones. So, while Android
phones were technically capable of playing these streams, they simply
weren’t made available. (Why? I’ll come to that that later.)
This is where beebPlayer came in – allowing Android phones to access
the streams intended for simpler phones* by simply reading the
appropriate URLs. Unfortunately, the use of the mobile streams –
which remember are designed for phones with small screens and not much
CPU power – aren’t exactly beautiful on the big 3" screens that adorn
most Android phones. The smearing, pixellation and sub-standard sound
don’t exactly make for a cinematic viewing experience, but that wasn’t
the point. The point was: “BBC iPlayer on my shiny new expensive
phone!”
But, that’s all beebPlayer was – a simple little interface for the
content that the BBC already produces. It really isn’t much more than
a user interface for an XML reader that any competent Android
programmer could whip up in an evening, if not a weekend. Indeed, the
very first version of beebPlayer was practically that! Subsequent
versions simply added more layers of polish and tweaks, but never
anything particularly complicated (well, subtitles were a little
tricky). It certainly didn’t require much investment from me, besides
time and a little sweat. From the outset, my only aim was to provide a
basic level of access to iPlayer content until the BBC could provide a
more comprehensive and acceptable solution.
Were it not for the iPlayer platform pushing out two streams that most
Android phones were capable of playing, beebPlayer would not have been
possible without a lot of extra time and investment to augment
Android’s existing media framework so it could understand the other
streams. Fortunately, Android 1.5 and higher have had little problem
playing the mobile streams provided by iPlayer, which made making
beebPlayer very simple indeed! That is to say: the real power (read:
magic) behind beebPlayer was the BBC.
Of course, there were problems. While Android is technically capable
of playing those mobile streams, those mobile streams weren’t exactly
designed nor tested for Android. Small errors or unexpected changes in
the stream would utterly confuse Android, and hence would be unable to
play the stream at all. In other cases, Android simply dislikes some
routers (or rather they dislike Android and/or the BBC streams.) The
mobile streams were great for mobile phones, but not so great for
Android phones. For this reason, beebPlayer was not without its flaws
– most of them were beyond my power to rectify.
The new iPlayer site does a much
better job at providing a good experience for Android users than
beebPlayer ever could have – not only are the streams it uses designed
specifically for Android phones, but because of this they’re higher
quality and less likely to break at the merest sign of a lost bit or
byte. It’s also maintained by the BBC and paid for by the license fee,
so it’s level of service will be far higher than what beebPlayer could
provide.
The fact the new site is limited to
Flash-enabled devices is a sore-spot, but I can understand this
requirement and its benefits, as well as its current and future
limitations. RTSP (mobile/beebPlayer) isn’t exactly an ideal
alternative if you have a level of service you wish to maintain,
something RTMP (Flash) is far better at providing, especially across
multiple different platforms.
And that’s how beebPlayer worked.
* Despite what many people assumed, beebPlayer did not use the higher-quality iPhone MP4 streams – which are simply not quite compatible with Android (but only by a whisker – while Android phones are easily capable of playing the streams, they just don’t quite understand the QuickTime container used.)