RTCP 包中的 NTP 时间
最近遇到进行视频流播放时间戳的匹配问题。学到了一些新方法,记录一下。
运行播放IP camera的软件,用wireshark抓包软件,可看到RTSP数据包的传输过程。
因为抓到的数据包是用UDP传输的,需要选择特定协议进行详细解析,具体步骤为:
- 选择一行UDP数据包数据;
- 右击 -> 选择Decode As -> 针对所需端口号,选择相应的应用层协议,此处是RTSP。
这样之后就能看到详细的RTSP包数据传输过程,由下图可见。
观察RTCP的Send Report包,可以发现其包含两个时间,一个64位的绝对时间戳NTP和一个32位的相对时间戳RTP。
64 位时间戳也叫NTP时间戳,它的前32位(MSW)是从1900 年1 月1 日0 时开始到现在的以秒为单位的整数部分,
后32 位(LSW)是此时间的小数部,因此,它可以表示数据发送出去的绝对时间。
计算公式如下:
- MSW = (70LL * 365 + 17) * 24 * 60 * 60 + tv.tv_sec (s)
- LSW = (tv.tv_usec << 32) / 1000000 (232ps)
- 其中,1s=10^12ps
参考自:https://blog.****.net/ccskyer/article/details/26478209
32位的相对时间戳和RTP包中的时间戳是一样的,没有任何区别。