web的时间戳与NTP

1、滴答滴答滴 :(就是平台相关的计算ns时间,记住是相对时间哦)

  计算开机时间: = 系统滴答数 * 转换系数分子 / 转换系数分母  

    [https://blog.csdn.net/yanglei3kyou/article/details/86679177](https://blog.csdn.net/yanglei3kyou/article/details/86679177)   具体平台估计自己实现一套。

2、webrtc 开机计算一次

  当前时间和系统开机时间的偏移值: 
int64_t NtpOffsetMsCalledOnce() {
  constexpr int64_t kNtpJan1970Sec = 2208988800;
  int64_t clock_time = rtc::TimeMillis();
  int64_t utc_time = rtc::TimeUTCMillis();
  return utc_time - clock_time + kNtpJan1970Sec * rtc::kNumMillisecsPerSec;
}

NTP矫正时间加上啦

计算一个开机的偏移量,这个相当于一个开机时间点时间 +70 年时间 kNtpJan1970Sec 减去 开机到目前运行毫秒ElaplseTimeval(ms)
目的获取 一个时间点 的一个状态: 开机那个点NTP时间 - 系统开机时间(ms)

int64_t NtpOffsetMs() {
  // Calculate the offset once.
  static int64_t ntp_offset_ms = NtpOffsetMsCalledOnce();
  return ntp_offset_ms;
}
    计算一次就好,因为这个开机点以后要用。

3、什么是NTP时间: 我们理解没有错。就是1900 以后的时间,64位标识的时间。

    (1)高32位是秒,
    (2)低32位是小于1s的值(放大精度方式存)
image.png

转换参考:https://blog.csdn.net/weixin_45873923/article/details/120119622?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.essearch_pc_relevant

4、使用:

clock_→TimeInMilliseconds() + NtpOffsetMs() 这个时间就是 据1900到现在的ms时间,转换ntp即可。
webrtc 代码 音频计算绝对时间有问题,视频是好的。

image.png

改为:


image.png

所以使用时候:传递都是就是NTP的时间,不用改应该也是可以。


image.png

你可能感兴趣的:(web的时间戳与NTP)