我有一个简单的Rtsp客户端…客户端向Rtsp服务器发送Rtsp命令,从服务器接收RTP报文。
问题是过了一段时间(大约3-4分钟)我的第三方RTSP服务器与RTSP客户端断开连接。
我没有实现RTCP…我从rtp服务器接收rtp包,但不发送任何RTCP包…
我做了简单的搜索,发现有些人使用一些RTSP命令[如OPTIONS, SET PARAMETER- get PARAMETER]来保持RTSP服务器和客户端之间的连接…但在我的情况下,这不起作用…
以下是我的问题:
- 保持与RTSP服务器连接的最佳方法是什么?
- 我必须实现RTCP[发送RTCP数据包到服务器]吗?可能连接下降,因为我没有发送RTCP数据包到服务器?
您在SETUP响应中收到的超时值是多少?您是否使用此值来实现keep alive功能?
Session = "Session":" Session -id [";"timeout" =" delta-seconds .)
一般RTSP基于TCP, RTP基于UDP。所以理想情况下,这两个渠道都需要保持活跃功能。如果RTP会话被关闭,这并不意味着RTSP连接也应该被关闭,而RTP通道必须在RTSP通道关闭时被关闭。
1)保持与RTSP服务器连接的最佳方法是什么?-->在timeout
值收到SETUP响应之前,定期发送任何RTSP请求(OPTIONS, SET_PARAMETER或GET_PARAMETER)
2)我必须实现RTCP[发送RTCP数据包到服务器]吗?可能连接下降,因为我没有发送RTCP数据包到服务器?--> RFC (RTSP或RTP)不强制要求RTCP保持RTP通道存活
发送OPTIONS请求不适合我。
我唯一可以发送的RTSP命令是GET_PARAMETER
我的超时时间是60秒,我每隔40秒发送一个GET_PARAMETER请求
工作像一个魅力!
(不,您不必向服务器发送RTCP数据包)