协议篇---RTP & RTCP & RTSP

一、概述

从事或想要从事音视频相关工作的你,或多或少都听过RTP,RTCP,RTMP等等协议的名称,本篇将给大家介绍下流媒体相关的网络协议,话不多说,开始今天的文章。

如下罗列了部分流媒体相关协议,稍后的文章中我们详细介绍这些协议:

◆ RTP(Real-time Transport Protocol),实时传输协议。

◆ RTCP(Real-time Transport Control Protocol),实时传输控制协议。

◆ RTSP(Real Time Streaming Protocol),实时流协议。

◆ RTMP(Real Time Messaging Protocol),实时消息传输协议。

◆ HLS(HTTP Live Streaming),苹果公司提出的基于HTTP的流媒体网络传输协议。

◆ HTTP-FLV,将RTMP等负载信息携带在HTTP协议之上的码流传输协议。

二、(RTP & RTCP & RTSP)

为什么把 RTP、RPCP、RTSP放在一起介绍呢,因为RTP、RTCP这两个协议一般是成对出现,而他们与RTSP协同工作。本篇我们先介绍下这三篇协议。

1.RTP、RTCP、RTSP的关系

RTP负责多媒体的传输,RTCP配合RTP做控制和流量统计, RTSP负责建立和控制会话,下图更直观的的描述了三者的关系:

 

2.RFC3550

        RFC3550协议定义RTP和RTCP协议的最基本内容,包括报文格式及头部扩展、发送和接收规则、RTP Mixer和Translator、协议安全等内容。详细内容都在协议中定义,这里只简述RTP和RTCP报文的基本格式。

        官网:RFC 3550 - RTP: A Transport Protocol for Real-Time Applications

3.RTP 实时传输协议:

◆ RTP建立在UDP协议上;

◆ RTP不确保网络底层的可靠性,不提供按时发送机制或其他服务质量(QoS)保证;

◆ RTP不保证传送或防止无序传送;

◆ RTP提供时间标志,序列号以及其他能够保证在实时数据传输时处理时间的方法;

◆ RTP报文格式如下: 

        RTP报文由固定头部、(可选)扩展头部和负载三部分组成。头部中的X域标示固定头部后面是否跟随扩展头部,PT域定义负载类型。各部分的详细定义请参考RFC3550。

 

V:RTP协议的版本号,占2位,当前协议版本号为2

P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。

X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头

CC:CSRC计数器,占4位,指示CSRC 标识符的个数

M:标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

PT:有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像等,在流媒体中大部分是用来区分音频流和视频流的,这样便于客户端进行解析。

sequence number:序列号,16比特,发送方在每发送完一个RTP包后就将该域的值增加1,接收方可以由该域检测包的丢失及恢复包序列。序列号的初始值是随机的。

timestamp:时间戳,32比特,记录了该包中数据的第一个字节的采样时刻。在一次会话开始时,时间戳初始化成一个初始值。即使在没有信号发送时,时间戳的数值也要随时间而不断地增加(时间在流逝嘛)。时间戳是去除抖动和实现同步不可缺少的。

SSRC:同步源标识符,32比特,同步源就是指RTP包流的来源。在同一个RTP会话中不能有两个相同的SSRC值。该标识符是随机选取的 RFC1889推荐了MD5随机算法。

CSRC:贡献源列表,0~15项,每项32比特,用来标志对一个RTP混合器产生的新包有贡献的所有RTP包的源。由混合器将这些有贡献的SSRC标识符插入表中。SSRC标识符都被列出来,以便接收端能正确指出交谈双方的身份

4.RTCP(Real-time Transport Control Protocol),实时传输控制协议:

◆ RTP和RTCP是一起使用的;

◆ RTCP的主要功能是为RTP所提供的服务质量提供反馈,RTCP收集媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,时延抖动,单向和双向网络延迟等等;

◆ 网络应用程序可以利用RTCP所提供的信息试图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器;

◆ RTCP本身不提供数据加密或身份认证,其伴生协议SRTCP(安全实时传输控制协议)则可用于此类用途;

◆ RTCP报文格式如下:

        RFC3550根据RTCP报文类型定义SR、RR、SDES、BYE和APP五种报文格式。下图显示了SR(Sender Report)的报文格式,包括固定头部、发送端信息和报告块三部分组成:发送端信息携带NTP时间同步和数据发送统计等内容,报告块则包含发送端接收到数据的统计信息。关于RTCP报文格式的详细信息,请继续参考RFC3550 

 5.RTSP(Real Time Streaming Protocol),实时流协议:

◆ RTSP是一种双向实时数据传输协议;

◆ RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输;

◆ RTSP主要用来控制具有实时特性的数据发送,比如:对流媒体提供诸如播放、暂停、快进等操作;

◆ RTSP负责定义具体的控制消息、操作方法、状态码等,但它本身并不传输数据,而是必须依赖于下层传输协议所提供的某些服务;

参考

学习RFC3550:RTP/RTCP实时传输协议基础知识 - 程序员大本营

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值