Live Networks logo

The LIVE555TM Proxy Server

The "LIVE555 Proxy Server" is a unicast RTSP server - built from the "LIVE555 Streaming Media" software - that acts as a 'proxy' for one or more 'back-end' unicast or multicast RTSP/RTP streams (i.e., served by other server(s)).

The key feature of a proxy server is that it reads each 'back-end' stream only once, regardless of how many separate clients are streaming from the proxy server. This makes the proxy server ideal, for example, for streaming from a RTSP-enabled video camera (which might not be able to handle more than one connection at a time).

                                                              --> [RTSP client1]
        [back-end RTSP/RTP server] --> [LIVE555 Proxy Server] --> [RTSP client2]
                                                              --> [RTSP clientN]

Basic operation

The "LIVE555 Proxy Server" is a command-line (i.e., 'console') application. The simplest way to run it is to type:
        live555ProxyServer <url>
where <url> is a RTSP URL (i.e., beginning with "rtsp://") of a 'back-end' stream (e.g., from a video camera). After starting up, the server will display its own "rtsp://" URL for the proxy stream. RTSP clients can then use this URL to play (i.e., receive) the proxy stream.

The server can act as a proxy for many 'back-end' streams - not just one. If you enter more than one "rtsp://" URL on the command line, i.e.,

        live555ProxyServer <url1> <url2> ... <urlN>
then the server will - after starting up - display "rtsp://" URLs for proxying each one. (Of course, you should proxy multiple streams only if you have sufficient network bandwidth to receive all of them.)

Verbose (debugging) output

To display additional output, showing the basic operation of the server, add the "-v" option, before the "rtsp://" URLs. To display even more output - including the RTSP protocol exchange between the proxy server and each of the 'back-end' servers - use the "-V" (i.e., upper-case "V") option instead. (If you are having trouble with the proxy server, then we recommend using the "-V" option to try to figure out what's wrong.)

Back-end streaming over TCP

By default, the proxy server will ask to receive each 'back-end' stream via UDP (i.e., receiving RTP and RTCP packets as UDP datagrams). Sometimes, however, the 'back-end' server may be behind a firewall that blocks UDP packets. To overcome this, you can use the "-t" option to request that each 'back-end' RTSP server stream RTP and RTCP data packets over its TCP connection, instead of using UDP packets. (Note that not all RTSP servers support TCP streaming, and that TCP cannot be used to receive multicast streams.) You should use this option only if you are unable to receive UDP packets, because streaming over TCP can cause incoming data to be excessively delayed.

Alternatively, you can use the "-T <http-port-number>" option to request that each 'back-end' stream be sent (using TCP) over a "RTSP-over-HTTP tunnel", using the specified HTTP port number. RTSP-over-HTTP tunneling can be useful if you are behind a HTTP-only firewall. (Note, however, that not all 'back end' RTSP servers will support this.)

Note: The "-t" and "-T <http-port-number>" options apply only to the 'back-end' stream(s). They do not affect the 'front-end' streams from the proxy server to (potentially multiple) RTSP clients. Those streams can be over either UDP or TCP, depending upon what each client requests.

Proxying access-controlled streams

Some 'back-end' RTSP servers require user authentication (via a user name and password) before you can access their stream. If you add the "-u <username> <password>" option to the proxy server, then it will use this <username> <password> pair - if necessary - to access each 'back-end' stream. (To specify an empty password, use "" for <password>.)

Alternatively, you could try including the user name and password inside the "rtsp://" URL, as: "rtsp://<username>:<password>@<hostname>:<etc.>". (This is not recommended, however, because - in this case - the password will be sent in the clear over the Internet. Also, not all 'back-end' servers will accept this type of URL.)

Specifying a RTSP server port

By default, this server application tries to use one of the standard RTSP server port numbers (554 and 8554). Alternatively, you can use the "-p <rtsp-port-number>" option to specify that the server try to use the specified port number for RTSP. (If this port cannot be used, then it will try one of the standard port numbers, as usual.)

Proxying one or more 'advertised' back-end streams

This server application can also set up proxying for a back-end stream that's advertised using a "REGISTER" RTSP command. (This advertisement - which specifies the "rtsp://" URL of the back-end stream - can be sent either by the back-end server itself, or by some third-party application.) To give the server application this functionality, start it with the "-R" command-line option. (If you use this option, then you may omit entering any "rtsp://" URLs on the command line.)

The proxy stream will then be accessible - from the proxy server - using a "rtsp://" URL that will be announced on the console.

Source code, and support

Because this application is intended for computer networking professionals rather than casual end users, we do not make it available as a pre-built binary. Instead, you must build it yourself, from source code. To do so, you must download and build the "LIVE555 Streaming Media" software. Note that the "LIVE555 Proxy Server" application is included in the "proxyServer" subdirectory.

Support for the "LIVE555 Proxy Server" (and the rest of the "LIVE555 Streaming Media" code) is provided via our developers' mailing list: "". Note that you must first subscribe to the mailing list before you can post to it; please also read the FAQ before posting to the mailing list.

"LIVE555" and the Live Networks logo are trademarks of Live Networks, Inc.