> 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