Hack 82. Rip Streaming Video
Use MPlayer to rip streaming video feeds directly to a file for later viewing.
With broadband connections becoming more and more the norm, many web sites are providing not just streaming audio but even streaming video content. Like with streaming audio, sometimes you would like to save a streaming video feed to a file for later (possibly offline) viewing. [Hack #81] discusses how to use streamripper to rip audio feeds, which it does well, but to rip video feeds you need to use a tool such as Mplayer.
MPlayer is an incredibly flexible video and audio player (for more information on MPlayer check out [Hack #48]). MPlayer supports a wide variety of audio and video formats including streaming audio and video and can also dump the raw video and audio streams directly to a file.
The first step to rip a stream is to get the URL for the streaming video. In some cases this is as easy as right-clicking a link on the web page and selecting Copy Link. Some video streams are embedded in a web page, so you might have to view the page's source code to find the direct link to the stream (many Quicktime feeds are like this). After you have found the URL, the next step is to play a bit of the stream to confirm that MPlayer can, in fact, access it:
$ mplayer http://movies.sample.com/example.mov
Replace the URL with the path to the video stream you want to play. After MPlayer does some initial caching of the streaming content, you will see the video playback in a window. If the video doesn't play, check the error output in the console for some reasons why. MPlayer might not have all of the codecs it needs to play the video, so check out [Hack #53] to make sure you have all of the codecs you need.
After MPlayer has successfully played part of the video, hit Ctrl-C to stop playback, then add two extra options to rip the stream:
$ mplayer URL -dumpstream -dumpfile filename
This command sets MPlayer in a special mode to dump the streaming content directly to the file you specify with the -dumpfile argument. Replace filename with the name of the output file you wish to use. Keep in mind that this is a raw output file directly from the stream, so to play it back in other video players you may need to convert it to a more universal format. For more information on converting video files between formats check out [Hack #63].