Recent changes Random page
GAMING
Technology
 
Gaming
Entertainment
Science Fiction
Biggest wikis
Hobbies
Music
See more...

IPhone H.264 version

From Beebhack

Jump to: navigation, search

On the 7th of March 2008 the BBC launched an iPhone compatible version of their web-based iPlayer service. Visitors to iPlayer site using an iPhone would be presented with a slightly tweaked interface, but crucially where users of the site using a desktop web browser, iPhone users would see an embedded Quicktime player streaming H.264 video (referred to on iPlayer as MP4) over a normal HTTP protocol. This is the current method used by download scripts.

Contents

[edit] Overview of video request process

The process for requesting the H.264 video is as follows:

  1. Video page is requested and a "BBC-UID" cookie is set, containing the URL-encoded User-Agent string of the browser.
  2. Find a version PID for the episode PID from http://www.bbc.co.uk/iplayer/playlist/[PID]
  3. Request http://www.bbc.co.uk/mediaselector/3/auth/iplayer_streaming_http_mp4/[PID]?[RAND] where [PID] is the programme version ID and [RAND] is a random number, although the random number is apparently unused by the service. This URL (and all subsequent requests) must have:
    1. The Quicktime User-Agent header: "Apple iPhone v1.1.1 CoreMedia v1.0.0.3A110a"
    2. The BBC-UID cookie
    3. A "Range" header of "0-1"
    4. "Accept" header of "*/*"
  4. The video URL then 302 redirects to a much more complex URL . Store this URL.
  5. Initially, request this URL with "Range" of "bytes=0-1" to get the "Content-Range" header back containing the full byte length of the video.
  6. Step through the video length using the "Range" header from zero (or from the existing size of a partially downloaded file) in steps of under 70MB until the download is finished, appending to a file with a .mov extension.

The finished file should be a playable, unencrypted video.

[edit] Example HTTP headers sent by an iPhone session

GET www.bbc.co.uk/mediaselector/3/auth/iplayer_streaming_http_mp4/b009gbsn HTTP/1.1
Accept: */*
Cookie: BBC-UID=74a79c638cbe4c2d416e453f70f0dcf063d0b78d20c0c1d4843ffaaf85b17c9c0Mozilla%2f5%2e0%20%28iPhone%3b%20U%3b%20CPU%20like%20Mac%20OS%20X%3b%20en%29%20AppleWebKit%2f420%2e1%20%28KHTML%2c%20like%20Gecko%29%20Version%2f3%2e0%20Mobile%2f4A93%20Safari%2f419%2e3
User-Agent: Apple iPhone v1.1.4 CoreMedia v1.0.0.4A102
Connection: close
Range: bytes=0-1
Host: www.bbc.co.uk

This is then followed by a redirect response and the client creates another request to the actual media location:

GET download.iplayer.bbc.co.uk/iplayer_streaming_http_mp4/120535810311891748.mp4?token=iVXfwJl4SNsma1ByHhlxO%2FVjsCCjA%2FSSsqr6KzU2p1ymDTC%2Bq94kpfjpz%2BlMpki3epI%2BcfHySRmU%0Aos7y%2BxQGsdNDF2UeI124qoN%2F3b7QmLqZtOuii4bpt7jOVQp7b%2BbFKVM%3D%0A HTTP/1.1
Cookie: BBC-UID=74a79c638cbe4c2d416e453f70f0dcf063d0b78d20c0c1d4843ffaaf85b17c9c0;
User-Agent: Apple iPhone v1.1.4 CoreMedia v1.0.0.4A102
Connection: close
Host: download.iplayer.bbc.co.uk
Range: bytes=0-

[edit] Timeline of BBC updates to iPhone interface

This seems to have stabilised and the current method of requesting video is at the top of the page.

View the page history for this section if you want to see all the fun hoops the BBC made us jump through for a while.


[edit] Notes

Various methods for downloading from iPlayer have been developed, including get_iplayer at http://linuxcentre.net/getiplayer/ which has versions for Windows 95/98/ME/XP, Linux/Unix, and Mac OSX.

Rate this article:
Share this article: