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的值(放大精度方式存)
4、使用:
clock_→TimeInMilliseconds() + NtpOffsetMs() 这个时间就是 据1900到现在的ms时间,转换ntp即可。
webrtc 代码 音频计算绝对时间有问题,视频是好的。
改为:
所以使用时候:传递都是就是NTP的时间,不用改应该也是可以。