How to download HTTP Dynamic Streaming video using Livestreamer and UnPlug

Many websites now provide video using Adobe's HTTP Dynamic Streaming. Some videos delivered using this method can be viewed and downloaded by using Livestreamer and UnPlug without running non-free JavaScript.

First install the Mozilla add-on UnPlug in Abrowser:

Then install livestreamer using pip:

$ sudo aptitude install python-pip
$ sudo pip install livestreamer

or alternatively using easy_install

$ sudo easy_install livestreamer

In order to upgrade livestreamer run the command:

$ sudo pip install --upgrade livestreamer


$ sudo easy_install -U livestreamer

Here is an example of a website offering video using HTTP Dynamic Streaming:

By clicking the UnPlug icon the following link is offered but cannot be downloaded using the browser:

Now copy this link to Abrowser and insert "view-source:" before it:


Now more links are offered. Copy the one you want into Abrowser and add "view-source:" again:


Now we are offered this link followed by a list of *.ts files so this is the final link:

Now remove the final part (that starts with "key"), replace it by "manifest.f4m" and add "hds://" to the beginning of the url and feed it to livestreamer:

$ livestreamer hds://

Now you will see the following output:

[cli][info] Found matching plugin stream for URL hds://
Available streams: 234p (worst, best)

Now select the quality (e.g. "best") and download using "-o filename":

$ livestreamer hds:// best -o out.flv

You will see that livestreamer is downloading the file:

[cli][info] Found matching plugin stream for URL hds://
[cli][info] Opening stream: 234p
Written 5661062 bytes[cli][error] Error when reading from stream: Read timeout

[cli][info] Stream ended

Now you can view the video using your favorite video player such as Totem, VLC or MPlayer. If you just want to view the stream without downloading it simply run the last command without the "-o" part:

$ livestreamer hds:// best

The default player used is VLC. In order to use MPlayer instead create a file "~/.livestreamerrc" and paste into it:

player=mplayer -cache 2048

Update (November 2014): the Walla website has changed recently. In order to apply the above method one needs to set the user agent to a mobile device such as Android using user agent switcher add-on and one also needs to enable JavaScript from the domain Walla (if one uses NoScript).


07/27/2014 - 09:10