RTSP over UDP与RTSP over TCP取流对比
本文详细介绍通过RTSP取流的过程,分析RTSP over UDP与RTSP over TCP在RTSP消息、媒体数据封装上的区别,并总结RTSP over UDP与RTSP over TCP的优缺点。RTSP: Real Time Streaming Protocol,实时流协议,用于多媒体数据流的控制,如播放,暂停等。RTP: Real-time Transport Protocol,实时传输
本文详细介绍通过RTSP取流的过程,分析RTSP over UDP与RTSP over TCP在RTSP消息、媒体数据封装上的区别,并总结RTSP over UDP与RTSP over TCP的优缺点。
RTSP: Real Time Streaming Protocol,实时流协议,用于多媒体数据流的控制,如播放,暂停等。
RTP: Real-time Transport Protocol,实时传输协议,一般用于多媒体数据的传输。
RTCP: RTP Control Protocol,实时传输控制协议,同RTP一起用于数据传输的监视,控制功能。
RTP/RTCP相对于底层传输层,和RTSP、SIP等上层协议一起可以实现视频会议,视频直播等应用。RTP位于传输层(通常是UDP)之上,应用程序之下,实时语音、视频数据经过模数转换和压缩编码处理后,先送给RTP封装成为RTP数据单元,RTP数据单元被封装为UDP数据报,然后再向下递交给IP封装为IP数据包。这么说RTP是没有保证传输成功的。那怎么保证呢?就要用到RTCP。 RTCP消息含有已发送数据的丢包统计和网络拥塞等信息,服务器可以利用这些信息动态的改变传输速率。
RTSP协议是一个流媒体协议,可以实现直播和点播形式的音频与视频流的播放。RTSP协议定义了多种服务器-客户端之间交互的接口,主要有OPTIONS,DESCRIBE,SETUP,PLAY,TEARDOWN,RECORD,ANNOUNCE。RTSP并不包括具体媒体数据的传输,媒体数据一般由RTP与RTCP协议来实现,并可以通过TCP或UDP两种底层传输方式进行。
播放RTSP流时,可通过客户端来指定拉流方式为UDP还是TCP。两者分别建立了几条socket连接呢?如下图1和图2所示
图1 RTSP over UDP
图2 RTSP over TCP
从图2可以看出RTSP over TCP 方式时,RTSP、RTP(Video)、RTCP(Video)、RTP(Audio)、RTCP(Audio)都通过同一个TCP 连接来传输。那么如何区分RTSP、RTP(Video)、RTCP(Video)、RTP(Audio)、RTCP(Audio) ?做法是对于RTP和RTCP包,在TCP和RTP(RTCP)数据之间增加一层RTSP Interleaved Frame,如图3所示。
图3 RTSP Interleaved Frame
下面以实例说明RTSP over UDP与RTSP over TCP的区别。采用vlc.exe作为RTSP 客户端,海康视频设备作为RTSP服务端。vlc.exe中可以设置流传输方式是RTSP over UDP 还是RTSP over TCP,设置路径为【工具】-【首选项】-【输入/编解码器】,如图4所示。
图4 vlc设置流传输方式
1、RTSP over UDP
接下来对每一条消息详细分析。
- OPTION消息,是得到服务器提供的可用方法。
客户端发送的OPTION消息:
服务端对OPTION消息的回复:
- DESCRIBE消息,目的是为了得到会话描述信息(SDP)。
客户端发送DESCRIBE消息:
服务端回复DESCRIBE消息:
客户端发送带鉴权的DESCRIBE消息:
服务端回复200OK并携带SDP信息:
- SETUP消息,建立会话,并确定传输模式。
客户端发送SETUP消息:
服务端对SETUP回复200OK消息:
- PLAY消息,开始播放。
客户端发送PLAY消息:
服务端对SETUP回复200OK消息:
- 媒体数据传输
- TEARDOWN消息,停止播放。
客户端发送TEARDOWN消息:
服务端对TEARDOWN回复200OK消息:
2、RTSP over TCP
上面已经详细描述了RTSP over UDP的各个消息,现针对RTSP over TCP,只介绍与RTSP over UDP不同的地方。
不同点1:SETUP消息
不同点2:媒体数据传输
上文详细描述了RTSP over UDP与RTSP over TCP实现上的区别,至于项目中选择RTSP over UDP还是RTSP over TCP,一般由项目中的对接协议规定,当然也存在我们自行选择RTSP over UDP或者RTSP over TCP的情况,此时我们需要知道这两者的优缺点,根据实际情况选择。
RTSP over UDP优点:码流通过UDP发送,一个UDP包里有且仅有一个RTP包,不需要Interleaved Frame,封包和解包相对简单些;数据流收发快速,无阻塞。
RTSP over UDP缺点:需要额外建立socket,用于RTP和RTCP传输;不可靠传输,可能丢包。
RTSP over TCP优点:不需要另外建立音视频传输的socket,直接使用RTSP的socket,节省资源开支;提供可靠的流传输。
RTSP over TCP缺点:由于RTSP、RTP、RTCP交织,封包和解包的过程相对复杂些;TCP是可靠的传输协议,但正是因为如此,会导致在实时流媒体中的延时。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)