<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><blockquote type="cite">Now I'd like to proxy some remote surveillance cameras. As first I started working on some<br>own proxying code, but that didn't work too well and then I found ProxyServerMediaSubsession<br>which seems to do exactly what I want to do for now. However, I'd like that the streams my<br>application serves are multicasted, and ProxyServerMediaSubsession has an explicit<br>mention that it uses unicast only.</blockquote><div><br></div>That's correct.  That code is used to allow a single 'back-end' RTSP/RTP stream (which can be either unicast or multicast) to be proxied - *unicast* - to one or more 'front-end' clients.  It is not intended to be used for multicast front-end streaming, because would be based upon completely different code ("PassiveServerMediaSubsession" rather than "OnDemandServerMediaSubsession").</div><div><br></div><div>Fortunately, however, you can proxy to a multicast 'front-end' very simply, using just a modification to the existing tools:</div><div>(Assuming that your 'back-end' camera streams H.264 video.)</div><div>1/ In the "testH264VideoStreamer.cpp" code (in "testProgs"), change "inputFileName" from "test.264" to "stdin".</div><div>2/ Then run "openRTSP" on the 'back-end' stream, piping its output to your modified "testH264VideoStreamer" application.  I.e.:</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>openRTSP -v <a href="rtsp://back-end-rtsp-url">rtsp://back-end-rtsp-url</a> | your_modified_testH264VideoStreamer</div><div><br></div><div><br></div><div><blockquote type="cite">Also I probably want to also be able to decode the incoming stream in order to grab<br>still images from it and do some manipulation on it before re-encoding it again. Is there<br>some good way to "duplicate" the incoming stream into my custom code for doing the<br>image manipulation while at the same time keeping the normal proxied stream working?<br></blockquote><div><br></div>Yes, you can use the "StreamReplicator" class.  (Note the "testReplicator" demo application - in "testProgs" - that illustrates how to use this.)</div><div><br></div><div>If you use the mechanism that I suggested above (piping "openRTSP" into a modified "testH264VideoStreamer"), then you could update the "testH264VideoStreamer" some more, by feeding the "StreamReplicator" from the input "ByteStreamFileSource" (from "stdin"), create two replicas, then feed one replica into the "H264VideoStreamFramer" (and thus the "H264VideoRTPSink", for streaming), and feed another replica into your decoder.</div><br><br><div apple-content-edited="true">
<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>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>