[FFmpeg-devel] [PATCH] Don't send keepalive messages when interleaving RTP over TCP

Fred Rothganger frothga at sandia.gov
Thu Apr 24 20:53:15 CEST 2014

On 04/24/2014 12:13 PM, Ori Pessach wrote:
> Many RTSP servers will time out a session if they don't receive a keepalive
> message in a timely manner, regardless of the transport used. This patch
> might cause these servers to stop sending data when they determine that the
> client has timed out.
> Specifically, many IP cameras behave in this way. I'm pretty sure the
> behavior is mandated by rfc 2326.

What is the correct behavior for a server?

FFmpeg (rtspdec.c) sends an OPTIONS request every 30 seconds. When the 
server receives this on the incoming side of the TCP connection, what 
should it do?
1) Send no response to the OPTIONS request. Make a note that keepalive 
has been sent and remain in the Playing state. Continue sending RTP and 
RTCP packets.
2) Stall the RTP and RTCP streams. Send the OPTIONS response message. 
Immediately resume the streams.
3) Stall, respond, and do not resume streaming.

I failed to find anything in the RFC that clearly spells out how to 
handle this aspect of interleaving. If you could point me to the 
passage, it would be most appreciated!

-- Fred

More information about the ffmpeg-devel mailing list