2011-10-11 86 views
7

我有一个简单的Rtsp客户端...客户端将Rtsp命令发送到Rtsp服务器并从服务器获取RTP数据包。保持活着的Rtsp连接

问题是,我的第三方RTSP 服务器与我的RTSP客户端断开连接后(约3-4分钟)。

我还没有实现RTCP ......我从RTSP服务器RTP包,但不发送任何RTCP包...

我进行简单的搜索和发现,有些人用一些RTSP命令[像选项,设置参数GET参数]太保持RTSP服务器和客户端... 之间但在我还活着的情况下连接不起作用......

这里是我的问题:

  1. 保持与RTSP服务器连接的最佳方式是什么?
  2. 我是否必须实现RTCP [发送RTCP数据包到服务器]?可能会因为我不发送RTCP数据包到服务器而导致连接中断?

回答

6

您在SETUP响应中收到的超时值是多少?您是否使用此值来实现保持活动功能?

Session =“Session”“:”session-id [“;” “timeout”=“delta-seconds ]

通常RTSP基于TCP,而RTP基于UDP。所以理想情况下,这两个频道都需要保持活跃的功能如果RTP会话关闭,并不意味着RTSP连接也应该被拆除,而RTP通道必须在RTSP通道拆卸时关闭。

1)与RTSP服务器保持连接的最佳方式是什么? - >在设置响应中收到的timeout值之前,定期发送任何RTSP请求(OPTIONS,SET_PARAMETER或GET_PARAMETER)。

2)我是否必须实现RTCP [发送RTCP数据包到服务器]?可能会因为我不发送RTCP数据包到服务器而导致连接中断? - > RFC(RTSP或RTP)没有强制要求RTCP保持RTP信道的存活。

+0

我的第三方RTSP服务器不给会话超时值。虽然我发送选项命令,在每5秒降至连接.. 。 – Novalis

+0

这意味着您的服务器正在等待RTCP数据包。 – Alam

+0

是的......当我发送RTCP数据包时,它不会丢失连接......但是它“吃”了一个轴带宽.. – Novalis

0

发送OPTIONS请求不适用于我。

唯一的RTSP命令,我可以发送到保持连接是GET_PARAMETER

我超时是60岁,我送一个GET_PARAMETER要求每一个40多岁的

就像一个魅力!

(不,你不必RTCP包到服务器)

+1

请注意,“GET_PARAMETER”不是所有RTSP服务器都支持的。在发送之前,如果它包含“GET_PARAMETER”参数,您应该检查对“OPTIONS”的响应。 – Gediminas