跳到主要内容

5.1. RTP Header Usage (RTP 头的使用)

5.1. RTP Header Usage (RTP 头的使用)

RTP 头的格式在 RFC 3550 [5] 中规定, 为方便起见在图 1 中重印。本负载格式以与该规范一致的方式使用头中的各字段。

当每个 RTP 包封装一个 NAL 单元 (Network Abstraction Layer Unit, NAL unit) 时, 建议 (RECOMMENDED) 的 RTP 负载格式在第 5.6 节规定。聚合包与分片单元的 RTP 负载 (以及部分 RTP 头比特的设置) 分别在第 5.7.2 节与第 5.8 节规定。

    0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

图 1. 依据 RFC 3550 的 RTP 头

按本 RTP 负载格式应设置的 RTP 头信息如下:

标记位 M (Marker bit, M): 1 比特

对由 RTP 时间戳所指示的接入单元 (access unit) 的最后一个包置位, 与视频格式中 M 位的常规用法一致, 以便高效地进行播放缓冲处理。对聚合包 (STAP 与 MTAP), RTP 头中的标记位必须 (MUST) 设为: 若聚合包中最后一个 NAL 单元单独承载于各自的 RTP 包中时其标记位应有的值。解码器可以 (MAY) 将该位用作接入单元最后一个包的早期提示, 但绝对不能 (MUST NOT) 依赖该性质。

说明性注: 与承载多个 NAL 单元的聚合包相关联的 M 位只有一个。因此, 若网关将聚合包重新分片为多个包, 则无法可靠地为这些包设置 M 位。

负载类型 PT (Payload type, PT): 7 比特

为本新包格式分配 RTP 负载类型不在本文档范围内, 此处不予规定。负载类型的分配必须通过所用配置文件或以动态方式完成。

序号 SN (Sequence number, SN): 16 比特

按 RFC 3550 设置并使用。在单 NAL 单元与非交错分包模式下, 序号用于确定 NAL 单元的解码顺序。

时间戳 Timestamp: 32 比特

RTP 时间戳设为内容的采样时间戳。必须 (MUST) 使用 90 kHz 时钟频率。

若 NAL 单元自身无时序属性 (例如参数集与 SEI NAL 单元), 则 RTP 时间戳设为该 NAL 单元所在接入单元之主编码图像的 RTP 时间戳, 依据 [1] 第 7.4.1.2 节。

MTAP 的 RTP 时间戳设置在第 5.7.2 节定义。

接收端应该 (SHOULD) 忽略仅含单一显示时间戳的接入单元中所含图像时序 SEI 消息; 而应使用 RTP 时间戳来同步显示过程。

若一个接入单元在图像时序 SEI 消息中携带多个显示时间戳, 则 SEI 消息中的信息应相对于 RTP 时间戳处理: 最早的事件发生在 RTP 时间戳所给时刻, 其后事件按 SEI 消息中所载图像时间值之差依次更晚。

设 tSEI1, tSEI2, ..., tSEIn 为某接入单元 SEI 消息所携带的显示时间戳, 其中 tSEI1 为所有这些时间戳中最早者。设 tmadjst() 为将 SEI 消息时间标度调整到 90 kHz 时间标度的函数。设 TS 为 RTP 时间戳。则与 tSEI1 相关联的事件的显示时间为 TS。与 tSEIx (x 属于 [2..n]) 相关联的事件的显示时间为 TS + tmadjst(tSEIx - tSEI1)。

说明性注: 将编码帧按场显示常见于所谓 3:2 pulldown 操作, 其中由编码帧组成的影片内容在隔行扫描显示器上显示。图像时序 SEI 消息可为同一编码图像携带多个时间戳, 从而可精确控制 3:2 pulldown 过程。该机制是必要的, 因为每个编码帧在 RTP 时间戳中只能传达一个时间戳。