[Live-devel] ProxyServerMediaSession not working correctly for more than one client per stream

Subhankar Saha Subhankar_Saha at mindtree.com
Wed May 22 03:34:27 PDT 2013


Hi,

I am using 'ProxyServerMediaSession' for one of our projects, where we stream in from multiple cameras and stream out again. I am facing an issue where there are two clients connected and receiving one of the streams. But when one of the clients goes away or terminates its connection with the server, the live555 appears to disconnect the other client as well.

This is easily simulated using the 'live555ProxyServer.exe' application as well (I ran this one to double-check if there is any issue in our application that is causing this). Here is the trace from the 'live555ProxyServer.exe' application:

--- trace ---
$ ./live555ProxyServer.exe -v rtsp://admin:admin@172.22.66.111:42424/Stream
LIVE555 Proxy Server
        (LIVE555 Streaming Media library version 2013.04.30)

RTSP stream, proxying the stream "rtsp://admin:admin@172.22.66.111:42424/Stream"
        Play this stream using the URL: rtsp://172.22.65.90/proxyStream

(We use port 80 for optional RTSP-over-HTTP tunneling.)
ProxyServerMediaSession["rtsp://172.22.66.111:42424/Stream/"] added new "ProxyServerMediaSubsession" for RTP/video/H264 track
ProxyServerMediaSubsession["H264"]::createNewStreamSource(session id 0)
        Initiated: ProxyServerMediaSubsession["H264"]
ProxyServerMediaSubsession["H264"]::createNewRTPSink()
ProxyServerMediaSubsession["H264"]::closeStreamSource()
ProxyServerMediaSubsession["H264"]::createNewStreamSource(session id 2553021356)
ProxyServerMediaSubsession["H264"]::createNewRTPSink()
ProxyServerMediaSubsession["H264"]::closeStreamSource()
--- trace ---

The 'closeStreamSource' is supposed to be called only when both clients are closed. But if I close one of them, the other gets closed too, and then  I see 'closeStreamSource' is being invoked.

However the comment in ProxyServerMediaSession.cpp says:

  // Because there's only one input source for this 'subsession' (regardless of how many downstream clients are proxying it),
  // we don't close the input source here.  (Instead, we wait until *this* object gets deleted.)
  // However, because (as evidenced by this function having been called) we no longer have any clients accessing the stream,
  // then we "PAUSE" the downstream proxied stream, until a new client arrives:

But... one client was definitely accessing the stream, and hence 'closeStreamSource' should not get called!

Can someone throw light in this? What could be going wrong?

Regards,
Subhankar.



________________________________

http://www.mindtree.com/email/disclaimer.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20130522/72c5cc08/attachment.html>


More information about the live-devel mailing list