简介
在RTC3550中提供了一种可扩展RTP头的能力。定义如下图,现有的报头扩展方法允许每个RTP分组最多有一个扩展,由16位标识符和16位长度字段标识,该字段以32位指定报头扩展的长度。

这种机制有两个弊端:第一在一个RTP包中只能提供一个扩展头,第二规范并没有给出如何分配16位头扩展标识符以避免冲突的指导。
本规范通过定义一种向后兼容和可扩展的方法来在单个RTP分组中携带多个报头扩展元素,从而消除了第一个缺点。通过定义这些扩展元素来消除第二个缺点,这些扩展元素使用URLs命名,在IETF中定义一个 IANA的注册表,使用SDP方法来映射注册表和标识符之间的对应关系。
于是在RFC-5285对头扩展进行了优化
扩展头

- defined by profile:决定使用哪种Header Extension
- one-byte header方式,defined by profile等于0xBEDE
- two-byte header方式,defined by profile等于0x1000
- length:表示Header Extension的长度:length x 4字节
One-Byte Header
如果是One-Byte Header方式封装,则defined by profile的值为0xBEDE。
每一个扩展项都是以1个字节的ID和长度开始,后面跟着具体的数据,如下图:

- ID: 4bit 标示本地标示,有效范围为1-14
- len: 4bit 标示长度范围:0~15,为0表示长度为1字节,15表示16字节
栗子

two-byte header
如果是two-byte header方式封装,则defined by profile的值为0x1000。

**appbits:**字段为4位,取决于应用程序,可定义为任何值或含义,不在本规范范围内。出于发信号的目的,此字段被视为分配给本地标识符256的特殊扩展值。如果未通过配置或发信号为此本地标识符256指定扩展,则发送方应将appbits字段设置为所有0,接收方必须忽略该字段。
后面每个扩展选项的定义如下:

主要是ID和length的长度的区别
栗子

本文概述了RFC-5285对RTP头部扩展的改进,解决了一包内扩展头数量限制和标识符冲突问题。通过定义URL命名的扩展元素和IANA注册表,实现了向后兼容的多头扩展,并介绍了one-byteheader和two-byteheader方式的区别。
753

被折叠的 条评论
为什么被折叠?



