Show Posts

You can view here all posts made by this member. Note that you can only see posts made in areas to which you currently have access.

Messages - Ed

Pages: 1 2 [3] 4 5 ... 9
I know this is a very old thread, but in view of the fact that in all the intervening time the BBC have been unable to get any replacement for AudioGo off the ground, perhaps we should wonder whether that may be significant. By which, of course, I mean significant for us.

It was not bad management which sank AudioGo.

That was a partnership between BBC and a private company, with all of BBC's resources behind it. Yet it failed to make a profit. Even though it had the entire BBC archive to draw on, and the very deep pockets of the Corporation.

The problem it couldn't crack is that the internet provides unlimited free access to the type of material AudioGo was selling on CD (and, to a degree, as downloads). This very website, Beebotron, is dedicated to a BBC station which provides free access to a large chunk of the archive material AudioGo was selling.

And out in the wild wild west of the www, there are inumerable websites offering free OTR, including BBC shows; plus innumerable Torrents offering file sharing of that material; plus inumerable pirate sites selling (far cheaper than AudioGo were) the same material - albeit not in as good quality, but much cheaper.

The BBC seem to have concluded from AudioGo's bankruptcy that the type of commercial operation AudioGo were involved in isn't viable.

But what are BBC doing about this problem?

All of a sudden, BBC iPlayer is vanishing behind a paywall. As yet - and I emphasise the word yet - we are not being asked for any money to access it. But that is the logical next step.

In 1971 the radio licence was abolished; and, ever since, BBC radio has been funded from the TV licence fee.  But the BBC now seem to be gearing up to seek new sources of revenue. Hiding the online access to their entire tv and radio output is a logical first step in moving to a new business model, in which online access is only available by paying a subscription - on top of the Licence Fee.

Their most recent step was to extend the law, so that watching BBC tv live on line now requires a TV Licence. Now they put up a paywall. Next, they encrypt.

It's a logical progression, triggered off by the failure of their other commercial ventures, as a means of making money out of us.

Having now had a couple of days to review all the download solutions, in my opinion the simplest is the following.

STEP 1: Get the vpid (an 8-digit text string)

  1. Open the iPlayer page for the radio show, in Firefox.
  2. Without playing that show, right-click on that page, and select 'View Page Source'.
  3. Search (on the toolbar: Edit > Find) the resulting text for the phrase: "vpid"

  NB: You might use Internet Explorer instead. Some versions ( e.g. Internet Explorer 8 )
        allow you to view a page's source (on the toolbar: View > Source).

STEP 2: Modify the following url (substitute the 8-digit vpid for the 8 zero's) -

The media player Media Player Classic - Home Cinema (a.k.a "MPC-HC") can play this url, if the vpid is substituted for the 8 zero's.

  Get MPC-HC here:  OR

  On Windows 7 64-bit I recommend this version:  MPC-HC.1.7.10.x64.exe

STEP 3: To download the radio show, create the following .bat file -

  a. Create a plain text file, and name it:  download.bat

  b. Open that file using NOTEPAD.EXE (or any simple text editor),
      then copy-and-paste the following 2 lines into it -

Code: [Select]
SET url=
ffmpeg  -v 16  -stats  -i %url%  "output.mp2"

  c. After url=, paste the MODIFIED url from STEP 2,
      containing the actual 8-digit vpid (in place of the 8 zero's)

  d. Save the file. Make certain you save it with the extension .bat
      (NOT .txt)

  e. Put ffmpeg.exe in the same folder as the .bat file

        Get it here:

  f. Double-click the .bat file to run it

When you have copied the url address into the .bat file, in step 3c, that file should look like this example -

Code: [Select]
SET url=
ffmpeg  -v 16  -stats  -i %url%  "output.m4a"

Note that a HLS stream is an mpeg stream, therefore can ONLY be used to download a stream in the .mp3 or .mp2 or .mp4 or .ts format (i.e. the output file should be named output.mp3 or output.mp2 or output.mp4 or output.ts). Obviously, call it what you like; but (to avoid problems) it must have the .mp3 or .mp2 or .mp4 or .ts extension.


The .mp2 trick no longer works. It now appears to download the 320 kbps stream, and merely re-encodes it to 384 kbps (resulting in a larger output file, but no improvement in sound quality).

That is a bad outcome: you would be better off doing a normal download of the 320 kbps stream, at 320 kbps, thereby saving disk space (and time and trouble).

Here are some recent examples of the ffmpeg command line which downloads the audio stream (in these examples, downloading an .mp2 file from a HLS stream).

These are just examples of the correct syntax to use.

Obviously, none of these examples will actually download anything now, as the https url is only valid for a couple of hours, and all of these have expired. To use these examples again (within the 30 days that a show is available on the iplayer site), that url must be replaced with a current one.

Code: [Select]

ffmpeg -v 16 -stats -i "" -ss 0.7 -aframes 148900 Episode_1_The_Lost_Stories_Point_of_Entry_Doctor_Who_BBC_Radio_4_Extra[148900].mp2

ffmpeg -v 16 -stats -i "" -ss 0.6 -aframes 71954 From_11_02_1954_Educating_Archie_BBC_Radio_4_Extra[71954].mp2

ffmpeg -v 16 -stats -i "" -ss 0.5 -aframes 67499 From_11_07_1961_Whack_O_BBC_Radio_4_Extra[67499].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 74903 The_Finger_of_Suspicion_John_Creasey_The_Toff_and_the_Runaway_Bride_BBC_Radio_4_Extra[74903].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 69232 War_Dance_Series_2_Dad_s_Army_BBC_Radio_4_Extra[69232].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 74075 No_Sleep_for_the_Wicked_John_Creasey_The_Toff_and_the_Runaway_Bride_BBC_Radio_4_Extra[74075].mp2

ffmpeg -v 16 -stats -i "" -ss 0.315 -aframes 68738 Live_Now_Paye_Later_Series_6_Steptoe_and_Son_BBC_Radio_4_Extra[68738].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 72570 Bare_Necessities_The_Men_From_the_Ministry_BBC_Radio_4_Extra[72570].mp2

ffmpeg -v 16 -stats -i "" -ss 0.1 -aframes 70073 Still_in_Trying_Times_Series_2_Revolting_People_BBC_Radio_4_Extra[70073].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 73283 Death_Is_No_Alibi_John_Creasey_The_Toff_and_the_Runaway_Bride_BBC_Radio_4_Extra[73283].mp2

ffmpeg -v 16 -stats -i "" -ss 1 -aframes 77168 The_Missing_Jeep_Series_1_The_Navy_Lark_BBC_Radio_4_Extra[77168].mp2

ffmpeg -v 16 -stats -i "" -ss 0.8 -aframes 66304 The_Foreign_Legion_Series_5_Hancock_s_Half_Hour_BBC_Radio_4_Extra[66304].mp2

ffmpeg -v 16 -stats -i "" -ss 0 -aframes 74260 Motive_for_Murder_John_Creasey_The_Toff_and_the_Runaway_Bride_BBC_Radio_4_Extra[74260].mp2

ffmpeg -v 16 -stats -i "" -ss 0 -aframes 74890 The_Illness_Series_1_Marriage_Lines_BBC_Radio_4_Extra[74890].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 72783 Episode_5_Play_It_Cool_BBC_Radio_4_Extra[72783].mp2

::  Dr Who: The timeless appeal of the Time Lord’s theme tune  []
ffmpeg -v 16 -stats -i "*2c97c59342137ec301425c3f95292c4c--audio--SHORT-MARK-AYERS-BOUNCE_flv_aac_med.mp4*~hmac=dcfb9fddce761bbb16a182d649e7e71be3e85d3395a403131b19f51d8619e7ef" Dr_Who_The_timeless_appeal_of_the_Time_Lord_s_theme_tune_Doctor_Who_BBC_Radio_4_Extra.mp2

ffmpeg -v 16 -stats -i "" -ss 0 -aframes 73191 Confrontation_in_Paris_John_Creasey_The_Toff_and_the_Runaway_Bride_BBC_Radio_4_Extra[73191].mp2

ffmpeg -v 16 -stats -i "" -ss 0.615 -aframes 74024 Episode_9_Series_3_I_m_Sorry_I_ll_Read_That_Again_BBC_Radio_4_Extra[74024].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 73924 In_General_Practice_Doctor_at_Large_BBC_Radio_4_Extra[73924].mp2

ffmpeg -v 16 -stats -i "" RL_Stevenson_Treasure_Island_BBC_Radio_4_Extra.mp2

ffmpeg -v 16 -stats -i "" -ss 1.115 -aframes 149045 Episode_2_The_Lost_Stories_Point_of_Entry_Doctor_Who_BBC_Radio_4_Extra[149045].mp2

ffmpeg -v 16 -stats -i "" -ss 1.315 -aframes 72347 From_30_01_1957_Educating_Archie_BBC_Radio_4_Extra[72347].mp2

ffmpeg -v 16 -stats -i "" -ss 0.515 -aframes 68141 From_18_07_1961_Whack_O_BBC_Radio_4_Extra[68141].mp2

ffmpeg -v 16 -stats -i "" -ss 1.015 -aframes 68821 Mum_s_Army_Series_2_Dad_s_Army_BBC_Radio_4_Extra[68821].mp2

ffmpeg -v 16 -stats -i "" -ss 1.015 -aframes 71458 Episode_1_North_East_of_Eden_BBC_Radio_4_Extra[71458].mp2

ffmpeg -v 16 -stats -i "" -ss 0 -aframes 69073 Upstairs_Downstairs_Upstairs_Downstairs_Series_6_Steptoe_and_Son_BBC_Radio_4_Extra[69073].mp2

ffmpeg -v 16 -stats -i "" -ss 0.2 -aframes 67524 Storm_in_a_Tea_Urn_The_Men_From_the_Ministry_BBC_Radio_4_Extra[67524].mp2

ffmpeg -v 16 -stats -i "" -ss 0.015 -aframes 74451 Operation_Fag_End_Series_1_The_Navy_Lark_BBC_Radio_4_Extra[74451].mp2

ffmpeg -v 16 -stats -i "" -ss 1.615 -aframes 74333 Sunday_Afternoon_at_Home_Series_5_Hancock_s_Half_Hour_BBC_Radio_4_Extra[74333].mp2

The easiest source of a replacement url for these is probably -

Looking at the first part of one of these example urls - ...

the section highlighted in red is the vpid which the page requires.

For instance, this form of url (from which they call the Playlist URL) works fine as a substitute for the original https url shown in my above examples -

Code: [Select]

You can in fact simply take this url and put the substitute vpid in yourself (i.e. replacing b08w933f), and that url is then useable, without bothering to go to the site.

One thing you need to know, though. This is a "HLS MP3 (UK only)" url, so it will probably only work if the download is using the mp3 format (i.e. the filename has either the .mp3 or .mp2 or .mpeg or .ts extension). And if you are in the UK (i.e. are accessing iplayer from an ip address physically in - or registered in - the UK, or access it from an anonymous ip address).

For non-UK listeners, try the Firefox add-on anonymoX (compatible with Firefox 39). I can't test it, because I'm in the UK.

Slightly off-topic, for listeners outside the UK here (briefly) is a comparison of a UK stream with a non-UK stream, showing the differences between them. The differences which I think are significant I've highlighted in blue.

    Example of Akamai HLS url (UK stream) (a UK Stream for mobile phones) -

    http ://

    Example of Akamai DASH url (a non-UK stream) (designated a ww stream: worldwide) -

    http ://

Geek Speak / Screenscraping - A technique to find the vpid
« on: July 03, 2017, 09:29:06 PM »
When I am completely stuck, I use the following website to look up url's for the 'Listen Again' programmes on the radio iPlayer:

I can use ffmpeg.exe to download high quality streams from these url's (higher bitrates than I typically get from using programs such as get_iplayer, e.g. 320 kbps and 384 kbps streams).

It used to be trivial to use because all it needed was the 8-digit PID (Programme ID) included in the Listen Again page's url.

But recently changed over to using the vpid instead of the pid. I thought it was still trivial to get the vpid because, when you play the 'Listen Again' radio show, you can right-click on the playing window in the browser, and a pop-up window opens and displays both the PID and the VPID.

Now, however, the iPlayer has disappeared behind a pay-wall, and you can't play the show, so can't right-click on the playing window. (Yes, I know no money changes hands, but the technology being deployed against us is nonetheless what's known in the trade as a 'paywall'.)

Yes, it is still trivial to get the vpid. You can still play the show in older browsers: if you play it in Internet Explorer 8, the newer javascript on the iplayer website is ignored by the browser, which only understands older forms of javascript. So the show plays, and the player window appears, and can be right-clicked.

And in any browser, you can view the page source and do a 'find' search for "vpid" to find it.

I thought it would be better to write a short batch file routine to extract the 8-digit vpid from the page automatically, using just the ordinary PID. So here it is. The only contribution made by the user is to insert the PID (replacing the example PID shown as a row of 8 zero's).

This is a demo script, really, because it can readily be adapted to extract any desired information from a .html web page (that is, an ordinary webpage, one which does not use xml). The javascript runs in Internet Explorer, and downloads the target webpage specified, as a text string, which it then searches: using a javascript technique called Regular Expressions to specify the text to be extracted. It then displays any matching text found.

Click 'Select' to highlight the code, then copy-and-paste it into a plain text file with the file extension .bat instead of .txt (e.g. vpid.bat). Then open the .bat file (using, say, Notepad.exe), and replace the 8 zero's with the actual 8-digit PID of the target iplayer page. Then double click the .bat file to run it.

Code: [Select]
@echo off

::  *** Get the VPID : BBC Radio on-demand ***

::  ** Programme ID **
SET PID=00000000

::  -------------------------------------------------------------------------------------------------------------------------------------------  ::

::  *** User Variables ***
    SET temp_dir=C:\\Users\\dg\\AppData\\Local\\Temp

::  -------------------------------------------------------------------------------------------------------------------------------------------  ::

ECHO ^<html^>                                                                                                                    > %temp%\temp.htm
ECHO ^<head^>                                                                                                                   >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO ^<title^>Download BBC iPlayer HTML page and extract Text^</title^>                                                         >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO ^<SCRIPT language="javascript" type="text/javascript"^>                                                                    >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO // Target HTML file's URL address                                                                                          >> %temp%\temp.htm
ECHO    var url = "" ;                                                                     >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO'','_self'); // This prevents the browser window prompting before closing                                      >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO var http_request = false;                                                                                                  >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO function makeRequest(url) {  // URL = iPlayer page                                                                         >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO   http_request = false;                                                                                                    >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO   try {                                                                                                                    >> %temp%\temp.htm
ECHO     http_request = new ActiveXObject("Msxml2.XMLHTTP");                                                                    >> %temp%\temp.htm
ECHO   } catch (e) {                                                                                                            >> %temp%\temp.htm
ECHO     try {                                                                                                                  >> %temp%\temp.htm
ECHO       http_request = new ActiveXObject("Microsoft.XMLHTTP");                                                               >> %temp%\temp.htm
ECHO     } catch (e) {}                                                                                                         >> %temp%\temp.htm
ECHO   }                                                                                                                        >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO   if (!http_request) {                                                                                                     >> %temp%\temp.htm
ECHO     alert ('Giving up - Cannot create an XMLHTTP instance');                                                               >> %temp%\temp.htm
ECHO     return false;                                                                                                          >> %temp%\temp.htm
ECHO   }                                                                                                                        >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO   http_request.onreadystatechange = alertContents;                                                                         >> %temp%\temp.htm
ECHO'GET', url, true);                                                                                     >> %temp%\temp.htm
ECHO   http_request.send(null);                                                                                                 >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO }  // Close FUNCTION                                                                                                       >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO function alertContents() {                                                                                                 >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO   if ( http_request.readyState == 4 ) {                                                                                    >> %temp%\temp.htm
ECHO     if ( http_request.status == 200 ) {                                                                                    >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO        var fso  = new ActiveXObject("Scripting.FileSystemObject");                                                         >> %temp%\temp.htm
ECHO        var fh  = fso.CreateTextFile("%temp_dir%\\%PID%.html",true);         // Create Text File                            >> %temp%\temp.htm
ECHO        var fh1 = fso.CreateTextFile("%temp_dir%\\%PID%_vpid.txt",true);     // Create Text File                            >> %temp%\temp.htm
ECHO        var fh2 = fso.CreateTextFile("%temp_dir%\\%PID%_vpid_2.txt",true);   // Create Text File                            >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO        // Save contents of HTML page to text file as a String                                                   // line 50 >> %temp%\temp.htm
ECHO           fh.WriteLine( "<base href=''>" );             // Add BBC domain's href address               >> %temp%\temp.htm
ECHO           fh.WriteLine( http_request.responseText );                        // Add HTML contents of target webpage         >> %temp%\temp.htm
ECHO           // alert ( http_request.responseText );                                                                          >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO        // Use RegEx [Regular Expression] to find data in responseText (HTML)                                               >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO           // Input String (HTML from target URL)                                                                           >> %temp%\temp.htm
ECHO              var input = http_request.responseText;                          // Input                                      >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO           // Define the Pattern                                              // Pattern                                    >> %temp%\temp.htm
ECHO           // 8 literals + 8 chrs (mixed letters and digits) + 1 literal      // Example: "vpid":"b006bm2h"                 >> %temp%\temp.htm
ECHO              var pattern = /"vpid":"[A-Z0-9]{8}"/gi;                                                                       >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO           // Create OUTPUT string holding ALL matches                                                                      >> %temp%\temp.htm
ECHO              var str1 = input.match(pattern);                                // Match String with Pattern                  >> %temp%\temp.htm
ECHO              // alert ( str1 );                                                                                            >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO           // Save the data to a text file -                                                                                >> %temp%\temp.htm
ECHO              fh1.WriteLine( str1 );                                          // %PID%_vpid.txt                  // line 70 >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO           // Adjust the data -                                                                                             >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO              // Replace some text                                                                                          >> %temp%\temp.htm
ECHO                 var str2 = fso.OpenTextFile("%temp_dir%\\%PID%_vpid.txt");   // Open a text file                           >> %temp%\temp.htm
ECHO                 var str3 = str2.ReadAll();                                   // Read file's contents into a variable       >> %temp%\temp.htm
ECHO                 var str4 = str3.replace(/^"/g, "").replace(/^:/g, ": ");     // Replace all quotes and semicolons          >> %temp%\temp.htm
ECHO              // var str4 = str3.replace(/^"/g, "").replace(/^,/g, "\n");     // Replace all quotes and all commas          >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO              // Split the data into sections seperated by the specified symbol                                             >> %temp%\temp.htm
ECHO                 var str5 = str4.split(",");                                                                                >> %temp%\temp.htm
ECHO                 // alert ( str5[0] ) ;                                                                                     >> %temp%\temp.htm
ECHO                 // alert ( str5[1] ) ;                                                                                     >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO              // Save the adjusted data to a text file -                      // Save to %PID%_vpid_2.txt                   >> %temp%\temp.htm
ECHO                 fh2.WriteLine( "pid:  %PID%" );                                                                            >> %temp%\temp.htm
ECHO                 fh2.WriteLine( str5[0] );                                    // Save only the FIRST (discard str5[1])      >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO     } else { alert ('There was a problem with the request') };                                                             >> %temp%\temp.htm
ECHO   }                                                                                                                        >> %temp%\temp.htm
ECHO }     // Close FUNCTION                                                                                                    >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO ^</SCRIPT^>                                                                                                                >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO ^</head^>                                                                                                                  >> %temp%\temp.htm
ECHO.                                                                                                                           >> %temp%\temp.htm
ECHO ^<body onload="makeRequest(url);setTimeout('window.close()',4000)"^> ^</body^>                                             >> %temp%\temp.htm
ECHO ^</html^>                                                                                                                  >> %temp%\temp.htm

::  The function setTimeout gives TEMP.HTM enough time to access the Internet
::  before the scripts in it run (which need the data drawn from the Internet)

::  -------------------------------------------------------------------------------------------------------------------------------------------  ::

::  *** Run temp.htm ***
"C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE" %temp%\temp.htm

::  *** Open file : VPID ***
START ""  "C:\Windows\SYSTEM32\Notepad.exe" "%temp_dir%\\%PID%_vpid_2.txt"

Help / Re: get_iPlayer trouble....
« on: July 03, 2017, 03:25:31 PM »
I have started a new thread in the main forum, which might assist you -

I can't specifically address the point about get_iplayer, but there have been some big changes on the BBC website in the last week, which the get_iplayer developers will not yet have had enough time to solve.

Geek Speak / How to listen to iPlayer without signing-in
« on: July 01, 2017, 02:17:12 PM »
As I thought this topic would potentially have quite wide interest, I've started it in the main forum at -

As of July 1st, any attempt to listen to the BBC Radio iPlayer is met with a refusal, unless you are signed-in to a BBC account.

To listen without signing in, there are various options.

If you are running any version of the Windows operating system, edit the HOSTS file.

Add the following line (blocks the script which forces you to sign-in):

  Note: How to edit a HOSTS file - Edit HOSTS file

Listen to the live stream, using Winamp (or any media player of your choice), with one of these URLs -

Listen to the live stream, using VLC Media Player, with one of these URLs -

128 kbps stream:

320 kbps stream:

VLC media player is here:

Download one of the live streams, using the program FFMPEG.EXE, with one of these commands (at a command prompt, or in a batch file) -

Code: [Select]
  ffmpeg -v 16 -stats -i "" Out.mp2
Code: [Select]
  ffmpeg -v 16 -stats -i "" Out.mp2

Listen to an on-demand Listen Again programme (but not the live stream), using Internet Explorer 8.

Because IE8 uses an old version of javascript, it does not recognise the newer forms of javascript used in iPlayer. It in effect ignores them, and so the audio stream plays normally.

Just turning off javascript won't work. The iPlayer refuses to stream any audio if the browser has no javascript support at all.

To listen in this way in Internet Explorer, you must use a url in this format:

(because the trick won't work if you use a url in the older format:

Here's how to download an on-demand programme from the Listen Again service, to listen to it off-line -

FFMPEG command line from Greasemonkey script

These instructions are for use in Windows XP / Vista / 7 / 8 / 10. There are links below to obtain the software mentioned.

A.  To obtain the command line -

1. Open the Firefox browser (must have the Greasemonkey extension installed, and the iPlayer greasemonkey script installed).

2. Open the iPlayer page which plays the radio show, using Firefox. After a few moments, an FFMPEG command line will be displayed immediately below the area where the radio show plays.

B.  To run the command line -

3. Create a batch file (a plain-text file with the extension .bat or .cmd).
4. FFMPEG.exe must be copied into the same directory/folder as the batch file.
5. Copy-and-paste the command line into the batch file.
6. Modify the file extension specified on the command line: change it from .mp3 to whatever you want (see below).
7. Run the batch file.

Software required -

FFMPEG.exe (Static build recommended)

Firefox 39

Greasemonkey extension for Firefox 39

Greasemonkey script 'BBC iPlayer video download', for Firefox 39

Addendum :  You might need to replace the .js file installed by the current version of the installer with an older version of that file (version 3.6.3) to get the script to work in Windows. Here's a link to v3.6.3:

BBC iPlayer video download v 3.6.3 -

In Windows 7, the .js file is in this folder -

Notes -

The above procedure can download a file in various formats, including (for radio): .mp3, .mp2, .m4a, .ts

For instance, .MP2 files have a 384 kbps stream, of better audio quality than the MP3 stream.

  •    M4A   : Variable KBPS rate, up to 200 kbps; 48 kHz; Stereo; MPEG-4 AAC LC
  •    MP3   : Fixed  128 kbps rate; 48 kHz; Stereo; MPEG-1 layer 3
  •    MP2   : Fixed  384 kbps rate; 48 kHz; Stereo; MPEG-1 layer 2
  •    TS     : Fixed  384 kbps rate; 48 kHz; Stereo; 16 bit per sample
  •    WAV  : Fixed 1536 kbps rate; 48 kHz; Stereo; Signed 16 bit PCM

  •    M4A is downloaded if the command line specifies an output file with the extension .M4A
  •    MP3 is downloaded if the command line specifies an output file with the extension .MP3
  •    MP2 is downloaded if the command line specifies an output file with the extension .MP2
  •    TS is downloaded if the command line specifies an output file with the extension .TS
  •    FLAC is downloaded if the command line specifies an output file with the extension .FLAC
  •    WAV is downloaded if the command line specifies an output file with the extension .WAV

By default, the Greasemonkey script adds .mp3 to the command line; but you can replace that with any of the above alternatives (or some other). I recommend replacing it with .mp2 because of the superior bitrate.

I developed this solution on my laptop, which happens to be running the Firefox 39 browser. The solution will probably work in other versions of Firefox; but if it doesn't (some add-ons only work on particular Firefox versions), be aware that you can always force it to work - by installing Firefox version 39.

If you are running Internet Explorer, don't uninstall IE. On Windows 7, there are no problems arising if you also install Firefox. The most that might happen is all urls start opening in Firefox (which is easy to fix): both browsers co-exist happily on my laptop, and have done for years.

Read this article (by Andrea Lazzarotto) for further information -

I only understand Windows! But Andrea develops this software in the Linux operating system. So Andrea's webpage has information for anyone wishing to download from iPlayer using a computer running on Linux.

Andrea's solution is the easiest way to get the necessary url. But if it doesn't work for you (even when you replace the latest version with version 3.6.3), you can get the necessary url from the following site:

To get the vpid which that site needs (an 8-digit text string):

  1. Open the iPlayer page for the radio show, in Firefox.
  2. Without playing that show, right-click on that page, and select 'View Page Source'.
  3. Search (on the toolbar: Edit > Find) the resulting text for the phrase: "vpid"

The vpid is also available, but only for the most recent broadcasts, from the station's xml page (where it is described as the "version_pid") -

Alternatively, once you have the vpid you could simply modify the following url (a HLS stream) (by substituting the 8-digit vpid for the 8 zero's), without needing to use the site -

That url, once it includes the 8-digit vpid, will work successfully as the url to use with ffmpeg.

Alternatively, you can get a working url from the following Beebotron page (a HLS stream):

  Warning -  The Beebotron DASH links do not work with this method
                  (FFMPEG can't download the audio stream from a DASH url in this format).

Note that a HLS stream is an mpeg stream. The .bat file should only be used to download a stream in the .mp3 or .mp2 or .mpeg or .ts format. It might throw a wobbly if you use it to download in .mp4 or .m4a or .aac format.

Here is a 2-line batch file (name it, say, download.bat) which can be used with ffmpeg to download from iPlayer, using the url obtained by any of the above methods (put ffmpeg.exe in the same folder as the .bat file) -

  SET url=

  ffmpeg  -v 16  -stats  -i  %url%  output.mp2

Copy-and-paste the url address into the batch file, so that the SET command looks like this example -

SET url=

This .bat file should cope with any stream which is a HLS stream (but won't work with any type of DASH stream). HLS streams often have the term 'hls' included somewhere in the url (but not always).

Note that a HLS stream is an mpeg stream. This .bat file should only be used to download a stream in the .mp3 or .mp2 or .mpeg or .ts format. It might throw a wobbly if you use it to download in .mp4 or .m4a or .aac format.

This is the URL address of the xml page for a radio programme available on the 'Listen Again' service (replace the 8 zero's with the 8-digit vpid):

The xml page displays 6 links (all .m3u8 playlist links) (and all of them HLS links), ALL six of which will download the target "Listen Again" radio show (using ffmpeg.exe and the file download.bat, above).

Note: In each url, replace all occurances of the character & with ^& to make the url work in a .bat file.

ALL six give a 384 kbps stream when an .mp2 stream is requested, even though the page says they are only 128 kbps or 320 kbps links. ALL give an .mp2 stream when that stream is requested, even though the page says they are only mp4/aac links. Presumably both effects are a consequence of these being *playlist* links (i.e. behind the scenes - hidden from us - they give branching access to a wide range of differing streams, branches which ffmpeg can follow without additional input from you!).

(That level of sophistication is something you only get with ffmpeg.exe - a well established leader in its field, with ten years plus of substantial development effort behind it. Don't expect to duplicate these results with any other program.)

The six links differ only in that 4 of them give a faultless download, while 2 show errors (and of those 2, each throws different errors) -

  Faultless:  (http)    akamai_hls_open
                 (https)   akamai_hls_open_https
                 (https)   af_akamai_uk_hls_https
                 (https)   af_limelight_uk_hls_https
  Errors:    (http)     af_akamai_uk_hls
                (http)     af_limelight_uk_hls

So the secure connections (_https), and the open connections (_open), fare best. The faults occur on UK connections (_uk) that are NOT secure (don't use https, i.e. no _https), which is perhaps a consequence/indication of heavier traffic on those links.

Easily the worst performance is Limelight's UK connection over http (af_limelight_uk_hls) - which lost so much data, on some occasions, that the radio show was actually incomplete.

In my tests, the very best performance (perfect download) was given ONLY by the two _open links:  akamai_hls_open and akamai_hls_open_https.

I expect the two _open links to work internationally, i.e. for listeners outside the UK. (All six links work for listeners within the UK, or who connect to iPlayer through a proxy node that's within the UK.)

This is the URL address of an alternative xml page (replace the 8 zero's with the 8-digit vpid):

This xml page displays 3 links (all .m3u8 playlist links) (and all of them HLS links), ALL three of which will download the target "Listen Again" radio show (using ffmpeg.exe and the file download.bat, above).

Note: In each url, replace all occurances of the character & with ^& to make the url work in a .bat file.

Geek Speak / Download 384 kbps LIVE stream
« on: June 30, 2017, 03:41:58 PM »
It is trivial to download the LIVE stream for Radio 4 Extra, because the url never changes (and the Beeb make no attempt to obfuscate that url).

To download the 384 kbps live stream, run a .bat file (a plain text file with the extension .bat instead of .txt) containing these two lines -

Code: [Select]
  set ffmpeg=C:\Program Files\FFMPEG\ffmpeg.exe

  "%ffmpeg%" -v 16 -stats -i "" R4Extra.mp2

To get the ffmpeg.exe program, see this link:

The program does not need installing. Just put the .exe file in the directory you specified in the .bat file.

If you prefer a lower bitrate, a 128 kbps stream is available instead: in the .bat file change .mp2 to .m4a so that ffmpeg gets the m4a stream instead (it's actually a variable bitrate, centered on 135 kbps).

If you prefer the mp3 stream, change .mp2 to .mp3 so that ffmpeg gets the mp3 stream instead (which is a fixed bitrate of 128 kbps).

These are the two live stream urls for Radio 4 Extra (either of which can be used in the .bat file):

The ultimate guide to Callan is at

According to my spies at The Callan File, it was in 2012 that Radio 4Extra originally transmitted their adaptation of the first Callan novel, A Magnum for Schneider (retitled Red File for Callan) (Monday 17th September 2012).

An audiobook, not a dramatisation, it is actually Mitchell's 1969 novelisation of his own screenplay for the Callan pilot, which had aired on ABC's Armchair Theatre in 1967.

I have become increasingly annoyed by the number of times this month I've opened a listen-again page on BBC iPlayer, only to find that the programme has either its start or end missing.

As you know, programmes are added by an automatic system, based on the scheduled broadcast time. If the broadcast actually starts early on Radio 4 Extra, the start will be missing on iplayer; or if it ends late, the end will be missing on iplayer.

I'd like to urge everyone to complain whenever this happens. Only complaints will get this problem remedied.

I'd suggest you base any complaint on a request for a return to the former system, of putting up on iPlayer a 36 minute extract - including the end of the previous show, and the start of the next. Under that arrangement, the iplayer NEVER used to miss off part of the show.

I recently found a new BBC page for reporting technical errors with iplayer -

As an update, I'm posting here what seems to be a new page on which feedback about iPlayer problems/faults can be posted :

Paul Temple and the Margo Mystery with Peter Coke and Marjorie Westbury will begin its latest repeat on Monday 24th April next, at the usual times.

Radio Programmes - Info \'n\' Reviews / The Frankie Howerd Show
« on: April 11, 2017, 06:03:06 PM »
Sorry, I didn't stop to think. I should have explained up front that these episodes are from my own collection. It's not some third party who made them!

With a friend, I did some restoration work on various 1970s radio series. He contributed some recordings, and I contributed some. One result was a slightly less incomplete set of Frankie Howerd shows. My friend offered some web space to make them available on line.

For those who are interested, one discovery I made related to Hello Cheeky (Barry Cryer, John Junkin, Tim Brooke-Taylor), aired 1973-79. I came across a complete collection of off-air recordings - every edition that was broadcast - in high quality:

These, too, are safe to download. I've been through them all. They actually are real mp3 files.

The collection is one I recognise. It originated in the archives of a fan club, the Goon Show Preservation Society.

You'll probably know the BBC mostly only repeat editions of the 1973 series. The show is one they regard as politically incorrect, so I doubt we'll ever hear the 1974-76 editions on 4 Extra. Too many jokes about Irishmen, West Indians, and so on.

Pretty tame stuff, actually. Barry Cryer puts on a West Indian accent, and phones up Tim or John, pretending to be a Welshman (or pretending to be Nicholas Parsons!), to complain about the previous item.

See also:

Geek Speak / Re: Download High Bitrate TS files
« on: April 07, 2017, 01:30:20 PM »
Here are some updates, relating to my previous posts in this thread.

When using Firefox 39 with the GreaseMonkey add-on (to download on-demand files from the 'Listen Again' service), I've discovered from experience that the optimum file extension to use, in the FFmpeg command line, is .mp2 (instead of .ts or .mp3), as it has several advantages:

1. Using the .mp2 extension downloads a 384 kbps stream, whereas the .mp3 extension only downloads a 128 kbps stream.

2. Using the .ts extension downloads exactly the same 384 kbps stream as using the .mp2 extension, but the file size is very much bigger (because of drawbacks with the .ts format).

3. An .mp2 file has various advantages compared to a .ts file: you can play it in Winamp; you can add ID3 tags to the file; and the file size is 10% smaller.

For those who do wish to use the .ts format, it is possible to play it in Winamp. Open Winamp's preferences (press CTRL and P simultaneously) and go to: Plug-ins > Input.  Click on in_dshow.dll (the DirectShow decoder), then click 'Configure', and then add ;TS to the end of the Extension list.

Andrea, the Italian bloke who writes the .js (javascript) script for Firefox, named "BBC iPlayer video download", develops it on a Linux machine, so doesn't offer any support for using it on a Windows system.

The latest version of his script doesn't work in Windows 7. You will need to use an older version. So here is a link to an older version (version 3.6.3) that does work in Windows:

AMENDED on 11 July 2017:
Corrected the bitrates for the .mp2 and .ts streams, to show those currently provided by the BBC's radio iPlayer. For live streams (the DASH streams), the bitrate remains 320 kbps; but for on-demand streams (the HLS streams), the bitrate of the audio is 384 kbps.

Radio Programmes - Info \'n\' Reviews / Re: The Frankie Howerd Show
« on: April 03, 2017, 09:20:59 PM »
Took a quick look at the Mediafire link you mention. It says:

The website is safe, but the downloads are possibly unsafe. These files are posted by users, so some may have viruses. I'm not saying all have viruses, but some do.

Naturally enough, I've not included any viruses. :)

Actually, I think that only .exe files (i.e. executable files) carry viruses. I have heard of Microsoft Word .doc documents containing macro viruses. But I don't know that .mp3 files, or other media files, can even carry a virus. I think only programs, not data files, can have them.

Pages: 1 2 [3] 4 5 ... 9