rtsp、rtp tcp和udp链接方式区别

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanbinquan/article/details/60574375

1、工作方式的差异

通常来说,RTSP提供UDP方式发送RTP流。当然,发送流媒体时,UDP往往是更好的选择。但是,在互联网上使用UDP方式发送流是不可能的。
 
下面是使用UDP时的一些问题:
1. UDP协议上的RTSP/RTP需要打开许多UDP端口(每一路流媒体都需要2个UDP端口,一个用于接收数据,一个用于接收控制信息);
2.当因特网上的路由器没有打开这些端口的时候,上述第一点将会存在问题;
3. 中间网络路由器很容易就过滤或者忽略掉UDP数据包;
4. UDP是不可靠传输协议,媒体包在因特网上传输时会面临着丢包。
 
但是我们如果在TCP传输协议上承载RTSP/RTP将解决这些问题。
1. RTSP/RTP的控制命令和数据都通过一个端口,即RTSP的端口(默认为554),进行交互。
2. TCP协议提供可靠的流传输。
3. TCP包更容易穿透中间网络路由器。
 
但是,使用TCP传输协议承载RTSP/RTP需要花更多的功夫。
 
1. 由于二元交织,会使得RTP包封包和解包的过程变得更加复杂。
2. TCP是可靠的传输协议,但正是因为如此,会导致在实时流媒体中的延时。

2、rtsp指令交互差异

与UDP rtsp指令集相比,TCP指令集在setup指令上存在差异:


SETUP rtsp://192.168.100.123:554/mpeg4cif/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
#ps:指定是有tcp模式,使用偶数信道作为数据传输(rtp)信道,使用奇数信通道(rtcp)作为控制信道(数据信道 + 1)。所以,如果你设定数据信道为 0 ,那控制信道应该是 0 + 1 = 1。


RTSP/1.0 200 OK
CSeq: 4
Date: Mon, Mar 06 2017 02:56:22 GMT
Transport: RTP/AVP/TCP;unicast;destination=192.168.100.145;source=192.168.100.123;interleaved=0-1
Session: 425EC42F

3、rtp数据接收差异

使用udp 接收数据时不需要对数据做rtp包解包处理,使用tcp接收数据时,由于rtp,rtcp,rtsp都在同一端口上,用户需要做tcp解包处理。

RTP数据将通过用来发送RTSP命令的TCP Socket进行发送。RTP数据将以如下格式进行封装:

| 标识符 | 信道 |数据长度 | 数据 |

RTP数据标识符,"$" (0x24)
信道数字 - 1个字节,用来指示信道(0x00 一般代表rtp数据, 0x01 一般代表rtsp数据)
数据长度 - 2个字节,用来指示插入数据长度
数据 - 数据包,比如说RTP包,总长度与上面的数据长度相同

展开阅读全文

没有更多推荐了,返回首页