GB28181协议如何注册

news2024/11/27 19:57:40

前言

GB28181协议是视频监控领域的国家标准,本文将解析如何在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。

1.背景介绍

GB28181协议指的是国家标准GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。

  • 该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。GB28181协议信令层面使用的是SIP(Session Initiation Protocol)协议。
  • 流媒体传输层面使用的是实时传输协议(Real-time Transport Protocol,RTP)协议。
  • 因此可以理解为GB28181是在国际通用标准的基础之上进行了私有化定制以满足视频监控联网系统互联传输的标准化需求。本文旨在说明在FFmpeg中增加对GB28181协议的支持,使其可以与支持GB28181协议的设备进行通信与控制,实现设备的注册、保活以及流媒体的传输。

2.国标GB28181协议:信令流程

2.1 国标GB28181协议

GB28181协议会话通道实际上使用的是SIP协议,并且在SIP协议的基础之上做了些私有化处理。SIP是一个由IETF MMUSIC工作组开发的协议,作为标准被提议用于创建,修改和终止包括视频,语音,即时通信,在线游戏和虚拟现实等多种多媒体元素在内的交互式用户会话。

SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。

SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。

SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。

SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。在GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据, 经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输。GB28181协议中具体通信协议结构图如下图(通信协议结构图)所示:

 

会话通道中,注册、实时视音频点播、历史视音频的回放等应用的会话控制采用SIP协议IETF RFC3261中规定的REGISTER、INVITE等请求和响应方法实现, 历史视音频回放控制采用SIP扩展协议IETF RFC29765规定的INFO方法实现,前端设备控制、信息查询、报警事件通知和分发等应用的会话控制采用SIP扩展协议IETF RFC34287规定的MESSAGE方法实现。下面详细介绍下国标GB28181的注册。

2.2 国标28181:注册

注册指的是设备或系统进入联网系统时向SIP服务器(SIP UAS)进行注册登记的工作模式,在本文中FFmpeg即为一个SIP服务器,设备向FFmpeg发送注册请求,FFmpeg在接收到设备的注册请求后返回相应的回复消息,则完成设备注册流程。GB28181协议中基于数字摘要的挑战应答式安全技术进行注册流程如下图( 基本注册流程示意图)所示:

 注册流程描述如下:

  • SIP代理向SIP服务器发送Register请求;
  • SIP服务器向SIP代理发送响应401,并在响应的消息头WWW_Authenticate字段中给出适合SIP代理的认证体制和参数;
  • SIP代理重新向SIP服务器发送REGISTER请求, 在请求的Authorization字段给出信任书,包含认证信息;
  • SIP服务器对请求进行验证,如果检查出SIP代理身份合法,向SIP代理发送成功响应200OK,如果身份不合法则发送拒绝服务应答。

注册的请求消息内容范例如下

REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.137.11:5060;rport;branch=z9hG4bK1371463273
From: sip:34020000001320000003@3402000000;tag=2043466181
To: sip:34020000001320000003@3402000000
Call-ID: 1011047669
CSeq: 1 REGISTER
Contact: sip:34020000001320000003@192.168.137.11:5060
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0

 注册请求头域参数解释如下:

第1行表明这条SIP消息的方法(Method)是REGISTER,34020000002000000001是SIP服务器的国标ID,国标ID指的是由中心编码(8位) 、行业编码(2位) 、类型编码(3位)和序号(7位)四个码段共20位十进制数字字符构成,具体国标ID的编码方法可以参考GB/T 28181—2016中的附录D。3402000000指的是SIP服务器的域国标ID,SIP/2.0指的是SIP协议版本。 
第2行为Via头,Via头中包含了发送请求方的相关信息,后续需要使用这些信息进行回复。SIP/2.0/UDP表示使用的是2.0版本的SIP协议,使用的传输协议是UDP,也可以使用TCP协议。192.168.137.11:5060为请求发送方的IP地址和端口号。Via头中必须包含branch参数,具体值是一个在整个SIP通信过程中不重复的数值。branch是一个事务ID(Transaction ID),用于区分同一个UA所发起的不同Transaction,它不会对未来的request或者是response造成影响,对于遵循IETF RFC3261规范的实现,这个branch参数的值必须用”z9hG4bK”打头. 其它部分是对To, From, Call-ID头域和Request-URI按一定的算法加密后得到。rport字段表示使用rport机制路由响应,即发送的响应时,按照rport中的端口发送SIP响应,也就是说IP和端口均完全遵照从哪里来的,发回哪里去的原则,如果没有rport字段时,服务端的策略是IP使用UDP包中的地址,即从哪里来回哪里去,但是端口使用的是via中的端口,详情见IETF RFC35818。  
第3行为From头,From头中包含了请求发送方的逻辑标识,在GB28181协议中是发送请求的设备国标ID和域国标ID信息。tag参数是为了身份认证的,值为随机数字字符。  
第4行为To头,To头在SIP协议中是为了标明请求接收方的逻辑标识的,在GB28181协议中填写的是发送请求的设备国标ID和域国标ID信息。  
第5行为Call-ID头,Call-ID头是全局唯一的,在同一个session中保持一致,在不同session中不同。  
第6行为CSeq头,CSeq头又叫Command Seqence(命令队列),用于标识命令顺序,值为序号+Method,序号部分为无符号整数,最大值为2^31。序号起始值是随机的,后续在同一个session中依次递增,比如发1 REGISTER没返回--->再发2 REGISTER--->没返回--->再发3 REGISTER--->这时返回了2 REGISTER就知道是第2个请求得到了响应。对于ACK和CANCLE中的CSeq与INVITE中的Cseq保持一致。  
第7行为Contact头,Contact头包含源的URI信息,用来给响应消息直接和源建立连接用。在GB28181协议中为SIP设备编码@源IP地址端口。  
第8行为Max-Forwards头,Max-Forwards头用于设置包最大中转次数,默认是70。  
第9行为User-Agent头,User-Agent头用于设置关于UA的信息,用户可以自定义。  
第10行为Expires头,Expires头表示超时时间。  
第11行为Content-Length头,Content-Length头表示SDP消息的长度,因为REGISTER消息不需要SDP,因此为0。

 注册的回复消息内容范例如下,各头信息含义见上面:

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.137.11:5060;rport;branch=z9hG4bK1371463273
From: sip:34020000001320000003@3402000000
To: sip:34020000001320000003@3402000000
CSeq: 1 REGISTER
Call-ID: 1011047669
Contact: sip:34020000001320000003@192.168.137.11:5060
User-Agent: FFmpeg GB28181 v1.0
Expires: 3600
Content-Length: 0

交流联系:

视频管理平台 http://houhangkeji.com/

QQ技术交流群:698793654

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

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

相关文章

S/4 HANA 中的 Email Template

1 如何创建Email Template? 没有特定的事务用于创建电子邮件模板,我们可以将其创建为 SE80 事务中的存储库对象,如下所示: 1,选择包(或本地对象)并右键单击。 2,选择“创建”->“更多”->“电子邮件模板” 尽管如此,对于已有的Email Template,可以使用程序…

音视频开发:音频编码原理+采集+编码实战

原理: 消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上;去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽;频域遮蔽效应 屏蔽70分贝以下&#xff0…

【QT】仿函数

函数调用运算符 () 也可以重载由于重载后使用的方式非常像函数的调用&#xff0c;因此称为仿函数仿函数没有固定写法&#xff0c;非常灵活 示例&#xff1a; #include <iostream> #include <string> using namespace std;class MyPrint { public://重载的运算符是…

MFC网络编程-Udp客户端

目录 1、UI的设计&#xff1a; 2、代码的实现&#xff1a; &#xff08;1&#xff09;、重写CSocket虚函数OnReceive&#xff0c;并且传入对话框的指针 &#xff08;2&#xff09;、初始化SOCKET &#xff08;3&#xff09;、绑定本地IP和端口 &#xff08;4&#xff09;、…

Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273)解决方法

前言&#xff1a; 在一次漏洞扫描中&#xff0c;扫描出紧急漏洞Microsoft SQL Server 缓冲区错误漏洞(CVE-2018-8273) 根据修复建议找补丁。 一、漏洞详情 二、寻找补丁 根据漏洞修复建议去下载补丁 目前厂商已发布升级补丁以修复漏洞&#xff0c;补丁获取链接&#xff1a;h…

龙迅视频转换IC LT6711GX适用于HDMI2.1转TPYE-C/DP1.4/EDP功能应用

1.描述 应用功能&#xff1a;LT6711GX适用于HDMI2.1转TPYE-C/DP1.4/EDP 分辨率&#xff1a;最高支持8K30HZ或8K60Hz压缩数据 工作温度范围&#xff1a;−40C to 85C 产品封装&#xff1a;QFN88 &#xff08;10*10&#xff09; 最小包装量&#xff1a;1680PCS 2.产品应用市场 •…

【JMeter】线程组分类以及功能介绍

1.概念介绍 进程&#xff1a; 正在运行的程序&#xff0c;比如Jmeter 线程组&#xff1a;进程中有多个线程 2线程组分类 JMeter自带的线程组&#xff1a; 普通线程组&#xff08;Thread Group&#xff09;开始线程组&#xff08;setUp Thread Group&#xff09;结束线程…

绝对好用!一个浏览器插件解决跨设备同步问题,吊打文件传输助手!

在数字化的时代&#xff0c;我们所接触的信息呈现指数级的增长。无论是办公资料、学习资源&#xff0c;还是各种生活中的点滴&#xff0c;所有这些信息以各种形式——文本、图片、视频、音乐等——出现在我们面前&#xff0c;如何有效地同步和管理这些内容成为一个挑战。 就跨…

PhotoFoundry for Mac:图片滤镜编辑软件的终极进化!

如果你是一个摄影师&#xff0c;或者是一个热衷于使用图片编辑软件的人&#xff0c;那么PhotoFoundry for Mac将会是你的新最佳伙伴&#xff01;这款软件不仅具备了强大的图片滤镜编辑功能&#xff0c;更在操作简易度、用户体验以及创意控制方面做到了极致。 PhotoFoundry for…

大华智慧园区综合管理平台文件上传漏洞(CVE-2023-3836)

大华智慧园区综合管理平台文件上传漏洞 漏洞描述漏洞危害Fofa检索漏洞复现1. 构造poc2. 复现3. 访问shell地址 漏洞描述 大华智慧园区综合管理平台是一个基于智能物联技术的园区安防、办公、运营的数字化解决方案。 大华智慧园区综合管理平台(截至 20230713)版本中存在文件上传…

vim三种模式,文本操作(操作字符/光标,列出行号可视化块模式/多文件查看)

目录 vim--文本编辑器 功能 基本概念 命令/默认模式 插入模式 底行模式 文本操作 引入 移动光标位置 删除字符 -- x/dd 复制/粘贴字符 -- yw/yyp 替换文本 -- r / %s 底行模式 全局替换 -- /g 撤销操作 -- u / ctrlr 修改字符 -- cw 示例 跳行 -- ctrlg 底行…

uniapp原生插件之无预览静默拍照

插件介绍 无预览静默拍照&#xff0c;在用户无感觉情况下调用摄像头拍照 插件地址 无预览静默拍照 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 插件申请权限 存储卡读写权限摄像头权限 manifest.json权限列表 /* android打包配置 */"android" : {…

ps提示vcruntime140.dll无法继续执行此代码的多种解决方法分享

我在安装Photoshop软件时遇到了一个问题&#xff0c;即在运行过程中弹出了一个错误提示框&#xff0c;显示“由于找不到vcruntime140.dll&#xff0c;无法继续执行此代码”&#xff0c;我通过查找资料了解到vcruntime140.dll是一个动态链接库文件&#xff0c;它是Visual C Redi…

MySQL主从复制---一主一从配置过程

1、mysql版本一致且后台以服务运行 2、主从都配置在[mysqld]结点下&#xff0c;都是小写 3、主机修改my.ini配置文件 配置信息说明&#xff1a; 1、主服务器唯一ID server-id1 2、启用二进制日志 log-bin自己本地的路径/data/mysqlbin log-binD:/devSoft/MySQLServer5.5…

自动化混沌工程 ChaosMeta V0.6 版本发布

混沌工程 ChaosMeta 的全新版本 V0.6.0 现已正式发布&#xff01;该版本包含了许多新特性和增强功能&#xff0c;在编排界面提供了包括流量注入、度量等各类节点的支持&#xff0c;可视化支撑演练全流程。解决混沌工程原则中“持续自动化运行实验”的最后一公里问题。 简介 Ch…

Spring Security认证:获得认证、持久化认证模块详解

参考&#xff1a;认证 :: Spring Security Reference (springdoc.cn) 本文将讲述Spring Security中与认证相关的各个基本模块&#xff0c;力求对整个认证框架提供完善的认知。 众所周知&#xff0c;认证Authentication实际上就是一个代表身份的类&#xff0c;实例就是具体的身…

第一章 01Java入门-常见的CMD命令

前言 学习常见的CMD命令 一、常见的CMD命令 常见的CMD命令主要包括切换盘符、查看当前路径下的内容、进入单级目录、回到上一级目录、进入多级目录、回退到盘符目录、清屏以及退出命令提示符窗口等。 二、代码演示 先从默认的C盘符切换到E盘符(E:),然后再查看E盘符下面的…

Redis的四种部署方案

这篇文章介绍Reids最为常见的四种部署模式&#xff0c;其实Reids和数据库的集群模式差不多&#xff0c;可以分为 Redis单机模式部署、Redis主从模式部署、Redis哨兵模式部署、Cluster集群模式部署&#xff0c;其他的部署方式基本都是围绕以下几种方式在进行调整到适应的生产环境…

【C++】多态 ⑩ ( 不建议将所有函数都声明为 virtual 虚函数 | 多态的理解层次 | 父类指针和子类指针步长 )

文章目录 一、不建议将所有函数都声明为 virtual 虚函数二、多态的理解层次三、父类指针和子类指针步长 对象可以直接获取到自身封装的 普通函数 , 如果要访问虚函数 , 需要增加一次寻址操作 , 因此 这里建议不需要将有 多态 需求的函数声明为 虚函数 ; C 中 指向某类型对象的…

有什么好用的仓库配件管理软件?如何实现企业配件管理智能化?

在当今高度信息化的商业环境中&#xff0c;企业运营的效率和管理的重要性日益凸显。对于许多企业来说&#xff0c;仓库配件管理是一个关键的环节&#xff0c;它不仅涉及到物品的存储和分发&#xff0c;还与企业的成本控制和运营流程紧密相关。然而&#xff0c;管理仓库配件是一…