RTMP or Real Time Messaging Protocol is a protocol developed by Adobe to stream Flash videos. It’s currently in use by sites like the New York Times, ABC, NBC, Hulu, and so on. Since the video is streamed to the user’s Flash player (in their browser) bit-by-bit, the full video file is never given to the user for them to keep. This is desirable to a lot of media companies because then they can force you to watch through ads to see their content and can charge you to download the full video.
However, RTMPDump, an open-source tool designed to intercept RTMP streams, can download the full video.
Despite numerous “How to use RTMPDump” tutorials and forum posts coming up with a brief Google search, I’ve found a large portion of them are either completely incorrect or are far too complicated since they are not using the full toolkit that RTMPDump provides. Since it took me so long to find a decent procedure for downloading a RTMP video, I thought it would be worth sharing here.
Since this is questionably legal, make sure you understand any Terms of Services you accepted or laws in your locality regarding this before you follow the steps below ;).
Most of these instructions will assume you have Ubuntu, but most distributions will work.
While RTMPDump works on a variety of operating systems, I’ve only researched how to do this on Linux. Feel free to comment if you know how to do this in Windows or OSX.
This open source goodness can be found at http://rtmpdump.mplayerhq.hu/ or you can just intall it using your Linux distro’s package manager. For Ubuntu, that would be typing the following into your terminal:
sudo apt-get install rtmpdump
Now we need to configure your firewall to redirect all RTMP traffic to a local port on your computer (Note: this will screw up any RTMP streaming video you try to watch on your computer, so make sure you run the undo command in one of the later steps to return things to normal). Type the following into your terminal, there should be no output from the command:
sudo iptables -t nat -A OUTPUT -p tcp --dport 1935 -j REDIRECT
When you install rtmpdump
, a program called rtmpsrv
should have been bundled with it and installed as well. We will want to run
this now by entering the following command in a terminal:
rtmpsrv
This should output something that looks like this:
RTMP Server v2.4 (c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL
Streaming on rtmp://0.0.0.0:1935
Now go to your browser and open/refresh the page with the desired video. Try playing the video. If nothing happens and it just continues to give you a black screen, then you’re on the right track: rtmpsrv has intercepted the video.
If you look back at the terminal that’s running rtmpsrv you should see that
some text was outputted. There is one line in this printout that we need; it
should be a command that starts with rtmpdump
. Copy that entire command, we
will need it later.
You can CTRL+C out of rtmpsrv now that we have what we need.
You must undo the iptables redirection command we performed earlier before you can do anything else, so run this in your terminal:
sudo iptables -t nat -D OUTPUT -p tcp --dport 1935 -j REDIRECT
Now paste that command you copied
from the rtmpsrv output in the step before last into your terminal prompt and
hit enter. You should now see a torrent of INFO
printout along with a
percentage as the video is being downloaded.
Once downloaded, the video file, which has a
flv
extension and was named by the -o
parameter in the command you copied
and pasted, should be in your current directory (ls | grep flv
can find it as
well). Any video player should be able to play it, but vlc is a nice video
player for Ubuntu.
You’re welcome.