2012-08-24 198 views
1

我想從具有RTSP的設備獲取一些視頻數據。通過TCP通過RTSP獲取視頻

UDP上的RTSP運行良好,但我需要通過TCP。

發出RTSP命令後,我收到RTP,但我不知道如何在這裏處理它們。 有效載荷是如下:$ [信道 - 1個字節] [長度 - 2字節] [數據]

的事情是,我接收這些分組,有時還包,其中信道是10或99等

那麼有誰能請提供一些關於如何處理有效載荷的輸入?

回答

2

全部在RFC 2326 "Real Time Streaming Protocol (RTSP)"。需要「10.12嵌入式(交叉存取)二進制數據」:如RTP分組

流數據由ASCII美元符號(24進制),後跟一字節信道標識符封裝,隨後的長度封裝的二進制數據爲網絡字節順序中的二進制雙字節整數。流數據緊隨其後,沒有CRLF,但包括上層協議頭。每個$塊恰好包含一個上層協議數據單元,例如一個RTP分組。

有一個小例子,有作爲:

S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} 
S->C: $\000{2 byte length}{"length" bytes data, w/RTP header} 
S->C: $\001{2 byte length}{"length" bytes RTCP packet} 
+0

這是我所遵循的確切文件;但我沒有足夠的數據。此外,我使用Wireshark檢查了輸入,並看到以下消息:[格式錯誤的數據包:RTP]。我是否應該將RTP的所有有效負載連接起來,直到接收到另一個負載,如您描述的第一行中的兩行?另外,有效載荷非常大,而數據長度只能說22個字節。在這種情況下,我可以從哪裏獲取PPS和SPS? –

+0

它應該基本上是您通過UDP接收的相同數據。 –

1

獲得PPS是IMO簡單,並不真正需要parseing包。

您的SPS,要求即時猜測,將需要進入的數據包(我不認爲你需要擔心WS味精「無效包」。

約在0×09?

使用型號爲PT什麼

看到here數據包描述答案拆包RTP的

樣本實現here

嘗試尋找here的有關RTSP CON更多信息trol和SDP over TCP。如果您正在檢查RTSP會話/對話的詳細信息以及有關視頻中各個軌道的控制協議選擇的消息詳細信息。如果你能夠在沒有轉移到SDP/RTCP的情況下得到你的答案,那麼很明顯,這會更快/更好。

1

這是TCP/RTP數據包格式:

[$ - 1byte][Transport Channel - 1byte][RTP data length - 2bytes][RTP data] 

剩下的就是像UPD

更多信息閱讀process raw rtp packets