2011-10-11 148 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