我有一个简单的Rtsp客户端...客户端将Rtsp命令发送到Rtsp服务器并从服务器获取RTP数据包。
问题是,经过一段时间(大约3-4分钟),我的第三方RTSP服务器断开与RTSP客户端的连接。
我没有实现RTCP ...我从rtsp服务器获取rtp数据包但不发送任何RTCP PACKET ...
我做了简单的搜索,发现有些人使用一些RTSP命令[比如OPTIONS,SET PARAMETER-GET PARAMETER]也保持RTSP服务器和客户端之间的连接...但在我的情况下,这不起作用...
这是我的问题:
您在SETUP响应中收到的超时值是多少?您是否使用此值来实现保持活动功能?
Session =“Session”“:”session-id [“;” “timeout”“=”delta-seconds]
通常,RTSP基于TCP,RTP基于UDP。理想情况下,两个通道都需要保持活动功能。如果RTP会话关闭并不意味着RTSP连接也应该被拆除,而RTP信道必须在RTSP信道拆除时关闭。
1)与RTSP服务器保持连接的最佳方法是什么? - >在SETUP响应中收到timeout
值之前,定期发送任何RTSP请求(OPTIONS,SET_PARAMETER或GET_PARAMETER)。
2)我是否必须实施RTCP [将RTCP数据包发送到服务器]?连接是否会丢失,因为我不向服务器发送RTCP数据包? - > RFC(RTSP或RTP)不要求RTCP保持RTP通道存活。
发送OPTIONS请求对我不起作用。
我可以发送以保持连接活动的唯一RTSP命令是GET_PARAMETER
我的超时是60秒,我每40秒发送一次GET_PARAMETER请求
奇迹般有效!
(不,您没有RTCP数据包到服务器)