> 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/

_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to