[Live-devel] Stream cutoff because openRTSP ignores timeout in Session header
Ross Finlayson
finlayson at live555.com
Fri Jul 16 08:05:04 PDT 2010
>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/
More information about the live-devel
mailing list