How to download BBC iPlayer videos and radio programmes

Abstract (Italiano): Scrivo questo articolo in inglese perché (ovviamente) la registrazione dei video della BBC interessa maggiormente le persone che parlano inglese. Se lasciate un commento, gentilmente fatelo in inglese.

Abstract (English): I’m writing this post in English because (obviously) recording BBC videos is mostly of interest for those who speak English. Also, a small note for native speakers, especially British people: I’m Italian and I’m mostly used to write using American spelling. For this reason, the post may contain mistakes or American words which may seem unusual. I’m sorry for that. If you find errors (apart from AE spelling) let me know in the comments.

Update (30 April 2017): Version 4.0 of the script is out, which is mostly rewritten from scratch and leverages youtube-dl instead of ffmpeg. I’ve updated this post accordingly.

Introduction

I already wrote about downloading videos from the BBC and Hulu websites (in Italian), however it was about two years ago. Websites change and so does software, hence the suggested method of using get_flash_videos does not work anymore.

I also wrote a generic article about downloading videos from websites (in Italian, too) that contains many different use cases and examples. One of my readers asked for clarification about recording iPlayer videos, so I tried again myself. I was able to apply some of the techniques of my post, together with a couple of clever tricks to find the maximum quality.

Since the process is a bit involved, I wrote a small software which automates all the steps and tells you how to start the recording immediately. This program is actually a so called user script, i.e. a piece of software that runs directly into your browser.

This article explains how to download and install the script. Then it shows you how to use it and what you need to do to record BBC iPlayer videos. Before we start, you need to be able to trick the BBC website into thinking you are living in the UK. If you are actually living there, skip the next section.

Pretending to be in the UK

The BBC iPlayer service is officially available only in the United Kingdom. The website will check your IP address and refuse access if you are trying to watch content from another country. To fix this problem, you need to use a technique to access the site through a server in the UK.

Usually the best tool for the job is a VPN service. VPNs are used to establish secure connections to private networks over the Internet, but may also be used to avoid geographical restrictions of websites.

There are many different VPN services. Most of them are paid (although cheap), while some are free. Among the best options, you can:

Please keep in mind that recently the BBC has started being more aggressive at blocking VPN providers. Always verify if your VPN provider works with the BBC (most of them have free trials available).

Luckily, I also wrote a Python script for easily using VPNGate by specifying only the desired country which works perfectly on any Linux distribution, including Ubuntu, Mint, Fedora, OpenSuse and Mageia. You can check it out here.

You may also try VPN OneClick, which lists UK among the servers. Regardless of what VPN service you choose, once it is activated, you are ready to go on and start recording videos from iPlayer.

Script installation

To run the user script in your browser, you need to install an extension that is compatible with Greasemonkey (version 3) scripts. The following are recommended:

Currently the script does not work with Greasemonkey 4 on Firefox 57 or later. Please do not use Greasemonkey 4.

After this step, you can click the following link to open the script page on Greasyfork. On the page that shows up, click on the Install this script button to complete the procedure.

You are now ready to start downloading.

Recording videos

The next time you open a video page on iPlayer, you’ll see that the script adds a box under it with some instructions and a command line. The following pictures shows an example with this video.

bbc_download_youtube-dl
Example of the output of the script

The command line displayed in the gray box is a one-liner you can use together with youtube-dl. This is a software used to convert and record video files, which can be installed on any of the common Linux distributions such as Ubuntu. More informations are available on the official website.

Despite its name, it does not work only for YouTube, it works for many other websites as well. My script uses it because it can download DASH streams served through a MPD file easily. The program can download some BBC videos without the need of my script, however the latter:

  • works on many pages where youtube-dl doesn’t recognize the stream URL
  • provides you with converted SRT subtitles on the fly, thanks to its internal converter

Remember that you will still need ffmpeg installed on your system. Check out its official website here.

To start the download:

  • carefully copy the entire content of the gray box (and nothing else)
  • paste it into a terminal window
  • press Enter and wait until the process is over

Keep in mind that this will create a lot of temporary files, but they will get removed automatically at the end.

It is also possible to download the videos on Windows or macOS. On Windows you just need to create a new file called download.bat (with Notepad, or any other editor) in the same directory of youtube-dl.exe and copy-paste the command line into it. After that, you click the bat file and it should start downloading.

However, please note that I do not offer any assistance for Windows or macOS here on the blog. If in doubt, please use Linux, or find an expert to help you with your OS. You can find the installation instructions of youtube-dl by clicking here.

Recording radio programmes

Starting from version 3.2, the script supports radio programmes such as those provided by BBC School Radio. The process is exactly the same as recording a video, including the command line. The files are in M4A format as provided by the BBC (no conversion is performed).

Conclusion

The script I developed allows to automate all the necessary steps required to ensure the highest possible quality during the downloading. In particular, the script does the following:

  • find the configuration of the player for mobile phones
  • get the list of DASH manifests for different bitrates
  • look for the best available bitrate for desktop computers
  • show the command line to the user

Performing the process manually is time consuming, error-prone and tedious if done multiple times. In this way it should be much easier for those who just want to record a couple of videos to watch them with a modern TV, on the train or keep them in a personal library.

Moreover, starting from version 3.0 the script shows you a download link to the original subtitles in TTML format (which is not very widespread). In addition, it performs an automatic conversion to the commonly used SRT format for your convenience.

Happy downloading! 🙂

Did you like the article?

Writing software and tutorials like this takes time. If you found the provided information useful, and you liked the post, you may buy me a coffee by clicking on the button. 🙂 If you do so, please leave a message on the donation page telling me it’s for this script.

190 pensieri riguardo “How to download BBC iPlayer videos and radio programmes

  1. Your IP appears to be from a hosting company. Are you using a VPN? If the answer is yes, please try one that is not blocked by the BBC. 🙂

  2. Yes, I use a VPN when I watch BBC and it is not blocked. I can watch any show in the iPlayer.
    I just tried the scrip it in Chrome and there it works like a charm! It doesn’t work in my Firefox browser (53.0). I just started FF with all addons disabled except Greasmonkey, but the box doesn’t show up. But I’m happy it works in Chrome. Now I have to find out how to deal with youtube-dl – didn’t use it until now – let’s see …

    Anyway thank you so much for the script, just bought you some coffee 🙂

  3. Thank you for your kind donation! 🙂

    It doesn’t work in my Firefox browser

    Ah, you just reminded me that I always forget to test in Firefox. Will do in a few minutes and hopefully I don’t have to tweak that much…

  4. OK I’ve released version 4.0.1. The weird thing is that I still have issues with the first video on Firefox (I cannot even watch it, like there are no sources) but I’ve fixed a small oversight that was causing problems on the other pages as well.

  5. Yes I saw you changed it to 4.0.1 and now it works in FF too – great!
    But running the given command line I get the following:

    [generic] pc_hd_abr_v2_dash_master: Requesting header
    WARNING: Falling back on generic information extractor.
    [generic] pc_hd_abr_v2_dash_master: Downloading webpage
    [generic] pc_hd_abr_v2_dash_master: Extracting information
    ERROR: requested format not available
    
  6. @fraudiebels, it seems the trailer is disturbing the procedure that detects the video URL. As a matter of fact, the command line displayed there allows you to download the trailer (which doesn’t have subtitles). If you try to load the page a second time it should skip the trailer and work correctly. I will have a look at it, but for now you can use this workaround to get it working quickly.

    @Imnew, I get that you might have a different preference, however handling the M3U8 URLs was a mess, it required several steps and was often error prone with at least 3-4 special cases to take care of. With DASH streams it’s much simpler, the code is easier to maintain and update and also it’s less likely to break. Also youtube-dl handles them effortlessly. Hence, this method is going to stay. 🙂

    Regarding that episode, after clicking play you will get redirected to the page mentioned by fraudiebels which shows the temporary problem discussed above.

  7. I’ve updated the script to version 4.0.3. It should also solve the following error that was appearing with some youtube-dl releases:

    ERROR: requested format not available
    
  8. O.k. – thank you @Lazza. The error has disapeared, subtitles are there.
    But now I get the following warning:

    WARNING: You have requested multiple formats but ffmpeg or avconv are not instal
    led. The formats won't be merged.
    

    After that 2 files are downloaded – video and audio – but as the warning says – not merged..
    Do I still need ffmpeg?
    Can I merge them and if yes – how?

  9. Yes, you need ffmpeg for merging the videos. I should add a note in the blog post. If you want to merge them “after the fact”, you need to feed those two files to ffmpeg separately:

    ffmpeg -i audiofile -i videofile -codec copy output.mp4
    

    Or just run the download again.

  10. I answer myself – yes, I need ffmpeg. Seems I have solved it for now. Thanks a lot for your effort @Lazza

  11. @Lazza Thank you very much for your quick reply.
    Is there any way I can find the M3U8 file with the given video url? I’d really appreciate it if you can help me with the M3U8 problem.

  12. Of course, because the site has changed and the script had to be rewritten. The code is open source, so if you prefer M3U8 (with the added burden and work involved) feel free to update it yourself to get it working on the new website. 🙂

  13. Converted SRT subtitles don’t show up on CBBC or Cbeebies like:
    http://www.bbc.co.uk/iplayer/episode/b00w8hrx/arthur-series-14-17-the-agent-of-change
    http://www.bbc.co.uk/iplayer/episode/b036mytd/alphablocks-series-4-13-cowboy


    This 2 pages have the same content.
    http://www.bbc.co.uk/iplayer/episode/b06jcxg7/the-celts-blood-iron-and-sacrifice-with-alice-roberts-and-neil-oliver-episode-2
    http://www.bbc.co.uk/programmes/b06jcxg7

    but the 3.6.2 version only works with “http://www.bbc.co.uk/programmes/b06jcxg7” not the first page, can you help me modify this:

    else if (playlist.indexOf('iplayer/playlist') > 0) {
                var parts = playlist.split('iplayer/playlist');
                var playlist_address = parts[0] + subdir + '/iplayer/playlist' + parts[1];
                $.getJSON(playlist_address, function(data) {
                    console.log('VPID: ' + data.pid);
                    handle_pid(data.pid, '#empbox');
                });
            }
            return;
        }
    
    if (isProgramme) {
        var clipid = location.href.split("/")[4];
        $.getJSON('http://www.bbc.co.uk/programmes/' + clipid + '/playlist.json', function(data) {
            var vpid = data.defaultAvailableVersion.pid;
            console.log("VPID: " + vpid.toString());
            handle_pid(vpid, '.island .cf.component, .episode-playout');
        });
    }
    
  14. It is working great now. The only thing is that I get the BBC2 promo with the swan first. I have to refresh the page or use download first to get the right download. Can this be avoid? Also I use the latest ffmpeg now to merge.

  15. Imnew, Erik,

    Converted SRT subtitles don’t show up on CBBC or Cbeebies


    I get the BBC2 promo with the swan first

    This is extremely annoying. The BBC apparently did not like labeling all trailers with trailer. Turns out those elements are an ident now. Gosh, who developed that website? 😮 Anyways, I’ve added this case to version 4.0.4.

    Rocky Dennis, that’s usually related to an old ffmpeg version. Given that I cannot test all versions out there, users should use the latest version possible.

    Imnew,

    can you help me modify this

    Please note that I do not do unpaid custom software development. The code is there, provided for free and under the terms of the GPL v3 license:

    There is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program “As is” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction.

  16. Rocky Dennis, that’s usually related to an old ffmpeg version. Given that I cannot test all versions out there, users should use the latest version possible.

    I just tried this with 4.04 and youtube-dl (I used 4.03 and youtube-dl last time) and it still gives the error message.

  17. this used to be real simple….download a small file…open in vlc and save….. now I’m seriosly confused…. windows user I no !! 🙁

  18. Rocky Dennis, actually I was not referring to the script version. 🙂 What I wanted to say is that both the version of youtube-dl you are using and the version of ffmpeg you are using should be updated. For instance, on a machine I am using the script with ffmpeg 3.3 and youtube-dl 2017.02.24.1.

    Anything newer than these should work. You need both tools as outlined in the post.

    Paul Carpenter, it used to be “copy and paste this into your terminal”. Now it’s “copy and paste that into your terminal”… it didn’t change a lot. 🙂

  19. I’ve the latest version of youtube-dl, and I have this message “ERROR: fixed output name but more than one file to download.” I’m not using any VPN so my IP is not UK. Appreciate any tips about what I’m doing wrong.

  20. Rocky Dennis, please can you check the latest version of the script? It fixes some issues on radio programmes.

    a2006, you cannot download from abroad. Fix your IP address first.

  21. Hello Andrea, thank you so much for your wonderful script. Can you help me please? I have two problems:
    First with the radio, I am having issues with the format. I have no problems downloading but they show as text file on my mac. Which is not a problem because I change by adding “.m4a” and then the system recognises them as music file. However iTunes refuses the play it. In fact only VLC seems to be able to play the file regardless of the suffix. Actually even VLC struggles a little because unlike an ordinary file there’s always a short wait before playing the file or when I skip back or forward

    My other issue is with the videos. With the previous version I could simultaneously downloaded many episodes of the same show. Now I cannot anymore because I receive the file as simply “name of the show”, without the episode name like before. I’m not sure it makes sense. Is this normal? I now have to download files one by one because otherwise the cancel each other. Well I think that’s what it’s doing. I hope it makes sense. I’m sorry I’m not very technical.

    I’m so sorry, I hope this message makes sense. I hope you can help. Thank you so much for what you do! ❤

    1. Hi Iris. I try to answer you so maybe I save Andrea some time 🙂

      Regarding the audio files, I just downloaded one and seen the format is mpeg-4 audio. I tried to add different extensions and the one that seemed to work best and be more compatible is mp4. That way both VLC and iTunes read it with no issues.

      When downloading the video files the only thing you need to do to avoid them overwriting each other is to change the name at the end of the script link, when you paste it into the terminal. The very last bit will name your file, just change it with numbers or something to identify the file. Remember that the name cannot contain spaces so you need to use underscore _ or other symbols to separate the words.

      Hope this is helpful, let me know
      And thank you Andrea for your great work!

  22. Iris, please check Matteo’s answer as well because it is very well written (thank you, Matteo!).

    Regarding the extension, can you provide a URL so I can try with the same episodes as you are saving? The name of audio and video files is made from a “title” piece of metadata embedded on the content itself. There might be some way to get it a bit more precise, but again can you provide a URL? 🙂

  23. Hi Andrea, I’ve been using some of your scripts for quite some time and I thank you very much. I’m currently struggling with iplayer: I have successfully used VPNsecure from Italy to pretend to be in the UK, however, recently the iplayer website is no longer showing the scripts and it shows that I am not in the UK, but websites like whatismyipaddress.com they see me in the UK. Is there anything I can do to fix this? Thanks againg for you great work.

    1. The BBC constantly tries to detect VPN users. You should reach out to VPNSecure regarding the issue. Given that they also include SmartDNS in the package, they should be able to help you check that your SmartDNS configuration is correct.

  24. From yesterday, the subtitle is not displaying under the code box any more. how it can be fixed soon, thanks.

  25. Maurizio, here’s an official response from the customer service at VPNSecure:

    Unfortunately, we’re currently facing issues with iPlayer. It seems they have blocked our IP’s.


    Hopefully we will have this resolved during next week.

    Imnew, currently I cannot test the BBC website.

  26. Hi Imnew. I’m in UK and I use Andrea’s script. I just tried it on a random page and everything is working fine for me. Can you send me the URL of the video you’re trying to download so I can have a look at it?

  27. I am in the UK and have just downloaded a iplayer program. All went well with downloading the video and the audio files but then a very short .temp.MP4 file was generated followed by an error message saying “headers could not be generated” and “codec error”. I have ffmpeg loaded but do I have something else missing. Ubuntu 16.04 LTS

  28. Great Script – thanks so much!
    I’ve had a problem this week with the “To download this video, press Play and skip the trailer.” thing. there is no trailer to skip, just the 2-3 second BBC logo or swans etc. If there is a trailer then it works fine…..Any ideas, or am I missing something?

    1. ChrisC, sorry but your comment ended up in the spam queue. Could you provide the URL of the problematic video? Thank you.

  29. The BBC iPlayer website now requires you to login to view a video so the script no longer works. The frame where the script is supposed to display a command now just shows the words ‘To download this undefined, press Play and skip the trailer’.

  30. I have published version 4.1.

    Here’s an excerpt of a reply I left in the relevant thread on GreasyFork:

    Videos with a trailer should be working after logging in. Those without a trailer should be working even without login.

    Note: I am now providing a plain youtube-dl command line for iPlayer episodes. Nowadays the support for BBC iPlayer by said tool is pretty good, rendering my script a bit less useful and maybe obsolete.

    The script continues to work as a neat subtitle converter and it should work on some pages where youtube-dl can’t really provide a solution. However, nowadays the needs of most people should be covered by youtube-dl directly.

  31. Hello, I’m in Italy and after installing the script 4.1 it seems not work. Warning message appear: “BBC iPlayer only works in the UK”. Does the script still work or I’m wrong?
    Thank you!

    1. It works but, as clearly stated in the article, it is up to you to use appropriate measure to ensure the BBC website thinks you are in the UK.

  32. Thanks for reply. So I need to use a VPN? What’s changed about the previous version ’cause I downloaded many progmammes without using a VPN? Keep up your good work!

    1. Yes. 🙂

      Not much changed, there have always been only a small amount of videos that were accessible outside the UK.

  33. Well, the script no longer appears in firefox and in chrome for me. The player shows the message “the content cannot be played, etc.” So I changed my IP to … Singapore (strange!). The player started to work, but the script is gone. Any suggestions? Thanks!

    1. I am not sure I understand. You switched to a VPN node in Singapore and the videos started playing? Is the script installed and active?

  34. Seems that the script no longer works with FF since v56.0. In FF 57.0 (64-Bit) I even can’t install the script. As FF has changed a lot of things – may be the script must be changed too?
    It works fine until FF 55.0.3 (32-Bit) and it works in Chrome (Version 62.0.3202.94 64-Bit)
    Anyway – thanx a lot again for your work!!!

  35. The script works, despite a minor bug with the “quality level” dropdown. However, your IP address is not in the UK. This is something you would have to fix for yourself.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *