流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析

0.前言

流媒体服务器做音视频媒体传输主要就两件事:媒体回话协商,媒体数据传输;下面这几种协议就围绕着这两个需求而产生。

1.rtp协议

rtp的全称是实时传输协议RTP(Real-time Transport Protocol),是应用层的一个协议,主要用来做音视频数据传输,一般基于udp协议之上,也支持组播,当然基于tcp也是可以的。

用rtp传输音视频数据的一般做法是将音视频数据前面加上rtp头封装成一个个的rtp包,接收端根据接收到的数据在组成按帧标记组成音视频数据,里面可以是h264或者h265的裸码流打包,也是是ps格式或者ts格式封装的数据包,也可以是具有私有头的第三方封包。

rtp主要说的就是rtp头,里面比较重要的字段就是sn,一般在一帧数据被拆成多个rtp包,sn就是拆包的顺序,从1-32767循环叠加,在一个帧的最后一包会被打上mark标记,以此来区分一帧与另外一帧,用于接收方组成一帧数据包,多路不同的音视频媒体流使用ssrc源标记区分。

2.rtcp协议

一般提到rtp总会提到rtcp协议,它们是配套的一套协议,国内交通部也有的只要rtp协议,不要rtcp协议的。

RTCP的全称是实时传输控制协议(Real-time Control Protocol),rtp虽然可以传输音视频数据,但是却不能携带其他的信息,比如当前网络的丢包,延迟,抖动,这些都是保证音视频数据传输质量的重要信息。简单的说来就是rtp协议负责传输音视频数据,rtcp协议配套传输当前传输的控制信息。

rtcp主要说的就是两个东西,sr报告和rr报告,sr报告叫发送报告,随着发出的rtp包发出,主要告诉接收端,当前的发送情况;rr报告叫做接收报告,在接收到一个数据包后发出,回传到发送端,主要告诉发送端当前的接收情况;当然还有其他的媒体描述信息,应用程序消息等。

rtp另一个支持的特性就是端口复用,简单的说就是多路音视频传输使用一个端口接收,多路不同的媒体流使用一个叫做复用id的字段来区分,每一路的muxid不一样。

3.rtsp协议

我们还知道有个叫rtsp的东西,rtsp全称叫实时流协议,RTSP(Real Time Streaming Protocol),rtp主要是做音视频媒体数据的传输,rtcp主要做传输音视频媒体数据的控制信息,rtsp则是通过会话协商传输的音视频媒体信息,比如协商两边的发送端口,接收端口,音视频码流信息,组帧sdp等。

4.sdp协议

好吧,又来了一个sdp协议,准确的说它不是一个协议,而是一个描述信息的格式,作为其他协议协商信息的载体,比如sip,rtsp,私有协商协议等。特别是sip协议的offer-answer模型,完全通过sdp作为回话信息的载体。sdp协议的全称是回话描述协议,SDP(Session Description Protocol),从字面意思看就知道是描述媒体回话协商的,是一个如http一样的文本协议,回话交互时通过传递一个叫sdp的文本,互相协商收发两端的媒体信息。

5.sip协议

上面又提到了sip协议,这里顺带说一下,sip协议的全称是会话初始协议(Session Initiation Protocol)是一种信令协议,最早是用于ip电话交互的,也是一种回话协商协议,不过提供更好的灵活性与交互性,简单的交互就是invite,200ok,ack三步交互,最重要的就是sip的offer-answer模型,国内的gb28181标准就引用了sip协议作为其回话协商的标准协议。

总结:
RTSP是TCP/IP协议体系中的一个应用层协议。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。

RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。

RTCP使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人。其主要功能是就RTP正在提供的服务质量做出反馈。
流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析_第1张图片
RTSP协议:负责服务器与客户端之间的请求与响应
RTP协议:负责传输媒体数据
RTCP协议:在RTP传输过程中提供传输信息

rtsp承载与rtp和rtcp之上,rtsp并不会发送媒体数据,而是使用rtp协议传输。rtp并没有规定发送方式,可以选择udp发送或者tcp发送。
RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。

https://www.zhihu.com/question/23391466/answer/2382845400?utm_id=0

你可能感兴趣的:(视频处理,服务器,网络,运维)