数据包中的 RTP 时间戳与 RTCP SR 数据包

RTP timestamp in data packets vs RTCP SR packets

我正在尝试了解 RTP 数据包中出现的 RTP 时间戳与 RTCP 发送方报告 (SR) 数据包中使用的时间戳之间的区别。

对于数据包中的 RTP 时间戳,我已经确定:

对于 RTCP 发送方报告数据包中的 RTP 时间戳,我最初认为它们只是数据包当前 RTP 时间戳的快照,结合 NTP 时间戳(通常是挂钟)可用于计算进一步传入的 RTP 数据包的挂钟时间,这也是我从 this analysis on the subject.

中了解到的

然而 RFC 3550 Section 6.4.1 的一句话让我对这个假设感到疑惑:

Note that in most cases this timestamp will not be equal to the RTP timestamp in any adjacent data packet.

这破坏了我的假设,因为我假设 SR 数据包将包含一个 RTP 时间戳,该时间戳在同一源刚刚发送的数据包中找到。不幸的是,接下来的句子对我来说几乎毫无意义(也许这是一个英语语言障碍,但对我来说这听起来像是没有帮助的废话)

Rather, it MUST be calculated from the corresponding NTP timestamp using the relationship between the RTP timestamp counter and real time as maintained by periodically checking the wallclock time at a sampling instant.

你能为我解释一下如何计算 RTCP SR 数据包中的 RTP 时间戳吗?

发送RTCP报告数据包的过程与发送相关RTP数据包流是分开的。我的意思是它们通常不会同时发送。因此,发送的 RTP 数据包和 RTCP 报告数据包通常包含不同的 RTP 时间戳值。

如您所知,NTP(挂钟)时间和 RTP 时间戳之间存在关系。由于 RTCP 报告数据包同时包含 NTP 时间戳和 RTP 时间戳,因此这些数据包可用于了解这些值在 RTCP 数据包发送方侧的关系。从同一发送者接收到的任何 RTP 数据包都将包含它们自己的(通常是不同的)RTP 时间戳。使用从接收到的 RTCP 数据包中获悉的关系,此 RTP 时间戳可用于计算发送 RTP 数据包时的挂钟时间。

的答案也可能对您有所帮助。