GB28181教程——国标级联
国标级联就是指两个平台之间通过级联的方式,实现上级平台对下级设备的控制和视频播放等功能。简而言之,让基层的设备能够在上级、上上级、上上上级等各个地方都能看到。
也就是说,级联的平台起到中转的作用,接受上级的SIP指令然后转发给下级设备,同时将下级的视频流转发给上级,框架图如下:

说白了,就是你的平台既要支持设备的接入,同时还要“模拟”设备,让上级平台接入。也就是要实现以下功能:平台注册、目录更新、事件发布(告警、设备移动、离线等)。
一、级联注册和普通设备注册的 5 个核心区别
| 项目 |
普通设备注册 |
级联注册(下级平台向上级注册) |
| 注册的 DeviceID |
20位通道ID(13开头) |
20位平台ID(20开头) |
| 注册频率 |
3600秒一次 |
600秒一次(2016)或 300秒一次(2022推荐) |
| Keepalive方式 |
90秒 MESSAGE Keepalive |
必须同时支持 REGISTER 续约 + MESSAGE Keepalive |
| Catalog 上报 |
上报自己的通道 |
上报自己 + 下级所有通道(递归合并) |
| 点播方式 |
设备直推流 |
上级可以选择“透传”或“代答”(后面详细讲) |
二、目录订阅&通知(Subscribe&Notify)
1. 上级平台 → 下级/设备:发起事件订阅(Subscribe)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| MESSAGE sip:34020000001100000001@3402000000 SIP/2.0 Via: SIP/2.0/TCP 10.10.10.100:5060;branch=z9hG4bK7744145a Max-Forwards: 70 From: <sip:34020000002000000001@3402000000>;tag=sub20250316 To: <sip:34020000001100000001@3402000000> Call-ID: sub20250316-885522@10.10.10.100 CSeq: 20 MESSAGE Contact: <sip:34020000002000000001@10.10.10.100:5060> User-Agent: NationalPlatform v2.0 Content-Type: Application/MANSCDP+xml Content-Length: 512
<?xml version="1.0" encoding="GB2312"?> <Message> <CmdType>Subscribe</CmdType> <SN>20250316001</SN> <DeviceID>34020000001100000001</DeviceID> <SubscribeList> <Item> <DeviceID>34020000001100000001</DeviceID> <EventType>Catalog</EventType> <StartTime>2025-01-01T00:00:00</StartTime> <EndTime>2030-12-31T23:59:59</EndTime> </Item> <Item> <DeviceID>34020000001100000001</DeviceID> <EventType>Alarm</EventType> </Item> <Item> <DeviceID>34020000001100000001</DeviceID> <EventType>MobilePosition</EventType> <Interval>10</Interval> </Item> </SubscribeList> </Message>
|
(下级/设备)只需要回一个普通的 200 OK 即可:
1 2 3 4 5 6 7
| SIP/2.0 200 OK Via: SIP/2.0/TCP 10.10.10.100:5060;branch=z9hG4bK7744145a;received=10.10.10.100 From: <sip:34020000002000000001@3402000000>;tag=sub20250316 To: <sip:34020000001100000001@3402000000>;tag=resp2025 Call-ID: sub20250316-885522@10.10.10.100 CSeq: 20 MESSAGE Content-Length: 0
|
2. 下级/设备 → 上级平台:主动上报事件(Notify)
(1)移动侦测报警
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| MESSAGE sip:34020000002000000001@3402000000 SIP/2.0 Via: SIP/2.0/TCP 192.168.1.100:5060;branch=z9hG4bK11223344 Max-Forwards: 70 From: <sip:34020000001100000001@3402000000000>;tag=alm20250316 To: <sip:34020000002000000001@3402000000> Call-ID: alarm20250316-778899@192.168.1.100 CSeq: 888 MESSAGE Content-Type: Application/MANSCDP+xml Content-Length: 328
<?xml version="1.0" encoding="GB2312"?> <Notify> <CmdType>Alarm</CmdType> <SN>90001</SN> <DeviceID>34020000001310000001</DeviceID> <AlarmPriority>2</AlarmPriority> <AlarmMethod>VideoMotion</AlarmMethod> <AlarmTime>2025-03-16T14:30:25</AlarmTime> <Info> <AlarmDescription>移动侦测报警</AlarmDescription> </Info> </Notify>
|
(2)通道上线(Status=ON)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| MESSAGE sip:34020000002000000001@3402000000 SIP/2.0 Via: SIP/2.0/TCP 192.168.1.100:5060;branch=z9hG4bK55667788 ... Content-Type: Application/MANSCDP+xml Content-Length: 420
<?xml version="1.0" encoding="GB2312"?> <Notify> <CmdType>Catalog</CmdType> <SN>90002</SN> <DeviceID>34020000001100000001</DeviceID> <DeviceList Num="1"> <Item> <DeviceID>34020000001310000001</DeviceID> <Name>东门球机</Name> <Status>ON</Status> </Item> </DeviceList> </Notify>
|
(3)移动位置上报(车载/单兵)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| MESSAGE sip:34020000002000000001@3402000000 SIP/2.0 Via: SIP/2.0/TCP 192.168.1.100:5060;branch=z9hG4bK99AABBCC ... Content-Type: Application/MANSCDP+xml Content-Length: 380
<?xml version="1.0" encoding="GB2312"?> <Notify> <CmdType>MobilePosition</CmdType> <SN>90003</SN> <DeviceID>34020000001100000001</DeviceID> <Time>2025-03-16T14:35:00</Time> <Longitude>118.778800</Longitude> <Latitude>32.056700</Latitude> <Speed>58.5</Speed> <Direction>178</Direction> <Altitude>25</Altitude> </Notify>
|
(4)设备离线(DeviceStatus=OFFLINE)
1 2 3 4 5 6 7 8 9 10 11 12
| MESSAGE sip:34020000002000000001@3402000000 SIP/2.0 ... Content-Type: Application/MANSCDP+xml Content-Length: 220
<?xml version="1.0" encoding="GB2312"?> <Notify> <CmdType>DeviceStatus</CmdType> <SN>90004</SN> <DeviceID>34020000001100000001</DeviceID> <Result>OFFLINE</Result> </Notify>
|
上级平台收到任意 Notify 后,必须回 200 OK,否则设备会认为没送到而重发。