Skip to main content

13. RTP Profiles and Payload Format Specifications (RTP 配置文件和有效载荷格式规范)

特定应用程序的完整 RTP 规范需要一个或多个此处描述的两种类型的配套文档: 配置文件 (profiles) 和有效载荷格式规范 (payload format specifications)。

13.1 RTP 配置文件 (RTP Profiles)

RTP 可用于具有不同要求的各种应用程序。通过允许在主协议规范中进行多项选择, 然后在单独的配置文件文档中为特定环境和应用程序类别选择适当的选择或定义扩展, 可以提供适应这些要求的灵活性。

通常, 应用程序将在特定 RTP 会话中仅在一个配置文件下操作, 因此 RTP 协议本身没有明确指示正在使用哪个配置文件。音频和视频应用程序的配置文件可以在配套 RFC 3551 中找到。配置文件通常标题为 "RTP Profile for ..."。

13.2 有效载荷格式规范 (Payload Format Specifications)

第二种配套文档类型是有效载荷格式规范, 它定义了如何在 RTP 中携带特定类型的有效载荷数据, 例如 H.261 编码的视频。这些文档通常标题为 "RTP Payload Format for XYZ Audio/Video Encoding"。

有效载荷格式可能在多个配置文件下有用, 因此可以独立于任何特定配置文件进行定义。然后, 配置文件文档负责将该格式的默认映射分配给有效载荷类型值 (如果需要)。

13.3 配置文件中定义的项目

在本规范中, 已确定以下项目可在配置文件中定义, 但此列表并不详尽:

RTP 数据头 (RTP data header)

RTP 数据头中包含标记位和有效载荷类型字段的八位字节可以由配置文件重新定义以适应不同的要求, 例如更多或更少的标记位 (Section 5.3)。

有效载荷类型 (Payload types)

假设包含有效载荷类型字段, 配置文件通常会定义一组有效载荷格式 (例如媒体编码) 以及这些格式到有效载荷类型值的默认静态映射。某些有效载荷格式可以通过引用单独的有效载荷格式规范来定义。对于定义的每个有效载荷类型, 配置文件必须指定要使用的 RTP 时间戳时钟速率 (Section 5.1)。

RTP 数据头添加 (RTP data header additions)

如果配置文件的应用程序类别需要独立于有效载荷类型的某些附加功能, 则可以在固定 RTP 数据头之后附加附加字段 (Section 5.3)。

RTP 数据头扩展 (RTP data header extensions)

如果要允许在配置文件下使用该机制进行特定于实现的扩展, 则必须定义 RTP 数据头扩展结构的前 16 位的内容 (Section 5.3.1)。

RTCP 数据包类型 (RTCP packet types)

可以定义新的应用类特定 RTCP 数据包类型并向 IANA 注册。

RTCP 报告间隔 (RTCP report interval)

配置文件应指定将使用 Section 6.2 中建议的用于计算 RTCP 报告间隔的常量值。这些常量包括 RTCP 会话带宽的分数、最小报告间隔以及发送者和接收者之间的带宽分配。如果配置文件已被证明可以以可扩展的方式工作, 则可以指定替代值。

SR/RR 扩展 (SR/RR extension)

如果有应定期报告的有关发送者或接收者的附加信息, 则可以为 RTCP SR 和 RR 数据包定义扩展部分 (Section 6.4.3)。

SDES 使用 (SDES use)

配置文件可以指定要传输或完全排除的 RTCP SDES 项的相对优先级 (Section 6.3.9); CNAME 项的替代语法或语义 (Section 6.5.1); LOC 项的格式 (Section 6.5.5); NOTE 项的语义和使用 (Section 6.5.7); 或要向 IANA 注册的新 SDES 项类型。

安全性 (Security)

配置文件可以指定应用程序应提供哪些安全服务和算法, 并可以提供有关其适当使用的指导 (Section 9)。

字符串到密钥映射 (String-to-key mapping)

配置文件可以指定如何将用户提供的密码或口令映射到加密密钥。

拥塞控制 (Congestion)

配置文件应指定适合该配置文件的拥塞控制行为。

底层协议 (Underlying protocol)

可能需要使用特定的底层网络或传输层协议来携带 RTP 数据包。

传输映射 (Transport mapping)

可以指定 RTP 和 RTCP 到传输级地址 (例如 UDP 端口) 的映射, 而不是 Section 11 中定义的标准映射。

封装 (Encapsulation)

可以定义 RTP 数据包的封装, 以允许在一个较低层数据包中携带多个 RTP 数据包, 或在尚未提供帧的底层协议上提供帧 (Section 11)。

13.4 配置文件的互操作性

不希望每个应用程序都需要新的配置文件。在一个应用程序类别中, 最好扩展现有配置文件而不是制作新配置文件, 以便促进应用程序之间的互操作, 因为每个应用程序通常只在一个配置文件下运行。

简单的扩展 (例如定义附加有效载荷类型值或 RTCP 数据包类型) 可以通过向 IANA 注册它们并在配置文件的附录或有效载荷格式规范中发布其描述来完成。