[Live-devel] Status of Live555 RTPS Client and Server using Stream over TCP

Matt Schuckmann matt at schuckmannacres.com
Wed Dec 31 14:23:41 PST 2008


I found this very good discussion on persistent tcp vs non-persistent 
tcp  RTSP clients.
http://www.ietf.org/mail-archive/web/mmusic/current/msg00655.html

 From reading some of this thread and the live555 RTPSClient code it 
appears that the RTSPClient is a persistent tcp client is this true?

How about the live555 RTSP server? I hope it works either way

I understand at least some of the reasons for making RTSPClient a 
persistent tcp client however it seems that some things could be made 
simpler if you could make it non-persistent (in particular this 
RTP-over-TCP streaming problem). Has any work ever been done in this 
direction?

Thanks for listening to my rambling.

Matt S.


Matt Schuckmann wrote:
> After doing a bit more digging in the code and on the web I've 
> discovered that the problem of not receiving RTSP commands after the 
> play command when using RTP-over-TCP streaming is a known problem 
> (although it is usually associated with the keep-a-live feature (cough 
> hack) and not with usages like issuing PAUSE, SET_PARAMETER,  and 
> TEARDOWN commands after starting playing. I had intended to use 
> RTP-over-TCP as a fall back in situations where UDP won't work (for 
> the usual reasons)
> Ross are there any plans or thoughts on how to fix this? I may have 
> time to work on making this work in the near future.
>
> I also discovered that the RTSPclient does indeed establish 1 and only 
> 1 TCP connection per session, regardless if it's TCP or UDP streaming. 
> This is a bit surprising to me considering the connectionless aspects 
> of RTSP. Furthermore with respect to RTP-over-TCP it seems it would 
> virtually eliminate and greatly simplify the whole problem (I'm 
> facing) if the client simply opened a new connection to the server for 
> each RTSP command (or at least created a new one after the original 
> had been subsumed for the purpose of streaming rtp over tcp).
> Comments and discussion are welcome.
>
> I'm still working on figuring out problem 1 from my original post.
>
> Thanks
> Matt S.
>
>
> Matt Schuckmann wrote:
>> Ok I've got a little more information.
>> With respect to problem #2 I've discovered that the server is not 
>> receiving or responding to any RTSP commands once the play command 
>> has been issued when streaming over tcp. In particular I've tested 
>> the TEARDOWN and SET_PARAMETER commands both of which the server 
>> never receives when streaming over tcp.
>>
>> I haven't gotten far enough into the server code to figure out how 
>> this is supposed to work or even if it is supposed to work?
>>
>> One question I have is when streaming over TCP does the client use 
>> the same TCP socket connection it's streaming over to send and 
>> receive further RTSP commands and responses or does it open up new 
>> connections in the same way a it would if streaming over UDP?
>> It seems like the later would work and be easer to implement but I'm 
>> getting the feeling it's the former.
>>
>> Thanks,
>> Matt S.
>>
>>
>> Matt Schuckmann wrote:
>>> I know this is sort of a loaded question probably without a clear 
>>> answer but here goes.
>>>
>>> I was wondering if there are any known issues with using the 
>>> StreamOverTCP option of the RTSPClient::SetupMediaSession() when 
>>> both the client application and the server application are based on 
>>> the Dec 4  2008 release of Live555.
>>> I ask this because I'm seeing two problems when I try to use this 
>>> feature.
>>>
>>> 1.  I've created my own RTP profile for an experimental meta data 
>>> stream and I've created the necessary classes to stream and receive 
>>> this stream along with my H264 video stream and it works create when 
>>> I do standard UDP RTP. However, as soon as I turn on the 
>>> StreamOverTCP the client starts issuing all this "Discarding 
>>> interleaved RTP or RTCP packet" messages and my application never 
>>> gets any of the data. If I don't stream the experimental meta data 
>>> stream the video streams appears to come through fine. Is there 
>>> anything I need to do with my custom meta data source or sink.
>>> On the server side the MetaData stream source is derived from 
>>> FramedSource, the Media subsession is derived from 
>>> OnDemandServerMediaSubsession and it creates a SimpleRTPSink for the 
>>> RTPSink.
>>> On the client the meta data stream sink is derived from MediaSink 
>>> and I've allowed the MediaSession object to create a SimpleRTPSource 
>>> for this stream.
>>>
>>> 2. I've modifed the RTSPServer to accept, handle, and reply to the 
>>> SET_PARAMETER request (a patch is coming) and it works great when I 
>>> do RTP over UDP, however when I turn on the StreamOverTCP option as 
>>> soon as the client tries to send a SET_PARAMETER request the client 
>>> appears to hang indefinitely.
>>> This is probably my problem and I've just started to work it out, 
>>> but any help or suggestions anyone might have would be appreciated.
>>>
>>> Any suggestions you might have would be most appreciated, I was 
>>> hoping that maybe there is a flag or something that I'm not 
>>> respecting (particularly with problem #1).  I understand I'm sort of 
>>> on the harry edge here so I understand if the only clue you can give 
>>> is use the debugger.
>>>
>>> Thanks
>>> Matt Schuckmann
>>>
>>>
>>>
>>> _______________________________________________
>>> live-devel mailing list
>>> live-devel at lists.live555.com
>>> http://lists.live555.com/mailman/listinfo/live-devel
>>>
>> _______________________________________________
>> live-devel mailing list
>> live-devel at lists.live555.com
>> http://lists.live555.com/mailman/listinfo/live-devel
>>
> _______________________________________________
> live-devel mailing list
> live-devel at lists.live555.com
> http://lists.live555.com/mailman/listinfo/live-devel
>


More information about the live-devel mailing list