您的位置:首页 > 教育 > 锐评 > 如何开发微信微网站_房产资讯_云南疫情最新数据消息中高风险地区_黄冈地区免费网站推广平台

如何开发微信微网站_房产资讯_云南疫情最新数据消息中高风险地区_黄冈地区免费网站推广平台

2025/2/24 10:37:35 来源:https://blog.csdn.net/oMRBlack/article/details/145790971  浏览:    关键词:如何开发微信微网站_房产资讯_云南疫情最新数据消息中高风险地区_黄冈地区免费网站推广平台
如何开发微信微网站_房产资讯_云南疫情最新数据消息中高风险地区_黄冈地区免费网站推广平台

一、RTP 数据包格式(RFC 3550 Section 5.1)

1. RTP 头部结构
 0                   1                   2                   30 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                                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           CSRC (可选)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Payload                            |
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
2. 字段详解
字段长度说明
V (Version)2 bits版本号,固定为 2(二进制 10)。
P (Padding)1 bit填充位。1 表示包尾有填充字节(用于对齐加密块)。
X (Extension)1 bit扩展头标志。1 表示存在扩展头(RFC 5285 定义)。
CC (CSRC Count)4 bitsCSRC 标识符的数量(范围 0~15)。
M (Marker)1 bit标记位,载荷类型相关。例如:视频流中 1 表示帧结束。
PT (Payload Type)7 bits载荷类型(如 96 表示 H.264,需通过 SDP 的 a=rtpmap 映射)。
Sequence Number16 bits序列号,每发送一个 RTP 包递增 1,用于检测丢包和乱序。
Timestamp32 bits时间戳,基于媒体时钟(如视频 90 kHz,音频 44.1 kHz)。
SSRC32 bits同步源标识符,随机生成,唯一标识一个媒体源。
CSRC32 bits贡献源列表(可选),最多 15 个 SSRC,用于混流场景。
Payload可变媒体数据(如 H.264 NALU、AAC 帧)。

二、RTCP 控制包格式(RFC 3550 Section 6)

1. RTCP 通用头部

所有 RTCP 包共享以下头部结构:

 0                   1                   2                   30 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|   RC    |       PT      |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Payload                            |
|                              ...                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
字段长度说明
V (Version)2 bits版本号,固定为 2
P (Padding)1 bit填充位。1 表示包尾有填充字节(与 RTP 类似)。
RC (Reception Count)5 bits接收报告块数量(仅用于 SR/RR)。
PT (Packet Type)8 bits包类型(如 200=SR,201=RR,202=SDES,203=BYE)。
Length16 bitsRTCP 包的总长度(以 32 位字为单位,减 1)。

2. Sender Report (SR) 报文格式
 0                   1                   2                   30 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|   RC=5  |      PT=200   |             Length=28          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC of Sender                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         NTP Timestamp (64 bits)                |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RTP Timestamp (32 bits)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Sender's Packet Count                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Sender's Octet Count                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          SSRC_1 (SSRC of first source)                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Fraction Lost |       Cumulative Lost                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Extended Highest Sequence Number                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Jitter (32 bits)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Last SR Timestamp                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Delay Since Last SR                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段详解

  • NTP Timestamp:64 位 NTP 时间戳(高 32 位为秒,低 32 位为小数秒)。
  • RTP Timestamp:与 NTP 时间戳对应的 RTP 时间戳。
  • Sender’s Packet/Octet Count:发送端累计发送的包数和字节数。
  • SSRC_1:接收报告块的 SSRC(最多 31 个接收报告)。

3. Receiver Report (RR) 报文格式
 0                   1                   2                   30 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|   RC=1  |      PT=201   |             Length=7           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC of Receiver                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC of Source                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Fraction Lost         |       Cumulative Lost         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Extended Highest Sequence Number                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Jitter (32 bits)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Last SR Timestamp                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Delay Since Last SR                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

关键 QoS 字段

  • Fraction Lost:8 位无符号整数,丢包率 = Fraction Lost / 256.0 * 100%
  • Cumulative Lost:24 位无符号整数,累计丢包数。
  • Extended Highest Sequence Number:32 位序列号(高 16 位为循环计数)。
  • Jitter:32 位无符号整数,抖动值(单位:RTP 时间戳间隔的 1/16)。
  • Last SR Timestamp:最近收到的 SR 包中的 NTP 时间戳(中间 32 位)。
  • Delay Since Last SR:从收到 SR 到发送 RR 的延迟(单位:1/65536 秒)。

4. Source Description (SDES) 报文格式
 0                   1                   2                   30 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|   RC=1  |      PT=202   |             Length=3           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     CNAME=1    |     Length    |       user@example.com...     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     NAME=2     |     Length    |         John Doe...           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     END=0      |                    Padding                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明

  • CNAME:规范名(必选),格式为 user@host 或随机字符串,用于跨流同步。
  • NAME/EMAIL/PHONE:可选描述字段。
  • END:0 字节结束标记。

5. BYE 报文格式
 0                   1                   2                   30 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|   RC=1  |      PT=203   |             Length=1           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           SSRC/CSRC                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Reason     |    Length     |       "Network Error"...      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

字段说明

  • Reason:可选,ASCII 编码的离开原因(如 “Network Error”)。

三、RTCP 复合包示例

一个典型的 RTCP 复合包可能包含多个报告:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SR (Sender Report)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SDES (CNAME)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          BYE (Leave Reason)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

四、QoS 参数计算规则(RFC 3550 Appendix A)

1. 丢包率(Fraction Lost)
expected = highest_seq - initial_seq + 1
received = packets_received
lost = expected - received
fraction_lost = (lost << 8) / expected  // 结果范围 0~255
2. 抖动(Jitter)
// 对于第 i 个包:
arrival_time = current_time - initial_time
transit_time = arrival_time - rtp_timestamp
previous_transit = transit_time of packet i-1
D(i) = |transit_time - previous_transit|
jitter = jitter + (D(i) - jitter) / 16
3. 往返时间(RTT)
// 接收端计算:
last_sr_ntp = (SR 包中的 NTP 时间戳)
delay_since_last_sr = (收到 SR 到发送 RR 的延迟)
rtt = current_ntp_time - last_sr_ntp - delay_since_last_sr

五、总结

  • RTP:负责媒体数据传输,通过序列号和时间戳支持实时播放。
  • RTCP:通过 SR/RR 报文实现网络质量监控,SDES/BYE 维护会话元数据。
  • QoS 控制:基于丢包率、抖动、RTT 动态调整缓冲区或码率(需应用层逻辑)。
  • 协议扩展:RFC 3550 为基础,NACK/PLI/REMB 等高级功能需参考后续 RFC(如 4585、5104)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com