首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用RTP时间和RTCP的NTP时间计算RTP数据包的时延

问如何利用RTP时间和RTCP的NTP时间计算RTP数据包的时延
EN

Stack Overflow用户
提问于 2022-02-28 14:43:50
回答 1查看 646关注 0票数 0

我正在使用webrtc从浏览器发送一个视频流到gstreamer。在gstreamer中,我可以从RTCP SR数据包中得到数据包的RTP时间和NTP时间。在接收方,我要计算自发送方创建该数据包以来所用的时间。

我目前正在计算延迟

延迟=数据包的发送时间--数据包的接收时间

(所有客户端都没有相同的NTP时间)

时差=(接收方的NTP -发送方的Ntp )

我将每个RTP数据包的RTP时间转换为NTP值。

90000是时钟率。

发送数据包的时间=(RTP数据包中的RTP时间)- RTCP数据包中的RTP时间)/90000 )* 1000000000 + NTP (将值转换为ns)

时延=(接收方NTP,ns -时间差)-以ns为单位的数据包发送时间(以NTP值计)

延迟显示在本地网络中大约12046392纳米秒,我不认为它是正确的,因为我在计算中做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 15:59:15

RTCP SR可以帮助将RTP (基于样本时钟的相对)时间戳映射到NTP (全局绝对墙时钟)时间戳。

不清楚“发件人.计算自该数据包在发送方创建以来所经过的时间”到底是什么意思。

如果您对计算两个RTP时间戳之间的时间差(以秒为单位)感兴趣,则需要知道产生它们的媒体/采样时钟速率。您可以通过与RTCP SR NTP时间戳相关联来获得此时钟速率,但您至少需要其中两个时间戳。

如果您想知道发送方创建RTCP SR所需的时间,只需计算当前时间与接收到的NTP时间戳之间的差异。RTCP SR时间戳实际上是创建数据包的当前时间。

RTP时间戳附加在RTCP SR数据包内的NTP 1上,是内插的当前媒体/样本时钟时间。通过这种关系,可以计算每个RTP时间戳的绝对壁时间,但至少不知道媒体时钟速率(e.b )。通过从RTCP数据包或从某个媒体头读取它,因为播放机显然需要知道媒体时钟速率以获得正确的播放速度)。

TL;DR:无法计算,因为缺少关键的信息。

编辑:你的计算在我看来不错。我假设一个包的RTP数据包含多个媒体样本。RTP时间戳引用数据包中第一个示例的第一个字节的时间。因此,数据包离开发送方的时间应该接近RTP_to_NTP_timestamp_in_seconds + ( number_of_samples_in_packet / clock )。我想一个包中的媒体数据加起来可能是几毫秒。也许number_of_samples_in_packet / clock大约是12毫秒?我想两个RTP包之间的时间也接近12 ms。

Edit2:来自RFC4587:If a video image occupies more than one packet, the timestamp SHALL be the same on all of those packets.,这也会影响您的计算。但应该是次要的,我想。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71296697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档