1. RTP扩展头基础概念解析
在实时音视频传输领域,RTP(Real-time Transport Protocol)协议扮演着至关重要的角色。作为从业十余年的音视频工程师,我发现很多开发者在处理RTP扩展头时容易陷入误区。RTP标准头部固定为12字节,但当我们需要传输额外元数据时,扩展头就成为了不可或缺的组成部分。
RTP扩展头位于标准头部之后、负载数据之前,其结构包含16位的扩展标识符和长度字段。标识符由具体应用定义,用于区分不同类型的扩展数据。实际项目中,我们常用它来传递以下信息:
- 视频旋转角度(用于移动端横竖屏切换)
- 音频电平值(用于UI音量指示)
- 网络质量指标(如丢包率、延迟)
- 时间戳补偿值(解决时钟漂移问题)
关键提示:扩展头标识符必须在SDP协商阶段通过a=extmap属性明确声明,否则接收端将无法正确解析。这是新手最容易忽略的环节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 扩展头实现细节与协议规范
2.1 标准RTP头部结构对比
标准RTP头部(12字节)包含以下固定字段:
code复制 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC |
+-+-+-+-+-
