A stream recorder (also called a stream ripper) is a computer program used to save data streams to a file. This type of program is most often used to save audio or video streaming media. The process is sometimes referred to as destreaming.
There are different approaches that are used by the software to make the recording, depending on which stage of the process one taps into. In order, they are:
In some cases, it is possible to download the stream as a file, by going to the right address.
Simplest is if the stream is served by simply requesting it, just as web pages are, as in an HTTP GET request: this will directly copy the encoded, streamed file.
In this case, one simply needs to determine the URL, and then download that, either by pasting it into one's web browser (location box or "Open location..."), or via a specialized download manager.
Implementations of this approach include:
Some streaming is not via a simple HTTP request to an URL – in this case, to capture the stream requires some understanding and implementation of the particular streaming protocol (the encoded media stream is encapsulated within a network stream), either:
This can vary greatly in difficulty. If the protocol is not public, or there are various access controls or digital rights management implemented, this can involve substantial reverse engineering. Alternatively, one can hack an existing client to use the existing streaming extraction, and direct it to save the encoded stream, rather than decoding it. In any case, there may be legal issues, depending on jurisdiction.
Adobe's RTMP () is an example of a proprietary protocol for which no full public implementations exist. Thus capturing media encapsulated in RTMP streams is more difficult than from HTTP streams. However, nowadays there are more than a dozen programs that can download and capture RTMP streams; they are available for a variety of operating systems.
Implementing a custom client program to perform the request is generally difficult. It requires significant reverse-engineering of the request protocol, which may require decryption. However, if the hosted media are not available via a standard protocol (such as HTTP), this may be the only way to capture the stream.