RTP 实时传输协议

音视频数据传输,先将原始数据经过编码压缩后,将码流打包成一个个RTP包,再将码流传输到接收端。

打包的作用

接收端要正确地使用这些音视频编码数据,不仅仅需要原始的数据码流,还需要一些额外的信息当前编码标准,H264 H65等

按照什么速度播放视频?

RTP告知接收端一些必要的信息。

网络带宽预测和拥塞控制。

RTP传输的协议UDP,不具有丢包重传和拥塞控制,需要另外实现,要用到RTCP协议

RTCP协议

实时传输控制协议,辅助RTP协议使用。

其报文有多种,发送端报告(SR),接收端报告(RR),RTP反馈报告(RTPFB)等。

每一种报告的有效负荷都是不同的,通过这些报告在接收端和发送端传递当前统计的RTP包的传输情况。使用这些信息来做丢包重传以及预测带宽。

RTCP协议只是用来传递RTP包的传输统计信息,本身不具有丢包重传和带宽预测的功能,而这些功能需要自己实现。

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

将H264 RTP打包

1、单NALU封包方式:一个NALU打一个包

适合单个RTP包小于1500字节的时候,P帧和BZ帧编码比较小,还有SPS,PPS适合采用这种方式。

2、组合封包方式:多个NALU打一个包

3、分片封包方式:一个NALU分开在连续多个RTP包中。大的I帧,P帧,B帧使用分片方式