GB28181协议之录像回放

article/2025/9/19 15:36:23

目录

一、概述

二、录像文件播放

2.1 基本要求

2.2 命令流程

2.3 抓包示例

2.3.1 Invite请求[SIP服务器---->设备]

2.3.2 Invite应答[设备---->SIP服务器]

2.3.3 ACK[SIP服务器---->设备]

2.3.4 Bye结束回放

2.3.5 Bye应答

2.3.6 播放速度控制

2.3.6 控制应答

三、国标平台介绍


一、概述

近年来,国内视频监控应用发展迅猛,系统接入规模不断扩大,涌现了大量平台提供商,平台提供商的接入协议各不相同,终端制造商需要给每款终端维护提供各种不同平台的软件版本,造成了极大的资源浪费。各地视频大规模建设后,省级、国家级集中调阅,对重特大事件通过视频掌握现场并进行指挥调度的需求逐步涌现,然而不同平台间缺乏统一的互通协议。在这样的产业背景下,基于终端标准化、平台互联互通的需求,GB/T28181应运而生。 GB28181标准规定了公共安全视频监控联网系统(以下简称联网系统) 的互联结构, 传输、 交换、 控制的基本要求和安全性要求, 以及控制、 传输流程和协议接口等技术要求。
 

二、录像文件播放

2.1 基本要求

录像文件回放应采用SIP协议的INVITE方法实现会话连接,采用SIP协议的Info方法的消息体携带音视频回放控制命令,采用RTSP/RTCP协议实现流媒体的传输。媒体回放控制采用引用MANSRTSP协议中的Play,Pause,Teardown的请求消息和应答消息,具体见附录B(详见后续会有网络抓包示例)。

同时回放流媒体会话宜支持附录M的规定流媒体保活机制。(通俗来讲就三点:

1:视频回放双方应具备流媒体丢失监测能力,可以通过RTCP定时监测,监测到会话丢失应发送Bye消息通知对方;

2:在监测到会话双方设备离线时,应支持对流媒体会话进行资源清理

3:在上面二个条件都没监测到时,通过Invite中Subject头域进行判断,如果是同一个媒体请求的同一个摄像头会话时,需要清理之前已打开的流媒体会话,按新的Invite请求打开回放

2.2 命令流程

客户端主动发起视频回放,流程图见下:

具体的流程步骤可参见GB28281协议文档(●'◡'●),在视频播放得过程中可对会话发送暂停、快进、恢复播放等消息。

PS:在实际实现过程中,GB28181文档中客户端和第三方呼叫历史视频回放通讯流程和步骤也不一定完全得照搬照抄,从Client到SIP服务器中,每个平台一般都由自己得通讯协议,但是SIP服务器和设备之间的通讯步骤就得完全按照GB28181协议来实现了,不然就不符合规范通讯不了。

2.3 抓包示例

2.3.1 Invite请求[SIP服务器---->设备]

INVITE sip:34020000001310000029@192.168.5.30:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.3.23:9205;rport;branch=z9hG4bK1544485539
From: <sip:34020000002000000001@3402000000>;tag=31260752
To: <sip:34020000001310000029@192.168.5.30:5060>
Call-ID: 2038114978
CSeq: 20 INVITE
Contact: <sip:34020000002000000001@192.168.3.23:9205>
Content-Type: application/sdp
Max-Forwards: 70
User-Agent: LiveMedia
Subject: 34020000001310000029:1000000001,34020000002000000001:1000000001
Content-Length:   268v=0
o=34020000002000000001 0 0 IN IP4 192.168.3.23
s=Playback
u=34020000001310000029:0
c=IN IP4 192.168.3.23
t=1667584166 1667597055
m=video 34000 RTP/AVP 96 98 97
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
y=1000000001

2.3.2 Invite应答[设备---->SIP服务器]

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.3.23:9205;rport=9205;branch=z9hG4bK1544485539
From: <sip:34020000002000000001@3402000000>;tag=31260752
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1850760574
Call-ID: 2038114978
CSeq: 20 INVITE
Contact: <sip:34020000001310000029@192.168.5.30:5060>
Content-Type: application/SDP
User-Agent: Embedded Net DVR/NVR/DVS
Content-Length:   287v=0
o=34020000001180000500 0 0 IN IP4 192.168.5.30
s=Playback
c=IN IP4 192.168.5.30
t=1667612966 1667625855
m=video 63154 RTP/AVP 96
a=sendonly
a=rtpmap:96 PS/90000
a=username:34020000001180000500
a=password:12345678
a=filesize:1063854276
y=1000000001
f=v/2/6/25/1/4096a///

2.3.3 ACK[SIP服务器---->设备]

ACK sip:34020000001310000029@192.168.5.30:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.3.23:9205;rport;branch=z9hG4bK1245214036
From: <sip:34020000002000000001@3402000000>;tag=31260752
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1850760574
Call-ID: 2038114978
CSeq: 20 ACK
Contact: <sip:34020000002000000001@192.168.3.23:9205>
Max-Forwards: 70
User-Agent: LiveMedia
Content-Length: 0

2.3.4 Bye结束回放

BYE sip:34020000001310000029@192.168.5.30:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.3.23:9205;rport;branch=z9hG4bK994949627
From: <sip:34020000002000000001@3402000000>;tag=31260752
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1850760574
Call-ID: 2038114978
CSeq: 21 BYE
Max-Forwards: 70
User-Agent: LiveMedia
Reason: 
Content-Length: 0

2.3.5 Bye应答

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.3.23:9205;rport=9205;branch=z9hG4bK994949627
From: <sip:34020000002000000001@3402000000>;tag=31260752
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1850760574
Call-ID: 2038114978
CSeq: 21 BYE
User-Agent: Embedded Net DVR/NVR/DVS
Content-Length: 0

2.3.6 播放速度控制

INFO sip:34020000001310000029@192.168.5.30:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.3.23:9205;rport;branch=z9hG4bK1068345486
From: <sip:34020000002000000001@3402000000>;tag=334656844
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1014595445
Call-ID: 538786979
CSeq: 21 INFO
Contact: <sip:34020000002000000001@192.168.3.23:9205>
Content-Type: application/RTSP
Max-Forwards: 70
User-Agent: LiveMedia
Date: 2022-11-05T11:32:50.000
Content-Length:    33PLAY RTSP/1.0
CSeq:1
Scale: 2

2.3.6 控制应答

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.3.23:9205;rport=9205;branch=z9hG4bK1068345486
From: <sip:34020000002000000001@3402000000>;tag=334656844
To: <sip:34020000001310000029@192.168.5.30:5060>;tag=1014595445
Call-ID: 538786979
CSeq: 21 INFO
Contact: <sip:34020000001310000029@192.168.5.30:5060>
Content-Type: Application/RTSP
User-Agent: Embedded Net DVR/NVR/DVS
Content-Length:    65

三、国标平台介绍

 LiveMedia视频平台经过多年的研发和沉淀,已逐步完善了从前端多协议(海康、大华、GB28181、RTSP、ONVIF等)设备接入、视频(软硬兼容)转码、视频转发、平台级联等一系列功能并提供完善的API调用接口,目前已在城市建筑工地、国家电网、医疗AI、铁路局、农业大棚、园区监控、移动指挥等领域已有案例落地。

 

微信:

网址:www.houhangkeji.com

QQ技术交流群:698793654
 


http://chatgpt.dhexx.cn/article/PDfmAPrL.shtml

相关文章

GB28181协议之实时视频

目录 一、概述 二、实时视频 2.1基本要求 2.2命令流程 2.3抓包示例 2.3.1 Invite请求[SIP服务器----->设备] 2.3.2 Invite应答[设备---->SIP服务器] 2.3.3 ACK[SIP服务器----->设备] 2.3.4 Bye 2.3.5 Bye应答 三、国标平台介绍 一、概述 近年来&#xff0c;国…

GB28181协议--实时视音频点播(预览)

1、基本要求 根据《GB/T 28181 —2016》第9章关于实时视音频点播的描述&#xff0c;其内容如下&#xff1a; 实时视音频点播的SIP 消息应通过本域或其他域的SIP 服务器进行路由、 转发, 目标设备的实时视音频流宜通过本域内的媒体服务器进行转发。实时视音频点播采用SIP 协议…

GB28181协议--心跳

1、心跳介绍&#xff1a; 根据《GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求》9.6.1状态信息报送章节描述。 当源设备(包括网关、SIP 设备、SIP 客户端或联网系统) 发现工作异常时, 应立即向本 SIP 监控域的SIP服务器发送状态信息; 无异常时, 应定…

国标28181: 视频国标28181协议

国标的由来 GB28181国标解决平台与平台对接问题 比如A平台大连交警系统需要看B平台上海交警系统的视频。需要对接过来&#xff0c;实现调度视频。这时候需要知道他们取流的协议&#xff0c;各家厂商都自定义了一套协议&#xff0c;就很麻烦&#xff0c;因此国家就制定了GB28…

【C/C++】isalpha、islower、isupper、isalnum、isblank、isspace函数cctype / ctype.h头文件

isalpha、islower、isupper、isalnum、isblank、isspace这些函数都在<cctype>&#xff08;即C语言中的<ctype.h>&#xff09;的头文件里面&#xff0c;下图是它们所表示的范围&#xff1a; 总的来说就是&#xff1a; isalpha &#xff08;字母&#xff0c;包括大写…

细微之处见真章之StringUtils的isBlank函数细节解读

一、背景 技术群里有一个老铁分享了一段 commons-lang 的 StringUtils 工具类的代码&#xff1a; public static boolean isBlank(final CharSequence cs) {int strLen;if (cs null || (strLen cs.length()) 0) {return true;}for (int i 0; i < strLen; i) {if (Char…

字符串判空,isBlank 和 isEmpty 到底选那个?

字符串的判空&#xff0c;日常开发是经常要做的一种校验&#xff0c;common-lang包帮我们做了一些字符串判空的封装 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId> </dependency> 并对外提…

sbrk() 函数是干什么的?

brk和sbrk主要的工作是实现虚拟内存到内存的映射. 在GNU C中,内存分配是这样的: 每个进程可访问的虚拟内存空间为3G&#xff0c;但在程序编译时&#xff0c;不可能也没必要为程序分配这么大的空间&#xff0c;只分配并不大的数据段空间&#xff0c;程序中动态分配的空间就是从这…

ORACLE如何修改默认端口号

oracle在安装的的时候&#xff0c;除了可以默认端口号&#xff0c;也可以填入自定义的端口号。但是项目上会出现这样的情况&#xff0c;项目在进展时期&#xff0c;需要对数据库安全升级&#xff0c;首先要修改数据库的默认端口号。那如何来设置oracle的默认端口号&#xff0c;…

Oracle如何更改端口号

Oracle默认端口号为8080&#xff0c;因为Tomcat端口默认也是8080所以需要把Oracle端口更改一下&#xff0c;不建议更改Tomcat端口号 运行cmd命令行操作 查看Oracle版本&#xff1a; 链接Oracle数据库&#xff1a; conn system/root as sysdba&#xff0c;system/root用户名和…

Oracle 19c中默认端口

Oracle官网https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/port-numbers-and-protocols-of-oracle-components.html#GUID-D168F70C-BECE-4F9A-B616-D9103A35F1FFhttps://www.cndba.cn/hbhe0316/article/87226https://www.cndba.cn/hbhe0316/article/872…

oracle 数据库改端口

Oracle 11g修改默认端口1521为其他值 1、修改listener.ora 打开文件D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora&#xff0c;修改PORT 后的数值&#xff0c;如下图 修改listener.ora文件 2、重启TNSListener服务 在Windows服务中重启OracleOr…

如何查看oracle的服务端口号

查看 oracle服务端口的步骤&#xff1a; 按住WinR键&#xff0c;弹出DOS命令窗口。 输入cmd命令&#xff0c;点击确定。 弹出的DOS窗口中&#xff0c;i输入 lsnrctl status 命令&#xff0c;并点击Enter键。 找到窗口中&#xff0c;以下文字‘监听端点概要 (DESCRIPTION…

JUC是什么?

JUC表示什么 JUC是java.util.concurrent包的缩写&#xff0c;其包结构如下。 JUC框架结构 JUC是包的简称&#xff0c;JUC可能也是Java核心里最难的一块儿&#xff0c;JUC指的是Java的并发工具包&#xff0c;里边提供了各种各样的控制同步和线程通信的工具类。学习JUC之前&a…

JUC总结系列篇 (二) : 对线程的理解和使用总结

文章内容&#xff1a; 一.为什么需要多线程 二.线程的创建 三.线程的方法sleep(),run(),wait(),yeid(),join(),interrupt()等方法归纳总结 四.线程的状态及其转换 五.线程的交替执行案例 六.多个线程依次执行案例 七.多线程并发带来的线程安全问题 一.为什么需要多线程&#x…

JUC源码系列-ReentrantReadWriteLock

继承关系 ReadLock和WriteLock是ReentrantReadWriteLock的两个内部类&#xff0c;Lock的上锁和释放锁都是通过AQS来实现的。 AQS定义了独占模式的acquire()和release()方法&#xff0c;共享模式的acquireShared()和releaseShared()方法。 还定义了抽象方法tryAcquire()、tryA…

了解JUC

高级技术之 JUC 高并发编程 内容概览 1 、什么是JUC2 、Lock接口3 、线程间通信4 、集合的线程安全5 、多线程锁6 、Callable接口7 、JUC三大辅助类: CountDownLatch CyclicBarrier Semaphore8 、读写锁: ReentrantReadWriteLock9 、阻塞队列10 、ThreadPool线程池11 、Fork/…

juc系列(1)---进程,线程,并行,并发

目录 概述进程线程关系并发并行&#xff1a;同步异步&#xff1a;对比 概述 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU,数据加载至内 存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加…

JUC系列(九) CAS 与锁的理解

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️你好啊&#xff01;小伙伴&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#xff0c;擅…

JUC系列(四)

1、CAS 1.1、没有CAS之前&#xff0c;保证线程安全的方式 多线程环境不使用原子类保证线程安全&#xff08;基本数据类型&#xff09; public class T3 {volatile int number 0;//读取public int getNumber(){return number;}//写入加锁保证原子性public synchronized void…