We currently discovered a problem when we used openRTSP to download a stream. The server includes a timeout parameter in the Session header but openRTSP ignores it. The timeout is set to 50 s and after 60 s play time the server stops sending RTP packets and sends TCP-RST on the RTSP port. Of course, the RTCP RRs are sent from openRTSP and we know that they are recieved on the server. However, it's not enough as keep-alive indication.
Then that's a problem with the server; it should be using these incoming RTCP "RR"s as a 'keep-alive'.
I saw in the changelog that in 2006 you added parsing the timeout parameter of the Session header and the sessionTimeoutParameter() function. However, openRTSP doesn't use it. Is this a bug or intended behaviour?
Intended behavior. The standard mechanism by which servers detect the continued liveness of clients is via RTCP "RR"s. Note that the intention of the "timeout" parameter in the RTSP "SETUP" response is to indicate how long the server can wait after the last detection of client liveness before closing the session. It is *not* intended to indicate the desired frequency of some alternative 'keep-alive' mechanism (such as sending periodic "GET_PARAMETER" requests, for example).
I think that VLC, however, might be using the "timeout" parameter this way (as the frequency for sending "GET_PARAMETER" requests). However, this is non-standard, and there are no plans to do this for "openRTSP". (It might conceivable be added as an option (i.e., not default behavior) sometime in the future, but this would be low-priority, as is support for non-standards-complant servers in general.)
PS: Are you interested in a patch that allows to set the User-Agent header in openRTSP on the command line? In our experience in mobile networks it's only possible to get a reasonable stream quality if the User-Agent matches one of some known mobile types.
Mumble... I detest the idea that some servers may be modifying their behavior based on the client's "User-Agent" field. Can you give some examples of this?
However, I might consider a patch for setting the "User-Agent" field in "openRTSP", because it should be quite simple (because there's already a function "RTSPClient::setUserAgentString()" for doing this). I suggest using the "-U" (upper-case) option for this.
If you make a patch, be sure to do so against the latest version of the code - 2010.07.13 - because "openRTSP" has undergone extensive changes in that version (to use the new asynchronous RTSPClient interface exclusively).
-- Ross Finlayson Live Networks, Inc. http://www.live555.com/ _______________________________________________ live-devel mailing list [email protected] http://lists.live555.com/mailman/listinfo/live-devel
