【发布时间】:2015-03-06 11:24:06
【问题描述】:
我正在从事一个项目,我正在尝试使用 RTP 计算两个 android 设备之间接收到的数据包的延迟。
所以我继续用 unix 时间戳在它的第 12-19 个字节中扩展 RTP 标头。
我现在已经收到数据包并试图从中提取 unix 时间。但是,正如您在屏幕截图中看到的那样,我在解码过程中做错了。左边是我从数据包中解码的时间,右边是到达时间。请忽略我手角的图片。 (对于大分辨率抱歉,不知道如何在 SO 上调整图像大小。
我已将字节转换为十六进制,以便尝试调试在将字节数组转换为长字节数组时得到的巨大数字。而且我没有注意到很多线索,除了我的十六进制值中一致的“41”和我的长值中的“14”。
我目前不知道如何解决这个问题。 如何从我的数据包中提取正确的 Unix 时间(以毫秒为单位)?
我正在使用其他人的代码来生成我要放入数据包的字节,他使用此代码将 SSRC 放入标头(也是 64 位)中。
private void setLong(byte[] buffer, long n, int begin, int end) {
for (end--; end >= begin; end--) {
buffer[end] = (byte) (n % 256);
n >>= 8;
}
}
我的代码使用了上述方法:
public void setUnixTime() {
for (int i=0;i<mBufferCount;i++) {
setLong(mBuffers[i], System.currentTimeMillis(),13,20);
}
}
我也对人们以这种方式计算 RTP 延迟的想法感兴趣(在数据包上设置 unix 时间并将该时间与到达时间进行比较)。
【问题讨论】:
-
我想问一下您是使用android RTP库还是自定义库?