A friend involved in a business development project recently asked me whether there was a way he could save a tiny part of a long webcast created during a government agency meeting that was archived on a third-party website.
The webcast, provided by an agency using our tax dollars, had been streamed live and for free. But after the event the only way to view it was via a private company that provides playback for a not insignificant price (exactly how you justify charging for and profiting from something the public paid for is not quite clear to me).
My friend's problem was he only needed a short segment of the webcast, which was many hours long. Because the people he needed to discuss the content with would, most likely, not be near an Internet connection when he met with them, he needed to save the segment. So, my friend purchased access to the archived content and thus his question about how to make a copy.
HISTORY LESSON: Video collaboration
Now, if there's one area of multimedia technology that has achieved a level of mind-boggling complexity it is video, and when a customized player is in use you have to delve into the code on the page to find where the stream comes from and what it's called. Just to make things even more difficult, the server name, the file location and the file name aren't necessarily in a single location in the code.
Not wanting to get my hands dirty, I advised him to load the page with the video playing and from the toolbar select "View | Page Source."
Now we had to identify the protocol used to transport the stream. As many companies use Adobe products for this kind of delivery it was worth searching for "flash," which he found immediately, and right next to that he found the path to and the name of the file.
The file had an MP4 extension which meant it was a multimedia container using an MPEG-4 Part 14 format. MP4 is a "wrapper" that encapsulates video and audio streams and is based on Apple's QuickTime format.
Flash uses Real Time Messaging Protocol (RTMP), which is a pretty sophisticated TCP-based streaming protocol, so it was a good bet that an open source tool called rtmpdump might do the job.
I got my friend to download the tool (it is in a .zip file) and unpack it into a subdirectory. Then he just needed to open a command window, move to the subdirectory the tool was in, and run the software with a few command line options. For a full list of the options, enter "rtmpdump -?"
The first argument my friend needed was "-r" followed by the URL of the file (we had to sleuth around a bit more to find the server name). Then, to specify where the streamed data should be saved, came "-o" followed by the name of the output file. My friend put all this together and the result looked like this:
C:\rtmpdump>rtmpdump -r "rtmp://someserver.com/somefile.mp4" -o saved.mp4
RTMPDump 2.4 git-b627335 2011-7-23
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting download at: 0.000 kB