最近在看webrtc中的video jitter buffer,里面有部分对时间单位的统一的设计.
以linux为例,系统函数获取的时间有2种:
1.从系统开始运行(可以理解到开机)到现在所经历的时间,时间精度到纳秒.
struct timespec ts;//包含有秒和纳秒的结构体
clock_gettime(CLOCK_MONOTONIC,&ts); //从系统开始运行到现在的时间
2.获取当前电脑距离格林尼治时间的相对时间,时间单位精确到微秒.
比如我们当前电脑的时间就是:
在linux下是通过系统函数 ,来获取相对时间的.
struct timeval tv;
gettimeofday(&tv,NULL);
(如果我们手动调整了我们电脑的时间,那么对应的我们获取到的时间也就会发生改变!)
在网络中,时间是没有统一的标准的,比如时区不一样,北京时间21:58对应的是美国时间08:58,就算是同一个时区的,电脑上的时间显示也会不一样,有的是人为调整了时间.
接下来,我们来研究一下:webrtc是如何统一网络时间的!!!
在webrtc中,我们是用 TickTime类来表示当前时间,该类的定义位于webrtc/system_wrappers/interface/tick_util.h头文件中.
采用的是系统已经运行的时间,时间单位精确到纳秒.