RTCP 包中的 NTP 时间

别来无恙 提交于 2019-12-26 12:21:04

RTP/RTCP的时间同步机制

转自:http://blog.csdn.net/leesphone/article/details/5571972

 

RTP支持传送不同codec的steaming,不同codec的clock rate的也不一样,不同的media之间需要依靠RTCP进行同步。这里简单介绍一下他们的机制。

在每个RTCP SR包中对应有一个RTP时间和一个NTP时间,它表达的意思很明确,那就是这个RTP时间对应的绝对时间, 不同media的RTP时间尽管不同,但可以通过NTP时间映射到同一个时间轴上,从而实现同步。

如下图所示,RTP session 1 send H264 使用90,000HZ,而RTP session 2 send G.711 使用8,000HZ:

 

最近遇到进行视频流播放时间戳的匹配问题。学到了一些新方法,记录一下。

运行播放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.csdn.net/ccskyer/article/details/26478209

32位的相对时间戳和RTP包中的时间戳是一样的,没有任何区别。
————————————————
版权声明:本文为CSDN博主「hanxiucaolss」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hanxiucaolss/article/details/89185052

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!