我有一个简单的Rtsp客户端...客户端将Rtsp命令发送到Rtsp服务器并从服务器获取RTP数据包。
问题是经过一段时间(约3-4分钟)我的第三方RTSP 服务器断开与RTSP客户端的连接。
我没有实现RTCP ...我从rtsp服务器获取rtp数据包但是没有发送任何RTCP PACKET ...
我做了简单的搜索,发现有些人使用RTSP命令[比如OPTIONS,SET PARAMETER-GET PARAMETER]也保持RTSP服务器和客户端之间的连接...... 但在我的情况下,这不起作用......
以下是我的问题:
答案 0 :(得分:7)
您在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通道存活。
答案 1 :(得分:0)
发送OPTIONS请求并不适合我。
我可以发送以保持连接活动的唯一RTSP命令是GET_PARAMETER
我的超时是60秒,我每40秒发送一次GET_PARAMETER请求
像魅力一样!
(不,您不必将RTCP数据包发送到服务器)