GB/T28181协议介绍
GB/T28181协议介绍
文章目录
- GB/T28181协议介绍
- 总体介绍
- GB/T28181基本结构
- GB/T28181关键协议流程
- 设备注册
- 设备目录查询
- 实时视频播放流程
- GB/T28181协议总结
说到GB/T28181协议,如果你是从事视频监控领域的工作,那对他一定不陌生,在公共安全、城市治理、政务监管、企事业监管等涉及视频汇聚、视频监控等场景,它已经是视频终端设备、监控平台必须支持的视频协议,可以说是视频监控界的头号玩家,用来规定视频监控系统如何传输、交换和控制信息。本文主要对协议基础知识进行介绍,后续会专门从视频流的角度写一篇文章,详细介绍GB/T28181协议如何进行视频流协议申请、流封装和传输的。
总体介绍
GB/T28181协议,全名叫《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由中国国家标准委员会发布的一种国家级的标准。它主要对视频监控系统的各个方面做了明确的规定,使得不同厂商生产的视频监控设备能够相互连通,信息共享,提高整个监控系统的效率和可靠性。28181协议从2011年发行第一个版本以来已经连续迭代了3个版本,最新发布版本为GB/T28181-2016,最新的协议文档可通过点击文末的阅读原文获取。在公安、政府、企事业单位等视频监控类项目中,28181协议基本是IPC、NVR、平台、视频边界网关必须支持的流媒体协议。
28181协议包含设备注册、实时音视频点播、设备控制、报警时间通知和分发、设备信息查询、状态信息报送、历史音视频文件检索、历史音视频文件回放和下载、网络校时、订阅和通知、语音对讲和语音广播等内容,具体详细介绍可参考《GB/T28181-2016 安全防范视频监控联网系统信息传输、交换、控制技术要求》,规范文档可关注公众号:壹零仓,发送:协议规范,获取。本文主要介绍下28181基本结构、关键协议流程及应用场景介绍。
GB/T28181基本结构
28181协议基本结构如下如所示:
28181协议包含终端侧协议和平台侧协议,终端侧包含IPC、NVR等终端设备,平台侧包含NVR、视频平台、网闸等。IPC通过28181协议接入视频监控平台或NVR;NVR可向下接入IPC,向上接入视频监控平台;GB28181支持多级级联,因此视频监控平台之间可通过28181协议级联,实现协议交换和视频传输。这里视频网闸作为网络安全边界,在公安跨网传输时作为安全网络区域与非安全网络区域之间的网络隔离设施,支持28181的协议通道,因此上下级视频监控平台可直接通过28181协议实现跨网闸通信。
28181协议结构如下图所示:
协议包含两个通道会话通道和媒体流通道,会话通道包含信令交互、视频会话,主要基于sip进行扩展,流媒体通道通过RTP/RTCP进行传输,其中传输层协议最新版本28181规范已经可以支持TCP和UDP两种方式。下面对信令交互、音视频会话、音视频传输三种类型的协议进行介绍:
- 信令交互:信令交互协议是28181协议的基础,其在sip协议的基础上进行了扩展,扩展协议IETF RFC3428规定的MESSAGE方法实现,协议体为xml格式。主要的SIP消息有注册、心跳、设备搜索、设备状态查询、设备控制等。
- 音视频会话:包含视频预览和视频回放,视频预览采用sip的INVITE、ACK、BYE方法实现,媒体协议通过SDP协议来携带;视频回放采用SIP INVITE实现会话连接,擦用SIP INFO方法实现回放命令控制,控制协议命令引用MANSRTSP的PLAY、PARUSE、TREADOWN等命令。
- 音视频传输:通过视频会话建立视频传输通道后,通过RTP/RTCP进行视频传输,传输的音视频封包方式为PS流,有关PS流封装方式详解,关注公众号:壹零仓,发送:ps,获取相关文章。
GB/T28181关键协议流程
本文主要介绍关键的协议流程,包含设备注册、设备目录查询、视频播放等流程,要通过28181协议实现流媒体协议的交互,这几个协议流程是绕不开的,有关28181视频流交互的详细解析,后续会单独写一篇文章来介绍。
设备注册
这里以IPC向视频平台注册为例,设备注册流程如下:
- IPC向视频平台发起Register注册请求,携带设备信息。
- 视频平台收到注册请求后,判断是否携带认证信息,如果未携带,则返回401,鉴权失败。
- IPC根据平台鉴权的要求,携带Anthorization认证信息,重新发起注册请求。
- 平台对认证信息进行认证,认证通过后,返回200,注册成功。
这里要注意鉴权方式,平台回复401时会携带WWW-Authenticate头字段,此字段包含平台支持的鉴权方式,一般方式有basic、digest等。IPC需要根据平台支持的鉴权方式进行认证信息的封装。
设备目录查询
设备目录查询主要查询设备/下级平台的目录结构,通过查询目录结构之后获取设备摄像头列表信息,通过摄像头列表信息,平台才可选择摄像头进行摄像头视频播放等操作,28181所有信令操作流程基本类似,了解了此协议流程,其他信令交互可参照。
28181信令交互采用异步交互的方式,请求消息和响应消息异步进行。
1.平台向IPC发起目录查询请求(catlog),携带查询设备ID。
2.设备直接返回200 OK,不携带响应
3.设备向平台发送目录查询响应信息,携带设备目录信息
4.平台接收响应信息,返回200 OK
实时视频播放流程
视频播放采用SIP IETF RFC 3216规定的INVITE、ACK、BYE方法,还是以视频平台向IPC申请视频为例,来说明28181视频播放流程:
- 视频平台向IPC发起INVITE请求,SDP携带视频播放信息。
- IPC收到INVITE请求后,根据SDP携带的信息,进行视频流推送准备,返回响应信息,携带SDP音视频描述信息。
- 视频平台收到响应信息后,根据SDP音视频描述信息,进行视频流接收准备并返送ACK到IPC。
- IPC收到ACK后,进行音视频流推送,音视频流封装为PS格式,并通过RTP/RTCP传输。
GB/T28181协议总结
GB/T 28181协议的应用可以说是无处不在,比如公共安全、城市管理、企事业等监控领域都有它的身影。接下来我们就来聊聊它的应用场景。
GB/T 28181协议作为公共安全领域中的重要标准之一,规范了视频监控联网系统的信息传输、交换和控制,提高了不同厂商生产的视频监控设备的互联互通性和信息共享性。它不仅在公共安全领域中发挥着重要作用,也在智能家居、企业应用和城市管理等领域有着广泛的应用。通过遵循GB/T 28181协议的规定,我们可以有效地提高视频监控系统的可靠性和有效性,保障我们的安全和生活秩序。
有关GB28181更多文章,关注公众号:壹零仓,发送:28181,获取。
相关文章:

GB/T28181协议介绍
GB/T28181协议介绍 文章目录 GB/T28181协议介绍总体介绍GB/T28181基本结构GB/T28181关键协议流程设备注册设备目录查询实时视频播放流程 GB/T28181协议总结 说到GB/T28181协议,如果你是从事视频监控领域的工作,那对他一定不陌生,在公共安全、…...

光致发光荧光量子检测的作用
光致发光荧光量子检测是一种测试技术,可以用来测量荧光材料的荧光光谱、荧光量子效率和发光寿命等参数,具有高灵敏度、高分辨率和自动化程度高等优点。 光致发光荧光量子检测的应用范围广泛,可以应用于材料科学、生物科学、医学、光学器件、能…...

深度学习第四课
第九章 卷积神经网络解读 9.1 计算机视觉 目标分类 目标识别 64x64x312288 1000x1000x33000000 使用传统神经网络处理机器视觉面临的一个挑战是:数据的输入会非常大 一般的神经网络很难处理海量图像数据。解决这一问题的方法就是卷积神经网络 9.2 卷积运算 …...

Linux创建临时文件mkstemp()tmpfile()
有些程序需要创建一些临时文件,仅供其在运行期间使用,程序终止后即行删除。 很多编译器程序会在编译过程中创建临时文件。GNU C 语言函数库为此而提供了一系列库函数。(之所以有“一系列”的库函数,部分原因是由于这些函数分别继…...
js的节流和防抖详解
防抖和节流是JavaScript中的常见优化技巧,它们可以帮助我们控制代码在特定的时间间隔内执行的频率,从而优化性能。下面详细讲解它们的原理和使用方法。 防抖(Debounce): 防抖的原理是当一个事件频繁触发时࿰…...

基于SpringBoot的水果销售网站
基于SpringBootVue的水果销售网站系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven角色:管理员、商家、用户 系统展示 主页 水果详情 可直接购买,…...

vue2进阶学习知识汇总
目录 1.组件之处理边界情况 1.1 子组件访问根组件数据 1.2 子组件访问父组件数据 1.3 父组件访问子组件 1.4 依赖注入 1.5 程序化的事件侦听器 1.6 递归组件 1.7 内联模板 1.8 X-Template 1.9 强制更新 1.10 v-once 2.过渡效果与状态 2.1 过渡效果 2.1.1 单元素/…...
SQL SERVER连接oracle数据库几种方法
--1 方式 --查询oracle数据库中的表 SELECT * FROM OPENDATASOURCE( MSDAORA, Data SourceGE160;User IDDAIMIN;PasswordDAIMIN )..DAIMIN.JOBS 举一反三:在查询分析器中输入: SELECT * FROM OPENDATASOURCE( MSDAORA, Data SourceORCL;User…...

存储优化知识复习三详细版解析
存储优化 知识复习三 一、 选择题 1、 数据库领域的三位图灵奖得主是( )。 A、C.W.Bachman B、E.F.Codd C、Peter Naur D、James Gray 【参考答案】ABD2、 数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间得关系是( )。 A、DB&#…...
HotReload for unity支持的代码修改
HotReload for unity支持的代码修改 HotReload的版本:1.2.4 Unity版本:2020,2021,2023 创作日期:2023.10.25 总结一下 支持在运行的时候修改异步,同步,重命名方法,修改方法参数,返回值,out,refÿ…...
写一个呼吸灯要几行代码?
module breathe( input clk, output reg led ); reg [26:0]cnt 1b0;always (posedge clk) begin cnt < cnt 1b1;if(cnt[15:6]>cnt[25:16])beginled < cnt[26];end else begin led < ~cnt[26];end endendmodule 笔者的clk是50M...

Banana Pi BPI-W3(Armsom W3)RK3588开当板之调试UART
前言 本文主要讲解如何关于RK3588开发板UART的使用和调试方法,包括UART作为普通串口和控制台两种不同使用场景 一. 功能特点 Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串口标准,完整模块支持以下功能: 支…...

LeetCode88——合并两个有序数组
LeetCode88——合并两个有序数组 1.题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减…...

C++ BinarySercahTree recursion version
for循环版本的:C BinarySercahTree for version-CSDN博客 Inorder()在c BinarySerschTree for verison写了。 还是按照那种嵌套的方式来写递归。 现在来写查找 FindR() bool FindR(){return _FindR(_root);}然后_FindR()函数写递归具体实现: 假设要…...
兑换码生成与解析-个人笔记(java)
1.需求分析 兑换码长度为10字符,包含24个大写字母和8个数字。兑换码需要保证唯一性,不可重复兑换。需要防止猜测和爆刷攻击。兑换码生成和验证的算法需要高效,避免对数据库带来较大的压力。 导航 1.需求分析2.实现方案3.加密过程4.解密过程5…...

2023/10/25MySQL学习
外键约束 在子表添加外键后,不能在主表删除或更新记录,因为存在外键关联 删除外键,注意外键名称时我们添加外键时起的名称 使用cascade操作后,可以操作主表数据,并且子表的外键也会对应改变 set null的话,删除主表对应主键信息后,子表对应外键信息变为空 多表关系 创建中间表 可…...

网络协议--Ping程序
7.1 引言 “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答(图6-3列出了所有的ICMP报文类型)。 一般来说&#x…...

如何在 Azure 容器应用程序上部署具有 Elastic Observability 的 Hello World Web 应用程序
作者:Jonathan Simon Elastic Observability 是提供对正在运行的 Web 应用程序的可见性的最佳工具。 Microsoft Azure 容器应用程序是一个完全托管的环境,使你能够在无服务器平台上运行容器化应用程序,以便你的应用程序可以扩展和缩减。 这使…...

JAVA排序
再看各种排序前我们先了解一下什么叫 稳定性 比如一组数据arr[i]下标与arr[j下标]相等,arr[i]在前面,arr[j]在arr[i]后面,排序后这两个数据仍然是arr[i]在arr[j]前面,arr[j]在arr[i]后面,这就叫稳定 插入排序: 优势: 越有序查找速度越快 时间复杂度: O(N^2) 空间复…...

opencalib中lidar2camera安装记录
目录 一、opencalib安装 二、lidar2camera的安装 三、测试运行 四、出现过的问题 一、opencalib安装 代码地址:https://github.com/PJLab-ADG/SensorsCalibration/blob/master/README.md # pull docker image sudo docker pull scllovewkf/opencalib:v1 # Aft…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...