[Live-devel] RTSP Register with the sample codes

Ross Finlayson finlayson at live555.com
Wed May 27 19:07:51 PDT 2015


> I would like to see for myself that RTSP REGISTER make through NAT firewall. So I'm using the sample programs provided
> 
> So I have a Live555 proxy server available on a public IP address.
> 
> I ran it like this:
> sudo ./live555ProxyServer -V -T 80 -p 554 -R
> 
> At home on my Mac behind NAT,
> I ran the RTSP server:
> ./testOnDemandRTSPServer
> 
> Next I ran this on another terminal on my Mac (where xx are the actual public IP address where the proxy server resides)
> ./registerRTSPStream -t 52.xx.xx.xxx 554 rtsp:// <rtsp://>1.160.85.221:8554/h264ESVideoTest <http://1.160.85.221:8554/h264ESVideoTest>
> 
> But it doesn't work. Is what I am doing correct?

Yes (although note that running the proxy server with “-T <portnum>” has no effect if you’re creating proxies only via the “REGISTER” command, because in that case RTP/RTCP-over-HTTP tunneling is not used).  So, you could have omitted the “-T 80”.

However, what you are doing will work *only if* the back-end server is reachable - from the proxy server - using the “rtsp://“ URL that you provided to the “REGISTER” command - i.e., "rtsp://1.160.85.221:8554/h264ESVideoTest <rtsp://1.160.85.221:8554/h264ESVideoTest>”

In other words, if - instead of your proxy server - you were to run (on the *same* computer) the command
	openRTSP -n -t rtsp://1.160.85.221:8554/h264ESVideoTest <rtsp://1.160.85.221:8554/h264ESVideoTest>
Would that work?  I.e., would you be able to access the back-end server - from the proxy server’s computer - using the IP address 1.160.85.221 ?

If the answer to that is No (because of your NAT), then you won’t be able to set up proxying using the “registerRTSPStream” ‘third-party’ application.  However, you *may* be able to set up proxying if you can access the proxy server’s computer (using its IP address 52.xx.xx.xxx) from the 'back-end’ server’s computer (i.e., from 1.160.85.221).  See below...


> In registerRTSPStream.cpp I also tried to turn on "reuseConnection" by setting it to true like so:
> 
> RTSPRegisterSender::createNew(*env, remoteClientNameOrAddress, remoteClientPortNum, rtspURLToRegister,
>                                 registerResponseHandler, ourAuthenticator,
>                                 requestStreamingViaTCP, proxyURLSuffix, True/*reuseConnection*/,
>                                 1/*verbosityLevel*/, programName);

No, that won’t work for the “registerRTSPStream” application, because that will ask the proxy server to try to access the ‘back-end’ server using the TCP connection that the “registerRTSPStream” application used to connect to the proxy server.  So obviously that won’t work.

Instead, you would need to modify the back-end server so that *it* sends the RTSP “REGISTER” command to the proxy server.  I.e., add the following line of code to “testOnDemandRTSPServer.cpp” - just before the call to “doEventLoop()” on line 442:
	registerStream(sms, 52.xx.xx.xxx, 554, NULL);
where “sms” is the “ServerMediaSession” object whose stream you want to access from the proxy server.


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20150527/38e4dcc9/attachment.html>


More information about the live-devel mailing list