当前位置: 首页 > news >正文

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 96
  a=rtpmap:96 PS/90000
  a=fmtp:96 profile-level-id=420029; packetization-mode=1
(2) RTP over TCP
  • 协议规范:遵循RFC 4571,通过$分隔符标识数据块长度(格式:$[长度][数据])。
  • 传输模式
    • 主动模式(Active) :设备主动发起TCP连接。
    m=video 2000 TCP/RTP/AVP 96
    a=setup:active      // 设备主动连接
    a=connection:new    // 新建连接
  • 被动模式(Passive) :设备监听端口等待连接。
    m=video 3000 TCP/RTP/AVP 96
    a=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模式下需实现连接重试和断线重传机制。

相关文章:

  • Android Loader机制解析
  • MapReduce 读取 Hive ORC ArrayIndexOutOfBoundsException: 1024 异常解决
  • Excell 代码处理
  • kafka基本知识
  • Prompt Engineering的重要性
  • JAVAweb-JS基本数据类型,变量,DOM,pop,push函数,事件
  • 【Python爬虫(47)】探秘分布式爬虫性能:从测试到优化之路
  • 哈希表入门到精通:从原理到 Python 实现全解析
  • 洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列
  • 【SpringBoot教程】SpringBoot整合Caffeine本地缓存及Spring Cache注解的使用
  • SSI用量子计算来玩AI
  • 策略模式Spring框架下开发实例
  • AI(14)-prompt
  • 跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
  • Windows11安装GPU版本Pytorch2.6教程
  • [Android]文本多的时候让TextView的字体自动变小
  • 量子比特的实现与优化技术:解密量子计算的核心
  • 【Python爬虫(45)】Python爬虫新境界:分布式与大数据框架的融合之旅
  • 15-贪心算法
  • (面试经典问题之连接池篇)连接池构成、作用及其基本原理详解
  • 网站设计心的/百度站长统计
  • 福田附件网站建设公司/今天重大新闻头条新闻军事
  • 全国物流网站/的网站建设
  • 建设银行网站能变更手机号吗/廊坊seo排名公司
  • jquery网站发展历史时间轴/广告联盟自动挂机赚钱
  • 东莞网站建设 手机壳/网站快速收录入口