iOS开发时间戳相关问题(NSDate)

最近做项目,需要计算视频包的时延。这里需要在RTP头部传输时间戳。
RTP包头的第2个32Bit即为RTP包的时间戳,Time Stamp ,占32位;
项目需要计算每一帧的延时,32位
sizeof(Byte)是8位,所以只能放4个。
本项目采用大端模式,即高位在前,低位在后。
所以能存的最大的数是2的31次方-1,10进制数为2147483647。
以毫秒为单位的时间戳十进制要有13位,存不下。以秒为单位的,不够精确,所以我想着把时间戳-1636560000000(2021年11月11日0点0分0秒)然后存下来。
*1000是为了使时间戳精确到毫秒。

 -(void)setStamp{
    
    
    long Stamp2 = [[NSDate date] timeIntervalSince1970]*1000;
    long Stamp = Stamp2-1636560000000;
    Byte valueBytes[4];
    Bytes[0]=(Byte)(Stamp/65536/256);
    Bytes[1]=(Byte)((Stamp/65536)%256);
    Bytes[2]=(Byte)((Stamp/256)%256);
    Bytes[3]=(Byte)(Stamp%256);
    memcpy(_dataV+4*sizeof(Byte), Bytes, 4);
  
}
-(int)getStamp{
    
    
    return (_dataV[4] & 0xFF) * 0x1000000 +
    (_dataV[5] & 0xFF) * 0x10000 +
    (_dataV[6] & 0xFF) * 0x100 +
    (_dataV[7] & 0xFF);
}

因为项目要求就是算差值,这样就可以计算了。
如果想知道发送视频帧的时间,只需要➕1636560000000就好了。

猜你喜欢

转载自blog.csdn.net/weixin_43906701/article/details/121290311