GB28181系列一:GB28181协议介绍

        我的音视频/流媒体开源项目(github)

        GB28181系列目录

目录

一、GB28181协议介绍

二、GB28181交互流程

1、注册

2、观看视频

3、控制

4、SDP

5、媒体保活:

6、RTP

7、SIP URL


一、GB28181协议介绍

        GB28181使用SIP协议,SIP协议参考我的SIP系列:SIP系列目录

        GB28181 即 GB/T28181《公共安全视频监控联网系统信息传输、交换、控制技术要求》。它是公安部提出的公共安全行业标准,用于监控视频监控设备之间的通信和互联,特别是对于监控摄像头、视频服务器、视频管理平台等设备之间的数据流和控制命令。它为视频监控系统提供了一种标准化的协议,可以确保不同厂家和型号的设备在同一系统中能够相互兼容和通信。

        GB28181使用SIP作为通信协议,并在 SIP 协议的基础之上做了些私有化处理,主要扩展了MESSAGE和INFO等方法;使用RTP协议传输音视频。

        功能特点如下:
        设备注册:设备进入联网系统时需向 SIP 服务器进行注册登记,注册信息包括设备的国标 ID、域国标 ID、IP 地址、端口号等,以便系统对设备进行识别和管理。
        设备信息获取:可以获取设备的相关信息,如设备类型、设备型号、设备状态等,还能够拉取与设备关联的摄像头信息,对于像 NVR 设备这种可能连接多个摄像头的情况,可方便地获取其下属摄像头的信息。
        实时视音频传输:支持实时拉取设备当前的视频数据,以便用户实时查看监控画面。
        设备控制:可向设备发送控制信息,例如对球机进行云台控制,实现摄像头的转动、变焦等操作。
        历史视音频查询与回放:能够查询设备的历史视频记录,包括查看哪些时间段有视频、文件大小等信息,并可以拉取指定时间段的视频进行回放和下载。

        版本发布情况如下:

        GB/T 28181-2022        现行
        GB/T 28181-2016        废止
        GB/T 28181-2011        废止

        GB28181可以让不同监控平台级联到一起并形成上下级关系,如下图所示:

        每个监控平台管理自己区域的摄像头,并且可以和其他监控平台通过GB28181协议对接。

        GB28181协议的上下级关系主要通过设备的SIP注册机制来实现,通常由平台和终端设备(如摄像头、视频服务器等)构成。

        平台:在GB28181中,平台通常是指视频监控管理系统或视频监控中心,它是终端设备的上级,负责统一的管理、调度和数据收集。平台可以同时管理多个终端设备,向其发送控制指令(如启动视频流、云台控制、录像等)。

        终端设备:终端设备是指具体的监控设备,如摄像头、视频服务器、传感器等。它们作为下级设备,向平台注册,接收来自平台的控制指令,并返回音视频数据。

        平台级联:监控平台A可以向监控平台B注册形成级联关系,注册完A就是B的下级。

        如下图所示:

        GB28181具体功能如下:

•注册类:注册,注销,校时,心跳
•点播类:实时点播,历史点播,回放控制(快进,快退,跳转,暂停,停止),录像下载
•控制类:云台,远程重启,强制关键帧,电子放大/缩小,手动录像,布防/撤防,参数配置等
•查询类:目录,录像文件,设备信息,设备状态,预置位,设备参数
•订阅通知:目录,报警

二、GB28181交互流程

        GB28181标准网址:国家标准全文阅读|标准检索

1、注册

        设备上线之后首先向监控平台注册,注册流程如下:

        

2、观看视频

        之后监控平台可以向IPC发起会话,观看视频,如下图所示:

3、控制

        GB28181使用MESSAGE+xml的方式传输控制指令,控制分有应答和无应答两种流程。

        无应答命令流程:

        有应答命令流程:

        控制命令采用MANSCDP格式,消息体使用XML格式封装,GB28181中除了MANSCDP格式的控制命令,还有MANSRTSP格式的媒体控制命令。两者区别为:MANSCDP是控制描述协议,采用SIP Message消息体携带,负责设备控制、报警控制等命令;MANSRTSP是媒体回放控制协议,采用SIP INFO消息体携带,负责回放控制命令。关于Message和INFO的区分:Message不需要建立会话即可发送;INFO必须通过INVITE发起会话之后并且在会话期间才能发送。MANSCDP定义在官方文档的附录A中,MANSRTSP定义在附录B中。

        MANSCDP:MESSAGE消息头的Content-type定义为Content-type:Application/MANSCDP+xml;payload为xml封装的MANSCDP格式消息,是GB28181自定义的。

        MANSRTSP:INFO消息头的Content-type定义为Content-type:Application/MANSRTSP;payload为RTSP控制消息,即标准的RTSP信令。

        如下所示,为设备查询和目录查询命令流程:

4、SDP

        SDP在文档中的附录G中中说明,如下图所示:

        s字段:标识请求媒体流的操作类型,“Play"代表实时点播;“Playback”"代表历史回放;“Download”代表文件下载。

        m字段:“RTP/AVP”标识传输层协议为 RTP over UDP,采用“TCP/RTP/AVP”标识传输层协议为 RTP over TCP。

        y字段:为十进制整数字符串,表示SSRC值。格式如下:dddddddddd。其中,第1位为历史或实时媒体流的标识位,0为实时,1为历史;第2位至第6位取20位SIP监控域ID中的4到8位作为域标识,例如“13010000002000000001”中取数字“10000”;第7位至第10位作为域内媒体流标识,是一个与当前域内产生的媒体流SSRC值后4位不重复的四位十进制整数,即随机数。SSRC是由SIP监控域产生的,并作为RTP中的ssrc值,关于SIP监控域ID的定义参考附录E。如下图所示为SSRC的交换示意图:

        1、点播域内的设备:

        2、点播域外的监控平台:

        f字段:f=v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率。各项
具体含义可参考官方文档。只有视频的时候f=v/编码格式/分辨率/帧率/码率类型/码率大小a///;只有音频的时候f=v/(这里有5个/)a/编码格式/码率大小/采样率。注意。之间是没有空格的。

        a=setup:TCP连接方式(表示本SDP发送者在RTP over TCP连接建立时是主动还是被动发起 TCP连接,“active”为主动,“passive”为被动)。

        a=connection:new(表示采用RTP over TCP 传输时新建或重用原来的TCP连接,可固定采用新建TCP连接的方式)。

5、媒体保活:

        媒体保活机制定义在附录K和L中,注册成功后,根据设备端配置的保活时间(通常30秒到3分钟),设备周期性发送状态报送消息给平台。

6、RTP

        GB28181使用RTP传输音视频,有两种方式:UDP、TCP。UDP和RTSP中的没有区别,但是TCP有区别。

        目前RTSP有两个版本1.0和2.0,1.0定义在RFC2326中,2.0定义在RFC7826。2.0是2016年由IETF发布的RTSP新标准,不过现在基本使用的都是RTSP1.0,就算有使用2.0的,也会兼容1.0。而GB28181则使用RFC4571中定义的RTP,这里面RTP over TCP方式和以往的不同。

        RFC2326中RTP over TCP的数据包是这样的:

| magic number | channel number | data length | data  |magic number - magic number:   RTP数据标识符,"$" 一个字节
channel number: 信道数字 - 1个字节,用来指示信道
data length :   数据长度 - 2个字节,用来指示插入数据长度
data :          数据 - ,比如说RTP包,总长度与上面的数据长度相同

        而RFC4571中的RTP over TCP的数据包确是这样的:

    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---------------------------------------------------------------|             LENGTH            |  RTP or RTCP packet ...       |---------------------------------------------------------------

        RFC2326中用channel number标识消息类型,因为RTSP中信令和和音视频都是通过同一个TCP通道传输,所以必须通过channel number区分。而GB28181中信令和媒体数据是不同的传输通道,所以不用去区分。

        RFC4571标准格式:长度(2字节) + RTP头 + 数据

        RFC2326标准格式:$(1字节) + 通道号(1字节) + 长度(2字节) + RTP头 + 数据

7、SIP URL

        GB28181中SIP URL格式为sip:<SIP监控域ID>@<ip>:<port>,SIP监控域ID有20位。

        SIP监控域ID由中心编码(8位)、行业编码(2位)、类型编码(3位)、网络标识(1位)和序号(6位)5个码段共20位十进制数字字符构成,即系统编码 = 中心编码 + 行业编码 + 类型编码 + 网络标识 +序号。具体定义可参考附录E。

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

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

相关文章

【C++指南】类和对象(七):友元

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 &#x1f343;友元的介绍 &#x1f343;友元函数 &#x1f343;友元类 &#x1f343;相关…

【leetcode】替换后的最长重复字符、将字符串翻转到单调递增

1.替换后的最长重复字符 示例如下&#xff1a; 下面我们来分析一下一个例子&#xff0c;其中K 2 暴力枚举 这里的字符串s是仅由大写字母组成&#xff0c;首先我们尝试用暴力解法的思路来想一下这道题&#xff0c;通过从第一个字符开始进行枚举&#xff0c;如果出现了条件判断…

广州大学acm新生赛

#include <iostream> #include <unordered_map> #include <unordered_set> #include <map> #include <string> #include <vector> #include <algorithm> using namespace std;// 定义存储每个队伍的相关数据结构 struct TeamData {i…

【PyQt5教程 四】Qt Designer 样式表(styleSheet)实现基本小部件的自定义动态效果和资源浏览器背景添加方法

目录 一、成果演示&#xff1a; 二、样式表的使用方法: &#xff08;1&#xff09;样式表语法和属性&#xff1a; &#xff08;2&#xff09;样式表代码示例&#xff1a; &#xff08;3&#xff09;伪类和状态&#xff1a; &#xff08;4&#xff09;复合选择器&#xff…

【C++】输入三个整数,输出最大值的高级分析

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述&#x1f4af;解题思路&#x1f4af;实现与分析方法一&#xff1a;三元运算符的直接应用详细分析&#xff1a;优缺点剖析&#xff1a; 方法二&#xff1a;显式条件…

基于python+django+vue的高校成绩管理系统

系统展示 管理员后台界面 教师界面 学生界面 系统背景 随着教育信息化的不断推进&#xff0c;传统的手工成绩管理方式已经无法满足现代教育管理的需求。传统管理方式不仅效率低下&#xff0c;还容易出错&#xff0c;且难以实现数据的集中化管理和安全访问控制。因此&#xff0c…

怎么为开源项目做贡献提PR?

GitHub 慢的话&#xff0c;https://ask.csdn.net/questions/8166374 复刻项目 以 https://github.com/open-frame/uniapp-init 项目为例 复刻完就会在你的仓库里有个同样的项目 拉取复刻下来的项目 然后常规的改动项目、git推送。比如我改了一个忽略文件&#xff1a; 提交…

记录:ubuntu 使用chattts的过程。

你知道什么是穷人吗&#xff1f;穷人就是没钱还想学习。 git GitHub - 2noise/ChatTTS: A generative speech model for daily dialogue. 因为所以。cosyvoice&#xff0c;gpt-s . 0.先找一个目录吧。 1.命令行模式 duyichengduyicheng-computer:~/gitee$ git clone https:…

vulnhub靶场【hacksudo】之LPE的后续提权方法学习

前言 靶场&#xff1a;hacksudo-lpe的后几个challenge 基于上篇靶场hacksudo-ple的sudo提权 SUID文件提权 ar文件提权 使用find寻找具有SUID权限的文件 find / -perm -us -type f 2>/dev/null查看ar的SUID用法 sudo install -m xs $(which ar) .TF$(mktemp -u) LFILE&…

【 C语言练习(4)—可自己设置游戏规则的猜数字游戏】

C语言练习&#xff08;4&#xff09; 文章目录 C语言练习&#xff08;4&#xff09;前言题目题目解析结果总结 前言 本次写的猜字游戏有两大优点&#xff0c;可重复玩游戏、可自己设置猜数字规则&#xff0c;通过猜数字游戏锻炼循环体和选择结构体 题目 写一个给定猜数次数&a…

【4】数据分析基础(pandas中的series 1)

学习目标2 pandas模块的学习。 pandas是一个基于NumPy的模块&#xff0c;它的功能在于数据的筛选清洗和处理&#xff0c;与NumPy模块相比&#xff0c;pandas模块更擅长处理二维数据。 pandas模块主要有Series和DataFrame两种数据结构。 接下来&#xff0c;我们先学习Series…

创建项目,并且上传到git

第一步 本地新建新项目 第二步 git上新建空项目 第三步 将本地项目添加为git项目 1、复制初始化命令 在新建项目中登录git 2、将本地项目设置为git项目 在IDEA中执行一下命令 3、完成上述操作&#xff0c;IDEA会将本地项目识别为git项目&#xff0c;就可以执行git commit操…

Cisco Packet Tracer | Cisco Packet Tracer - VLAN 实验 - 交换机的 VLAN 划分

关注这个工具的其它相关笔记&#xff1a;Cisco Packet Tracer —— 使用教程合集-CSDN博客 0x01&#xff1a;VLAN 划分 - 单个交换机 0x0101&#xff1a;拓扑搭建流程 从软件底部拖出一台交换机&#xff08;笔者选择的型号是 2960 IOS15&#xff09;&#xff1a; 然后再拖出四…

ICP和EDI许可证办理审核专用的网站系统源码程序下载—专供审核易过使用

在现代互联网及电子商务企业中&#xff0c;ICP许可证和EDI许可证不仅是法律要求&#xff0c;更是企业立足市场的重要基础。这两种许可证能够帮助企业爬梳合规问题&#xff0c;规避法律风险&#xff0c;并提升自身的信誉&#xff0c;增强客户的信任感。本文将详细介绍ICP许可证和…

MySQL Binlog 日志监听与 Spring 集成实战

MySQL Binlog 日志监听与 Spring 集成实战 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种常见的格式&#xff1a;Statement 模式、Row 模式和Mixed 模式。每种模式的设计目标不同&#xff0c;适用于不同的场景&#xff0c;以下是它们的详细对比和…

攻防世界安卓刷题笔记(新手模式)1-4

1.基础android 进入后是这样的页面。查看源代码看看。首先要注意这个软件并没有加壳&#xff0c;所以我们可以直接着手分析。搜索错误提示“Failed”定位到关键代码&#xff0c;看样子就是检验输入的内容 注意到这里有一行关键代码&#xff0c;cond_39对应的正是failed那个地方…

C++核心day3作业

作业&#xff1a; 1.整理思维导图 2.整理课上代码 3.把课上类的三个练习题的构造函数写出来 函数全部类内声明&#xff0c;类外定义 定义一个矩形类Rec&#xff0c;包含私有属性length、width&#xff0c;包含公有成员方法&#xff1a; void set_length(int l); //设置长度v…

Scala:正则表达式

object test03 {//正则表达式def main(args: Array[String]): Unit {//定义一个正则表达式//1.[ab]:表示匹配一个字符&#xff0c;或者是a&#xff0c;或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10…

可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章&#xff0c;如你们所见&#xff0c;比较详细&#xff0c;全长两万字。我不建议你们一次性看完&#xff0c;直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国&#xff01; 一、UML图 总共有如下几种&#xff1a; 用例图&#xff08;Use Ca…

[创业之路-191]:《华为战略管理法-DSTE实战体系》-2-BLM战略规划与执行的基本框架

目录 一、战略规划&#xff1a;BLM的核心内容 1. 战略规划部分 2 战略执行部分&#xff08;战略解码&#xff09; 二、BLM模型对企业战略制定和执行的价值 2.1 说法1&#xff1a; 1、共同的目标 2、同一种语言&#xff1a;提高团队协作效率 3、最基本的方法 4、执行的…