2012-08-24 145 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