国标GB/T 28181协议

理论

        GB/T 28181作为中国公共安全视频监控领域的核心国家标准,是一个基于国际标准协议进行定制化扩展的复杂技术体系。该协议在SIP、RTP等国际通用协议基础上,针对视频监控联网系统的特殊需求进行了深度优化和功能扩展,形成了完整的技术规范体系。本文将从协议栈架构、信令机制、媒体传输、设备控制等多个维度,深入解析GB28181协议的技术内核和实现机制。

技术架构与核心协议

系统架构设计

GB/T 28181采用了基于SIP监控域的分层架构设计,主要包括以下核心组件:

  1. SIP客户端:负责用户交互界面,具备注册登记、建立终止会话连接、接收播放视音频流等功能。
  2. SIP设备:包括网络摄像机、视频编解码设备、数字硬盘录像机等前端设备,具备注册、会话控制、媒体采集编解码和传送功能。
  3. 中心信令控制服务器:系统的核心组件,提供注册、路由选择、逻辑控制功能,包含代理服务器、注册服务器、重定向服务器等功能实体。
  4. 媒体服务器:提供实时媒体流转发服务、媒体存储、历史媒体检索和点播服务。
  5. 信令安全路由网关:负责域间信令路由、身份认证和安全控制,支持级联和互联两种组网方式。

多监测点、多中心的安全监控传输解决方案的多层网络架构图。  

通信协议体系

GB/T 28181建立了完整的通信协议栈,分为会话通道和媒体流通道两大类:

会话通道协议

  • SIP协议:基于IETF RFC 3261,负责设备注册、实时视音频点播、历史视音频回放的会话控制

  • SDP协议:基于IETF RFC 4566,用于会话建立过程中的会话协商和媒体协商

  • MANSCDP协议:监控报警联网系统控制描述协议,处理设备控制、报警信息、设备目录信息等

  • MANSRTSP协议:监控报警联网系统实时流协议,用于历史视音频回放控制

媒体流通道协议

  • RTP/RTCP协议:基于IETF RFC 3550,实现实时数据传输和流量控制

  • 媒体编解码:支持H.264、H.265、SVAC等视频编码,G.711、G.723.1、G.729等音频编码

媒体流发送方、接收方、SIP服务器和媒体服务器之间的SIP信令和实时多媒体流时序图。  

说明会话发起协议(SIP)呼叫流的图表,详细说明了会话建立、实时传输协议(RTP)媒体流和会话终止的消息。  

国标协议通信架构汇总 

协议栈架构与通信机制

双通道架构设计

GB28181协议采用了双通道分离的核心架构设计,将控制信令和媒体数据传输分别通过不同的通道进行处理,这种设计有效提升了系统的可扩展性和稳定性

        会话通道承载所有的控制信令交互,基于SIP协议构建,负责设备注册、会话建立、命令传输等控制功能。在SIP协议基础上,GB28181定义了三个关键的扩展协议:MANSCDP(监控报警联网系统控制描述协议)用于设备控制和信息查询,SDP(会话描述协议)用于媒体协商,MANSRTSP(监控报警联网系统实时流协议)用于历史视频回放控制

        媒体流通道专门负责音视频数据传输,基于RTP/RTCP协议实现。经过H.264/H.265视频编码和G.711/AAC音频编码的媒体数据,通过PS(Program Stream)封装后,采用RTP协议进行实时传输  

 GB28181协议栈架构图:展示会话通道和媒体流通道的分层结构

协议栈层次结构

        GB28181体现了标准化的网络协议分层设计理念。在传输层,协议支持UDP和TCP两种传输方式,其中UDP适用于实时性要求高的场景,TCP则提供更可靠的传输保障。

2016版本引入的TCP传输包括主动TCP和被动TCP两种模式进行推流(设备 → 平台),通过SDP中的setup参数进行协商。

  1. 主动TCP模式下,连接发起方:平台端(服务器)主动发起TCP连接
    1. 工作流程

    2. 设备端启动TCP监听端口

    3. 设备端在SDP描述中告知平台端监听的TCP端口信息

    4. 平台端收到INVITE响应后,主动向设备端发起TCP连接

    5. 连接建立后,设备端通过这个连接向平台端发送RTP视频流

    6. SDP标识:在SDP中包含a=setup:active属性

  2. 被动TCP模式下,连接发起方:设备端(客户端)主动发起TCP连接。
    1. 工作流程

    2. 平台端监听TCP端口

    3. 平台端通过INVITE信令告知设备端TCP端口号

    4. 设备端收到端口信息后,主动向平台端发起TCP连接

    5. 连接建立后,设备端通过这个连接向平台端传输码流

    6. SDP标识:在SDP中包含a=setup:passive属性

  3. TCP传输模式支持断线重连机制,重连间隔不少于1秒,重连次数不少于3次。

TCP传输遵循RFC4571标准,媒体数据以"长度+数据"的格式进行封装,前4字节为数据长度(网络字节序),后续为实际的RTP数据包。

        rfc4571 RTP OVER TCP格式
        0                   1                   2                   3
        0 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 ...       |
        ---------------------------------------------------------------


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

主动 TCP vs 被动 TCP

a=setup:active
a=setup:passive

SIP协议扩展与信令机制

SIP协议在GB28181中的定制化应用

SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。(参考链接1)这种架构使得GB28181能够充分利用SIP协议的成熟机制,如事务处理、路由选择、负载均衡等

信令交互流程与会话管理

设备注册与实时视频点播流程

设备注册是GB28181协议中的基础功能,采用标准的SIP注册流程但增加了监控系统特有的认证和保活机制。(详细参考链接3)

        注册流程遵循严格的时序要求:设备启动后主动向平台发送REGISTER请求,经过双次认证握手完成注册上线。注册成功后,设备需要定期发送OPTIONS方法的心跳消息维持在线状态,心跳间隔通常设置为60秒。如果平台在指定时间内未收到心跳消息,将认为设备离线并进行相应处理。
        刷新注册机制确保设备能够长期稳定在线。设备需要在注册过期前重新发送REGISTER请求刷新注册状态,刷新间隔通常为注册有效期的一半。如果刷新注册失败,设备应间隔一定时间(不少于60秒)后重新尝试完整的注册流程。

        媒体协商过程通过SDP协议实现,双方交换支持的编解码器、传输协议、网络地址等信息。协商成功后,客户端发送ACK确认消息,设备开始通过RTP协议向指定地址推送音视频流。整个过程严格遵循SIP会话建立的标准流程,但在SDP参数和媒体处理方面进行了监控系统的专门优化

        实时视频点播是GB28181协议的核心应用功能,通过INVITE方法建立媒体会话。客户端发送包含SDP媒体描述的INVITE请求,指定需要观看的设备通道和媒体参数。设备接收到请求后,进行媒体协商并返回200 OK响应,同时在SDP中描述自己支持的媒体格式和传输参数

上级网关:作为主数据平台,承担服务提供者的角色,接收和处理来自下级网关的数据

下级网关:作为子平台,承担数据推送者的角色,主动向上级平台推送数据

下级网关主动推送数据到上级网关,上级网关被动接收并处理数据。

GB28181信令流程简图

抓包验证,订阅信令需注意是插上电源线的时候触发,而不是视频入会。

设备控制命令系统

GB28181协议定义了丰富的设备控制命令体系,通过SIP MESSAGE方法实现各类设备操控功能。控制命令采用XML格式的MANSCDP协议进行封装,支持云台控制、录像管理、报警处理、设备配置等多种类型的操作。(参考链接4)

控制命令根据是否需要应答分为两类:

  1. 无应答命令包括PTZ控制、强制关键帧、拉框缩放等实时性要求高的操作,目标设备接收后立即执行,只返回SIP层面的200 OK确认。
  2. 有应答命令包括录像控制、报警布防、设备配置等需要执行结果反馈的操作,目标设备除了返回SIP确认外,还需要发送包含执行结果的应答消息。

PTZ控制与云台管理

云台控制是设备控制命令中最常用的功能,支持上下左右移动、变倍、变焦、光圈调节等操作。PTZ控制命令通过8字节的十六进制码进行编码,包含命令字、数据字节、校验位等信息。不同厂商的PTZ控制码可能存在差异,但GB28181规定了标准的命令格式和参数范围。

预置位管理允许用户设置、调用和查询云台预置位置。预置位命令包括设置预置位(PresetSet)、调用预置位(PresetQuery)、删除预置位等操作,每个预置位通过唯一的ID进行标识,支持最多255个预置位的管理

媒体传输协议与编码机制

国标编码体系

GB28181协议建立了完整的设备编码体系,采用20位十进制数字构成的统一编码规则。编码结构为:中心编码(8位)+ 行业编码(2位)+ 类型编码(3位)+ 网络标识(1位)+ 序号(6位)

  1. 中心编码采用GB/T2260行政区划代码,前6位表示省市区,后2位表示基层接入单位。
  2. 类型编码区分不同设备类型,如200表示中心服务器,132表示网络摄像机,216表示虚拟组织目录。
  3. 网络标识表示设备所在网络类型,如0-4为监控报警专网,5为公安信息网,7为Internet网等

MANSCDP消息结构协议采用XML格式定义控制命令和查询消息的结构。消息包含根元素、命令类型(CmdType)、序列号(SN)、设备ID(DeviceID)等基础字段,以及针对不同命令类型的专用参数。

        PS封装机制是GB28181协议的重要特色,音视频数据经过编码后需要按照PS(Program Stream)格式进行封装,然后通过RTP协议传输。PS封装提供了音视频同步能力,支持多路音视频流的复用传输。接收端需要先解RTP封装,再解PS封装,最后进行音视频解码播放

        GB28181协议的媒体传输基于RTP(Real-time Transport Protocol)协议实现,RTP协议提供了音视频数据的实时传输能力,包含时间戳、序列号、同步源标识等关键信息用于媒体同步和丢包检测。详细参考:RTSP RTP RTCP SDP基础知识_rtp rtsp-优快云博客

PS封装格式规范

GB28181要求音视频数据采用PS(Program Stream)格式封装。PS包由PS包头、系统头(可选)、系统映射表(可选)、PES包等组成。

PS包头长度为14字节,包含起始码(0x000001BA)、系统时钟参考(SCR)、多路复用速率、填充长度等字段。起始码用于包同步,SCR用于时钟恢复,多路复用速率表示系统比特率

1. 包头整体字节分布

字段长度(字节)描述
Pack start code4包起始码,固定为 0x000001BA,用以标识一个PS包的开始.
SCR(系统时钟参考)6由 SCR_base(33位)+ marker_bit (1位 始终置1 )+ SCR_ext(9位 SCR扩展,以27 MHz为单位,可提高同步精度 )+ marker_bit (1位 始终置1 )组成,用于同步.
Multiplex rate322位无符号整数,单位为400位/秒,指示目标解码器接收码率
Pack stuffing length + 保留位1前5位保留,后3位为填充长度,指示紧跟其后的填充字节数.
Stuffing bytes (可选)N填充字节,用于对齐或占位,长度由上一字段指定.

系统头长度为18字节,包含起始码(0x000001BB)、音视频流边界信息、缓冲区大小等参数。系统头仅在第一个PS包中出现

PES包用于承载实际的音视频数据,包含PES包头和ES数据。PES包头包含流ID(视频流为0xE0,音频流为0xC0)、包长度、PTS/DTS时间戳等信息

stream_id 区间含义
0xE0 – 0xEF视频流(通常 0xE0 表示第一路视频)
0xC0 – 0xDF音频流(0xC0 对应第一路音频,0xC1 第二路,以此类推)
0xBD私有数据(可能是字幕、智能信息等)

PS流结构(参考链接5)

包缩写全称作用说明
PSHPack HeaderPS包起始码,包含同步和时钟信息
SYSSystem Header系统控制头,码率和缓冲信息
PSMProgram Stream Map流映射表,描述PS中各PES流及其关系
PESPacketized Elementary Stream封装具体音视频数据的包,包含时间戳和编码数据

以上包的详细bit解析:

常见媒体格式与编解码解析--PS_ps流格式解析-优快云博客

常见stream_type字段值及其含义:

  • 0x10:MPEG-4 视频流

  • 0x1B:H.264(AVC)视频流

  • 0x80:SVAC 视频流

  • 0x90:G.711 音频流  在中国视频监控和国标协议中通常特指PCMA(G.711A-law,A律)

  •  0x91: G.711 U-law(PCMU)音频流

  • 0x92:G.722.1 音频流

  • 0x93:G.723.1 音频流

  • 0x99:G.729 音频流

  • 0x9B:SVAC 音频流

关键帧(I帧)封装

RTP包头 + PS包头(PSH) + 系统头(SYS) + 节目流映射表(PSM) + PES包头 + H.264数据(SPS+PPS+IDR)

 非关键帧(P/B帧)封装

 RTP包头 + PS包头(PSH) + PES包头 + H.264数据

音频帧封装

RTP包头 + PES包头 + 音频数据(如G711)

h264常见内存布局格式

H.264 start code 常放在SPS、PPS、IDR数据之前,但具体的使用有严格的规范要求。

  1. 对于AVCC格式,则是通过nalu.length作为开始部分,并且sps,pps放在全局数据externdata。
  2. Annex B格式中,NAL单元以起始码(start code)分隔,有两种形式 0x00 00 01 / 0x00 00 00 01。SPS和PPS必须使用4字节起始码

0x41 = 0b01000001
F | NRI  | Type
0 | 10   | 00001

H.264码流中的关键NAL单元类型:

NAL单元类型Start Code要求示例格式
SPS (类型7)4字节(强制)00 00 00 01 67
PPS (类型8)4字节(强制)00 00 00 01 68
IDR第一个slice (类型5)4字节(强制)00 00 00 01 65
IDR后续slice3字节(可选)00 00 01 65
普通帧第一个slice4字节(强制)00 00 00 01 41/61
普通帧后续slice3字节(可选)00 00 01 41/61
字节序列NAL头部二进制FNRIType说明
41 (0x41)0b01000001010(2)1非IDR图像slice,参考级别中等(NRI=2),常见P帧
61 (0x61)0b01100001011(3)1非IDR图像slice,参考级别较高(NRI=3),也是P帧

根据NAL头部的NRI字段,同一类型的NAL单元可能有不同的重要性标识:

起始码示例NRI值重要性等级典型用途
00 00 01 0100不重要B帧,可丢弃
00 00 01 2100不重要可丢弃的非IDR slice
00 00 01 4110中等重要P帧参考slice
00 00 01 6111高重要性重要参考slice
00 00 01 8110中等重要中等重要性slice

参考文献

GB28181国标平台资料整理 - 虚无境 - 博客园

gb28181信令流程简图 流程图模板_ProcessOn思维导图、流程图

GB28181协议常见几种信令流程(一)_28181 流媒体服务器信令流程-优快云博客

GB28181设备控制和TeleBoot远程启动命令探究 - 音视频牛哥 - 博客园

[图文]MPEG-2压缩编码技术原理应用(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值