4. 字节顺序, 校准和时间格式

所有整数都是以网络字节序来承载的, 零字节是第一个字节,同时零位是一个字或字段中最显著的位。 这种字节序就是所谓的“big-endian"。 这种传输顺序的详细描述在IP协议[RFC0791]。 除非另行说明, 本文档中的所有数字都是十进制数。

在没有特殊说明的情况下, RTMP中的数据都是按字节对齐的; 例如: 一个16位的字段可能在奇数字节偏移。 在标有延拓的地方, 延拓字节应该赋予零值。

RTMP中的时间戳是用一个整数来表示的, 代表相对于一个未规定的起始时间的毫秒数。 通常,每个流的时间戳都从0开始, 但这不是必须的, 只要通讯的双方用统一的起始时间就可以了。 要注意的是,跨流的时间同步(特别是不同主机之间)需要额外的机制来实现。

由于时间戳的长度只有32位, 所以只能在50天内循环(49天17小时2分钟47.296秒)。 而流是可以不断运行的,可能多年才会结束。所以RTMP应用在处理时间戳是应该使用连续的数字算法, 并且应该支持回环处理。 例如:一个应用可以假设所有相邻的时间戳间隔不超过2^31-1毫秒, 那么 10000 在 4000000000, 3000000000在4000000000之前。

时间戳增量也是以毫秒为单位的无符号整数。时间戳增量可以是24位长度也可以是32位长度。

results matching ""

    No results matching ""