Obfuscation is no protection
It may surprise some readers, but I don’t actually have a bad relationship with anyone at the BBC. I had an interesting and cordial conversation with someone from the iPlayer team (not the implementation part) at Mashed last weekend. I think a lot of people there are aware of the futility of trying to lock down content that’s simultaneously being digitally broadcast in the clear.
But I’m puzzled that there are people there who actually seem to thing that obfuscation is worthwhile.
Although iPlayer downloads over the iPhone interface are working pretty well, there’s a bigger prize out there: being able to download the higher quality video and audio that’s streamed to regular Flash clients. The new BBC Radio online player will use MP3 (Yay!) over RTMP (Boo!) in Flash. For ideological and practical reasons, I’d love to be able to play MP3s outside the browser, without needing Flash, and to be able to transfer them to my MP3 player for listening in bed, on the train, etc.
In a thread on the BBC Backstage mailing list about changes to the implementation of online radio playback, I wrote:
It looks like the audio data’s just MP3; it would be even more user friendly if it just used HTTP instead of obfuscating it with a proprietary protocol (RTMP). Then you wouldn’t need Flash at all, although it does make it easier to click and listen in a web page.
Flash will play content over HTTP perfectly well, by the way: that’s how YouTube does it.
In a reply, James Cridland wrote:
HTTP downloads are not possible: we don’t own most of the content. That’s why you’ve spotted RTMP being used – it’s a form of non-invasive Content Restriction And Protection. I’m sorry we have to use it. But we have to use it.
I’m not blaming James for this. I’m pretty sure he understands. But someone, or someones, at the BBC actually thinks it’s worth trying.
It’s not. It’s a waste of time.
["connect", 1.0, {"capabilities"=>15.0, "videoFunction"=>1.0, "audioCodecs"=>1639.0, "app"=> "ondemand?_fcs_vhost=cp48184.edgefcs.net&auth=daEcIaKaQdfaic ZcBa_aLa9dYbhdCaCc3d9-bizwQB-cCp-FnrDCqBnNDoGuwF&aifp=v001& slist=secure/6music/AMI_e6d01bf639fe37be3a42e423f9f38425_b0 0c73d2_6m_lamacq_thu", "videoCodecs"=>252.0, "swfUrl"=>"http://www.bbc.co.uk/emp/player.swf?revision=3704", "pageUrl"=>"http://www.bbc.co.uk/iplayerbeta/episode/b00c73fc", "tcUrl"=> "rtmp://84.53.177.140:1935/ondemand?_fcs_vhost=cp48184.edgef cs.net&auth=daEcIaKaQdfaicZcBa_aLa9dYbhdCaCc3d9-bizwQB-cCp- FnrDCqBnNDoGuwF&aifp=v001&slist=secure/6music/AMI_e6d01bf63 9fe37be3a42e423f9f38425_b00c73d2_6m_lamacq_thu", "fpad"=>false, "flashVer"=>"LNX 9,0,124,0"}]
That’s a decoded AMF packet parsed from a conversation between the new iPlayer radio player and the RTMP server. In other words, my RTMP library is progressing very well.