RTSP、RTP、RTCP、RTMP区别

1 RTSP

实时流协议(Real Time Streaming Protocol,RTSP)与HTTP同等级的应用层网络协议(基于TCP,传输&控制协议)

RTSP消息分为两大类,一类是请求消息(request),一类是回应消息(ressponse)

RTSP信令交互采用TCP方式,在应用层交互开始前建立一个TCP(三次握手四次挥手) socket(套接字)用来作信令交互,叫做TCPSockfd( 套接字描述符)

常见信令:

1.1 OPTIONS:

功能:请求用于返回服务端支持的 RTSP 命令列表

1.2 DESCRIBE:

功能:用于请求指定的媒体流的SDP描述信息

在DESCRIBE之后,我们建立一个UDP的socket,用于RTP包的传输,UDPSockfd bind到一个端口,比如:26958

1.3 SETUP:

功能: 命令用于配置数据交付的方法

SETUP之后有必要做一个natdetect:私有信令,这个信令是用UDPSockfd发的,收也是UDPSockfd来收,这样就做了一个nat穿越
NAT_DETECT

1.4 PLAY:

功能:请求流

1.5 PAUSE:

功能:暂停

1.6 GET_PARAMETER:

功能:心跳作用

1.7 ANNOUNCE:

也是用UDPSockfd来收的,用来处理边界值

2 RTP

实时传输协议(Real-time Transport Protocol)一般不作为单独应用层协议处理

RTP传输音频/视频数据,如果是PLAY,Server发送到Client端,如果是RECORD,可以由Client发送到Server

整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议(即RTCP)

3 RTCP

实时传输控制协议(Real-time Transport Control Protocol)是实时传输协议(RTP)的一个姐妹协议

RTCP包括Sender Report和Receiver Report,用来进行音频/视频的同步以及其他用途,是一种控制协议

4 RTMP

实时消息传输协议(Real Time Message Protocol)基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种

RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信

用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题,优势在于低延迟,稳定性高,支持所有摄像头格式,浏览器加载 flash插件就可以直接播放

区别

  1. RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制、同步

  2. RTSP VS RTMP

    • RTSP虽然实时性最好,但是实现复杂,适合视频聊天和视频监控;

    • RTMP强在浏览器支持好,加载flash插件后就能直接播放,所以非常火,相反在浏览器里播放rtsp就很困难了。

基于TS的传输协议栈

在这里插入图片描述

  1. 媒体流传输和接收通道

    • 走UDP协议:UDP负责传输单播中的MP2T/UDP、MP2T/RTP/UDP和组播流;
    • 走TCP协议:RTSP(TCP)负责传输MP2T/TCP、MP2T/RTP/TCP单播流;
    • 注:RTP协议为可选性支持
      rtsp可基于rtp之上,比如常见的视频流传输过程:视频压缩文件->rtp打包->基于udp的rtsp网络传输;也可以不做成rtp包,直接基于udp传送,如视频压缩文件->基于udp的rtsp网络传输。
      RTP传输是建立在 UDP 协议上的。
      RTSP一般使用udp作为传输层,适合IPTV场景。
  2. 媒体流会话控制通道
    基于TCP的RTSP负责信令控制

  3. 总结起来:1)RTSP传输一般使用UDP,信令交互采用TCP,协议基于TCP;2)RTP协议基于UDP

你可能感兴趣的:(网络通信,RTSP,RTCP,RTMP,RTP)