前言:
RTP包整体的理解,可以查看博主文章RTP协议解析:https://blog.csdn.net/u012478275/article/details/93197104;本文主要对RTP Header中的时间戳(Timestamp)进行讲解;
一、基本概念:
1、时间戳单位:时间戳计算的单位不是秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是 为了是时间戳单位更为精准。比如说一个音频的采样频率为8000Hz,那么我们可以把时间戳单位设为1 / 8000;
2、时间戳增量:相邻两个RTP包之间的时间差(以时间 戳单位为基准);
3、 采样频率: 每秒钟抽取样本的次数,例如音频的采样率一般为8000Hz;
4、帧率: 每秒传输或者显示帧数,例如25f/s;
二、RTP时间戳的定义:
RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位;时间戳反映了RTP分组中的数据的第一个字节的采样时刻。在一次会话开始时的时间戳初值也是随机选择的。即使是没有信号发送时,时间戳的数值也要随时间不 断的增加。接收端使用时间戳可准确知道应当在什么时间还原哪一个数据块,从而消除传输中的抖动。时间戳还可用来使视频应用中声音和图像同步; 在RTP协议中并没有规定时间戳的粒度,这取决于有效载荷的类型。因此RTP的时间戳又称为媒体时间戳,以强调这种时间戳的粒度取决于信号的类型。例如, 对于8kHz采样的话