<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><base href="x-msg://3897/"><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Franklin Gothic Medium";
        panose-1:2 11 6 3 2 1 2 2 2 4;}
@font-face
        {font-family:"Franklin Gothic Book";
        panose-1:2 11 5 3 2 1 2 2 2 4;}
@font-face
        {font-family:"Franklin Gothic Heavy";
        panose-1:2 11 9 3 2 1 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.apple-style-span
        {mso-style-name:apple-style-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Thanks for your quick response Ross!<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'><i>Note that you don't have to do that.  It's possible for a single proxy server to serve multiple 'back end' streams.  (E.g., our "LIVE555 Proxy Server" application can do this.)<o:p></o:p></i></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Our approach with this one-to-one setup was to ensure that we didn’t lose all of our camera streams if one proxy server crashed.  This system is designed to run on its own for long periods of time (days, weeks, etc.) with minimal user interaction other than connecting clients (VLC) to view available streams.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><i>Note that our proxy server code already monitors and keeps alive the connection to each of its 'back end' server.  This is not something that you need to handle separately.</i><i><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p></o:p></span></i></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Yes, and we are relying on that code to reconnect to the camera.  What I was looking for was a connection status event, if you will, so that my manager service can notify, or respond to queries from other services about the proxy/camera connection state.  <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>i.e. A GUI displays a list of available cameras to an end user.  I would like to only list cameras that are currently connected to their respective proxy.  If, for some reason, a proxy loses its connection to a camera, I would like to be able to exclude this particular camera from the list, or at least notify the “client” that it is not currently connected.  This type of event could also be used to alert other services of a problem with the system if a camera/proxy connection suddenly goes down and is not restored by the proxy server in some period of time.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Cheers!<o:p></o:p></span></p><div><p class=MsoNormal><span style='font-family:"Franklin Gothic Heavy","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Franklin Gothic Medium","sans-serif";color:#1F497D'>Russell Tyson | SAIC</span><span style='font-size:10.0pt;font-family:"Franklin Gothic Medium","sans-serif";color:#1F497D'><br></span><span style='font-size:10.0pt;font-family:"Franklin Gothic Medium","sans-serif";color:gray'>Senior Software Engineer | Software Solutions Team<br></span><span style='font-size:10.0pt;font-family:"Franklin Gothic Book","sans-serif";color:gray'>phone: 256-971-6640 | mobile: 256-651-9981<br>russell.a.tyson.iii@saic.com | </span><span style='color:#1F497D'><a href="http://www.saic.com/"><span style='font-size:10.0pt;font-family:"Franklin Gothic Book","sans-serif";color:gray'>saic.com</span></a></span><span style='font-size:10.0pt;font-family:"Franklin Gothic Book","sans-serif";color:#1F497D'><o:p></o:p></span></p></div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> live-devel-bounces@ns.live555.com [mailto:live-devel-bounces@ns.live555.com] <b>On Behalf Of </b>Ross Finlayson<br><b>Sent:</b> Monday, April 29, 2013 2:29 PM<br><b>To:</b> LIVE555 Streaming Media - development & use<br><b>Subject:</b> Re: [Live-devel] RTSPClient WRT connection to rtsp server (camera)<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>I am working on a windows service (a “Manager”) that starts, monitors, and stops multiple Proxy servers.  These proxy servers are based on your Live555 Proxy Server code. Each proxy is serving a single stream from a single back end camera.<o:p></o:p></span></p></div></div></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>Note that you don't have to do that.  It's possible for a single proxy server to serve multiple 'back end' streams.  (E.g., our "LIVE555 Proxy Server" application can do this.)<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p><div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>During the lifetime of the proxy, I expect that the back end connection could terminate for some reason, or not connect at all in the first place.  I have been looking for a hook to report this state back to the manager, but have not been successful.  Does the RTSPClient provide any type of event, or other signal that could be used by other processes/services for the purpose of monitoring the state of the back end connection?<o:p></o:p></span></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>Note that our proxy server code already monitors and keeps alive the connection to each of its 'back end' server.  This is not something that you need to handle separately.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p><div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>In our system, we also have an archiving service.  This service connects to the stream provided by the proxy and archives the data to a file.  One archiver exists for each proxy.  The Archiver uses the OpenRTSP client to achieve this.  I have noticed that if the OpenRTSP client terminates unexpectedly, the CPU usage of the proxy skyrockets from about .07 average up to around 22.5 average.  We run about 25 of the proxies, so you can imagine the hit if 4 of these clients die.  In the case where the archiving service as a whole dies, all of the clients can terminate, which leaves us with 25 proxies running at around a 22% CPU usage with makes the system unusable.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'> <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>I had considered monitoring the CPU load on all of the proxies through the manager, and terminating/restarting any that run high on CPU usage.  But I was wondering if you could shed some light on what is going on in the proxy to produce this effect.<o:p></o:p></span></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>Sorry - no idea.  That's something that you're going to have to track down yourself.<o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal><span class=apple-style-span><span style='font-size:13.5pt;font-family:"Helvetica","sans-serif";color:black'>Ross Finlayson</span></span><span style='font-size:13.5pt;font-family:"Helvetica","sans-serif";color:black'><br><span class=apple-style-span>Live Networks, Inc.</span><br><span class=apple-style-span><a href="http://www.live555.com/">http://www.live555.com/</a></span></span> <o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p></div></body></html>