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模式下需实现连接重试和断线重传机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22859.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

极客大学 java 进阶训练营怎么样,图文详解

Spring 思维导图 Spring 源码学习笔记 有关微服务的面试题: Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?微服务学习笔记 有关分布式的面试题: 消息幂等:如何保证消息不被重复…

如何手动设置u-boot的以太网的IP地址、子网掩码、网关信息、TFTP的服务器地址,并进行测试

设置IP地址 运行下面这条命令设置u-boot的以太网的IP地址: setenv ipaddr 192.168.5.9设置子网掩码 运行下面这条命令设置u-boot的以太网的子网掩码: setenv netmask 255.255.255.0设置网关信息 运行下面这条命令设置u-boot的网关信息: …

使用大语言模型对接OA系统,实现会议室预定功能

随着人工智能技术的不断进步,越来越多的企业开始借助 AI 助手来提高工作效率,尤其是在日常事务的自动化处理中。比如,在许多公司里,会议室的预定是一个常见且频繁的需求,通常需要员工手动检查空闲时间并做出选择。而通…

单链表:数据结构中的灵活“链条”

目录 🚀前言🤔单链表是什么?💯单链表的结构特点💯单链表的用途 ✍️单链表的实现与接口解释💯打印链表💯尾插操作💯头插操作💯头删操作💯尾删操作&#x1f4a…

Redis面试宝典【刷题系列】

文章目录 一、什么是Redis?二、Redis相比Memcached有哪些优势?三、Redis支持的数据类型有哪些?四、Redis的主要消耗的物理资源是什么?五、Redis的全称是什么?六、Redis有哪些数据淘汰策略?七、为什么Redis需…

uni-app集成sqlite

Sqlite SQLite 是一种轻量级的关系型数据库管理系统(RDBMS),广泛应用于各种应用程序中,特别是那些需要嵌入式数据库解决方案的场景。它不需要单独的服务器进程或系统配置,所有数据都存储在一个单一的普通磁盘文件中&am…

pytest-html

首先安装pytest-html库 #执行命令 pytest --htmlreport.html ./pytest-html.pyimport pytest import logging def test_pass():"""用例通过"""assert Truedef test_fail():"""用例失败"""assert Falsedef test_e…

kafka为什么这么快?

前言 Kafka的高效有几个关键点,首先是顺序读写。磁盘的顺序访问速度其实很快,甚至比内存的随机访问还要快。Kafka在设计上利用了这一点,将消息顺序写入日志文件,这样减少了磁盘寻道的时间,提高了吞吐量。与传统数据库的…

从DeepSeek的爆火来看大模型微调技术的发展方向

“深度人工智能”是成都深度智谷科技旗下的人工智能教育机构订阅号,主要分享人工智能的基础知识、技术发展、学习经验等。此外,订阅号还为大家提供了人工智能的培训学习服务和人工智能证书的报考服务,欢迎大家前来咨询,实现自己的…

Dify使用教程(创建应用)

Dify的安装部署我已经写过了,简单的模型配置我也在前面进行了讲解,今天我们主要来讲讲如何使用Dify。 一、创建应用 我们可以通过三种方式在Dify的工作室内创建应用 01 基于应用模板创建(新手推荐)02 创建一个空白应用03 通过D…

system verilog的流操作符

流操作符&#xff0c;有分为操作对象是一整个数组和单独的数据两种&#xff0c;例如bit [7:0] a[4]和bit [31:0] b&#xff0c;前者操作对象是数组&#xff0c;后者是单独一个较大位宽的数。 流操作符有<<和>>&#xff0c;代表从右向左打包和从左向右打包。 打包的…

项目实战--网页五子棋(匹配模块)(4)

上期我们完成了游戏大厅的前端部分内容&#xff0c;今天我们实现后端部分内容 1. 维护在线用户 在用户登录成功后&#xff0c;我们可以维护好用户的websocket会话&#xff0c;把用户表示为在线状态&#xff0c;方便获取到用户的websocket会话 package org.ting.j20250110_g…

hot100_108. 将有序数组转换为二叉搜索树

hot100_108. 将有序数组转换为二叉搜索树 思路 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#…

Win11更新系统c盘爆满处理

1.打开磁盘管理 2.右击c盘选择属性&#xff0c;进行磁盘管理&#xff0c;选择详细信息。 3.选择以前安装的文件删除即可释放c盘空间。

深入理解 JSP 与 Servlet:原理、交互及实战应用

一、引言 在 Java Web 开发领域,JSP(JavaServer Pages)和 Servlet 是两个至关重要的技术,它们共同构成了动态网页开发的基础。Servlet 作为服务器端的 Java 程序,负责处理客户端请求并生成响应;而 JSP 则是一种简化的 Servlet 开发方式,允许开发者在 HTML 页面中嵌入 J…

[通俗易懂C++]:指针和const

之前的文章有说过,使用指针我们可以改变指针指向的内容(通过给指针赋一个新的地址)或者改变被保存地址的值(通过给解引用指针赋一个新值): int main() {int x { 5 }; // 创建一个整数变量 x&#xff0c;初始值为 5int* ptr { &x }; // 创建一个指针 ptr&#xff0c;指向 …

DL/CV领域常见指标术语(FLOPS/mIoU/混淆矩阵/F1-measure)------一篇入门

1. FLOPS、FLOPs和GFLOPs FLOPS: floating-point operations per second&#xff0c;每秒浮点运算次数&#xff0c;用来衡量硬件性能。 FLOPs&#xff1a;floating point of operations&#xff0c;是浮点运算次数&#xff0c;用来衡量算法、模型的复杂度。 GFLOPS&#xff…

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景 1. CUDA&#xff08;Compute Unified Device Architecture&#xff09; 作用&#xff1a; GPU 通用计算&#xff1a;CUDA 是 NVIDIA 的并行计算平台和编程模型&#xff0c;允许开发者直接利用 GPU 的并行计算能力&#xff0c;加速通用计算任…

DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?

DeepSeek vs ChatGPT&#xff1a;AI对决中的赢家是……人类吗&#xff1f; 文章目录 DeepSeek vs ChatGPT&#xff1a;AI对决中的赢家是……人类吗&#xff1f;一、引言1. 背景2. 问题 二、DeepSeek vs ChatGPT&#xff1a;谁更胜一筹&#xff1f;2.1 语言生成能力评测对比场景…

旧手机热点无法提供ipv6解决方法(emui 8 热点提供ipv6)

旧手机热点无法提供ipv6解决方法 手机&#xff1a;荣耀8x 系统版本: EMUI 8 网络&#xff1a;移动流量卡 解决方案 设置-》无线和网络-》移动网络-》接入点名称(APN)-》cmiot 修改 APN协议: IPv4/IPv6 修改 APN漫游协议: IPv4/IPv6