<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><div bgcolor="#FFFFFF" text="#000000" class=""><span class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class="">I
 would like to see for myself that RTSP REGISTER make through NAT 
firewall. So I'm using the sample programs provided<br class=""><br class=""></div>So I 
have a Live555 proxy server available on a public IP address.<br class=""><br class=""></div>I
 ran it like this:<br class="">sudo ./live555ProxyServer -V -T 80 -p 554 -R<br class=""><br class=""></div>At
 home on my Mac behind NAT,<br class=""></div>I ran the RTSP server:<br class="">./testOnDemandRTSPServer<br class=""><br class=""></div>Next
 I ran this on another terminal on my Mac (where xx are the actual 
public IP address where the proxy server resides)<br class="">./registerRTSPStream
 -t 52.xx.xx.xxx 554 <a class="moz-txt-link-freetext" href="rtsp://">rtsp://</a><a href="http://1.160.85.221:8554/h264ESVideoTest" target="_blank" class="">1.160.85.221:8554/<wbr class="">h264ESVideoTest</a><br class=""><br class=""></div>But

 it doesn't work. Is what I am doing correct?</div></div></span></div></div></blockquote><div><br class=""></div>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”.</div><div><br class=""></div><div>However, what you are doing will work *only if* the back-end server is reachable - from the proxy server - using the “<a href="rtsp://“" class="">rtsp://“</a> URL that you provided to the “REGISTER” command - i.e., "<a href="rtsp://1.160.85.221:8554/h264ESVideoTest" class="">rtsp://1.160.85.221:8554/h264ESVideoTest</a>”</div><div><br class=""></div><div>In other words, if - instead of your proxy server - you were to run (on the *same* computer) the command</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>openRTSP -n -t <a href="rtsp://1.160.85.221:8554/h264ESVideoTest" class="">rtsp://1.160.85.221:8554/h264ESVideoTest</a></div><div>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 ?</div><div><br class=""></div><div>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...</div><div><br class=""></div><div><br class=""></div><div><blockquote type="cite" class=""><div class=""><div bgcolor="#FFFFFF" text="#000000" class=""><span class=""><div class="">In registerRTSPStream.cpp I also 
tried to turn on "reuseConnection" by setting it to true like so:<br class=""><br class="">RTSPRegisterSender::createNew(<wbr class="">*env,
 remoteClientNameOrAddress, remoteClientPortNum, rtspURLToRegister,<br class="">                              <wbr class=""> 
 registerResponseHandler, ourAuthenticator,<br class="">                              <wbr class=""> 
 requestStreamingViaTCP, proxyURLSuffix, True/*reuseConnection*/,<br class="">                              <wbr class=""> 
 1/*verbosityLevel*/, programName);<br class=""></div></span></div></div></blockquote><div><br class=""></div>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.</div><div><br class=""></div><div>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:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>registerStream(sms, 52.xx.xx.xxx, 554, NULL);</div><div>where “sms” is the “ServerMediaSession” object whose stream you want to access from the proxy server.</div><br class=""><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  ">Ross Finlayson<br class="">Live Networks, Inc.<br class=""><a href="http://www.live555.com/" class="">http://www.live555.com/</a></span></span>
</div>
<br class=""></body></html>