webrtc - WebRTC NTP 服务器
问题描述
WebRTC 在 WebRTC stats 的 ssrc recv 报告中有一个实验性googCaptureStartNtpTimeMs
统计。我相信它被定义为流在发送方开始的 NTP 时间,以毫秒为单位。
我想将我的客户端与 WebRTC 用来生成它的 NTP 时钟同步googCaptureStartNtpTimeMs
。
我一直在谷歌搜索和搜索/阅读 WebRTC 源,但找不到用于生成此统计信息的 NTP 服务器。我假设所有 NTP 服务器不可能同步,所以我需要准确地确定 WebRTC 正在使用哪个 NTP 服务器,以便我可以将我的客户端与其googCaptureStartNtpTimeMs
时间戳同步。
我看到几个选项:
pool.ntp.org
time.google.com
time1.google.com
ntp.google.com
在 WebRTC 源中搜索这些不会产生任何结果。pool.ntp.org
似乎很有希望,因为它将有助于找到一个靠近发出请求的 NTP 服务器(低延迟)。但是,如果 NTP 池与 NTP WebRTC 不同步,除非我能得到 NTP 池和 NTP WebRTC 之间的偏移量,否则它对我来说毫无用处。
我的问题归结为:
- 所有 NTP 服务器是否已标准化并相互同步?
- 如果不是,WebRTC 使用哪个 NTP 服务器生成
googCaptureStartNtpTimeMs
解决方案
googCaptureStartNtpTimeMs
与NTP服务器无关。它是在当地时钟。名称中的“Ntp”来自 RTCP SenderReport 数据包中传递时间的格式,并不意味着某些 NTP 服务器同步正在进行。
您对度量定义的理解有点偏离。这是曲目开始发送的本地(接收者)时间。
时钟同步由 WebRTC 在内部使用 RTT 估计和 RTCP SenderReport 数据包完成。请注意,要进行 RTT 估计,对等方必须发送某些内容,并且需要一些时间(音轨最多 20 秒,基于 RTCP SR 发送周期)。在所有估计值可用之前,该指标将报告 -1。
推荐阅读
- openwrt - Hue 网桥上的数据包管理器
- git - 如何包含父级.gitignore 排除的文件夹?
- php - 在一个函数中声明的数组,在嵌套函数中填充,保持空白
- c - 使用 ALSA 以 PCM 格式录制音频
- javascript - 错误:发送后设置标题 - 帮助我理解为什么?
- wordpress - 使用 Kotlin 解析 Rest Api。
- mysql - 创建显示学生花费了多少的视图
- kubernetes - Grafana 在使用 k8s 服务时无法在 kubernetes 集群上工作
- javascript - 使用节点 10 运行 gulp mocha 时出现意外的令牌功能
- android - Android如何获取Earfcn数据?