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插件就可以直接播放
区别
-
RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制、同步 -
RTSP VS RTMP
基于TS的传输协议栈
-
媒体流传输和接收通道
- 走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场景。 -
媒体流会话控制通道 基于TCP的RTSP负责信令控制 -
总结起来:1)RTSP传输一般使用UDP,信令交互采用TCP,协议基于TCP;2)RTP协议基于UDP
|