欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > GB28181协议下的RTP传输

GB28181协议下的RTP传输

2025/2/24 23:38:21 来源:https://blog.csdn.net/oMRBlack/article/details/145808251  浏览:    关键词:GB28181协议下的RTP传输

1. RTP协议概述

RTP(Real-Time Transport Protocol)基于RFC 3550,专为实时音视频传输设计,通常运行于UDP或TCP之上,结合RTCP实现质量控制。GB28181中主要封装方式:

  • PS封装:遵循ISO/IEC 13818-1,将音视频打包为PS包再封装为RTP负载,适用于复杂流场景(如多路复用)。
  • 基本流封装:直接封装H.264/H.265的NALU或G.711音频帧,减少协议开销。

2. 支持的音视频格式

视频编码
编码格式PS封装负载类型基本流负载类型规范文件关键特性
H.2649698 (FU-A分片)RFC 6184支持NALU分片(FU-A/FU-B)
H.2659698RFC 7798高压缩效率,需携带VPS/SPS/PPS
SVAC9620GB/T 25724-2017国标专用编码格式
音频编码
编码格式负载类型采样率帧长规范文件
G.711A88 kHz160字节ITU-T G.711
G.723.148 kHz30 ms帧ITU-T G.723.1
AAC动态分配16-48 kHz1024样本RFC 3640

3. 打包传输方式

PS封装流程
  1. 生成PS包
    • 每个PS包由系统头、PSM(Program Stream Map)和多个PES包组成。
    • 关键帧(如H.264 I帧)需携带SPS/PPS信息。
  2. RTP分片
    • PS包长度超过MTU时,按RFC 3984分片,使用分片标识(FU Indicator和FU Header)。
    • 示例:H.264 FU-A分片头部结构:
     FU Indicator (F|NRI|Type=28) → FU Header (S|E|Type) → NALU Payload
基本流封装
  • H.264/H.265:直接发送NALU或分片单元,无需PS层。
  • 音频:G.711每帧160字节,对应单个RTP包。

4. RTP传输模式

GB28181支持 UDPTCP 两种传输层协议,TCP分为 主动模式(Active)被动模式(Passive)

(1) RTP over UDP
  • 特点
    • 默认模式,低延迟但可能丢包。
    • 依赖RTCP反馈网络质量(如丢包率、抖动)。
  • SDP示例
  m=video 5004 RTP/AVP 96a=rtpmap:96 PS/90000a=fmtp:96 profile-level-id=420029; packetization-mode=1
(2) RTP over TCP
  • 协议规范:遵循RFC 4571,通过$分隔符标识数据块长度(格式:$[长度][数据])。
  • 传输模式
    • 主动模式(Active) :设备主动发起TCP连接。
    m=video 2000 TCP/RTP/AVP 96a=setup:active      // 设备主动连接a=connection:new    // 新建连接
  • 被动模式(Passive) :设备监听端口等待连接。
    m=video 3000 TCP/RTP/AVP 96a=setup:passive     // 设备被动等待a=connection:new
  • 适用场景
    • 主动模式:设备具备公网IP或直连能力(如专线网络)。
    • 被动模式:设备位于NAT后,需端口映射或反向代理。

5. RTCP协议功能

  • 质量控制:通过SR(Sender Report)和RR(Receiver Report)交换以下信息:

    字段说明
    丢包率接收端统计的丢包比例
    抖动(Jitter)数据包到达时间波动
    延迟端到端传输延迟
  • 同步机制:通过NTP时间戳和RTP时间戳对齐音视频流。

  • 带宽自适应:根据网络状况动态调整编码码率或分片策略。


6. SDP描述详解

关键字段
  1. 媒体行(m=
    • m=video 5004 RTP/AVP 96 → 视频流,UDP端口5004,负载类型96。
    • m=video 2000 TCP/RTP/AVP 96 → 视频流,TCP端口2000。
  2. 属性(a=
    • a=rtpmap:96 PS/90000 → 负载类型96对应PS封装,时钟频率90kHz。
    • a=fmtp:96 profile-level-id=420029 → H.264的SPS参数。
    • a=setup:active/passive → 指定TCP连接模式。
完整SDP示例(TCP被动模式)
v=0
o=34020000001320000001 0 0 IN IP4 192.168.1.100
s=GB28181 Stream
c=IN IP4 192.168.1.100
t=0 0
m=video 3000 TCP/RTP/AVP 96
a=setup:passive
a=connection:new
a=rtpmap:96 PS/90000
a=fmtp:96 streamtype=1; profile=1; sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM4yyA==
m=audio 3002 TCP/RTP/AVP 8
a=setup:passive
a=connection:new
a=rtpmap:8 PCMA/8000

7. 传输模式选择建议

模式延迟可靠性适用场景
UDP局域网、专线网络
TCP主动设备直连服务器(无NAT)
TCP被动设备位于内网(需端口映射)

8. 开发注意事项

  1. 分片处理:H.264/H.265大帧需分片传输,需正确处理FU-A头部标记(S/E位)。
  2. 时间戳同步:RTP时间戳需基于90kHz时钟(视频)或8kHz(音频),避免音画不同步。
  3. NAT穿透:TCP被动模式需配置端口映射或使用云网关。
  4. 错误恢复:TCP模式下需实现连接重试和断线重传机制。

版权声明:

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

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