📹 第十章 GB/T 28181协议原理
📄 一句话概括

域、平台、设备、通道,是一条单向的链,不是四个并列的词。 上级平台看到的永远是「通道」,不是「设备」。

📝 本节和前面几节的关系

上一节说清了国标是「平台到平台」。 这一节把那几个天天出现的词摆正位置,否则后面读流程会一路读错。 Demo 用一棵四层的树把它们的关系画出来,并数一数各级的数量。

一、四层:域、平台、设备、通道

「SIP 监控域」是最大的一个圈,它用 10 位域号标识,同一个域里的设备共享一套编号规则。 域下面是平台,平台自己也有一个 20 位编号。 这一点最容易漏:很多人以为编号只给设备,其实平台、通道、甚至虚拟组织都有编号。 平台下面是设备,一台物理机器一个编号。设备下面是通道,通道才是真正出流的那一路。 为什么要把「设备」和「通道」分开:因为一台 NVR 有十六个通道, 它本身不出流,出流的是它下面挂的那十六台摄像机。 如果在协议里只认设备,上级就永远只能拿到「一路」,这显然不对。

二、编号里的类型段说明一切

国标的 20 位编号里,第 11 到 13 位是「类型编码」,它直接说明这个东西是什么:

类型码 是什么
200 平台(SIP 服务器)
131 摄像机
132 网络录像机
118 报警主机

这一段在排障时非常有用:看到 200 就知道这是个平台,它不该出现在「设备列表」里; 看到 132 就知道「它下面还挂着通道」。 所以「设备在线但通道不在线」是常态——NVR 那台机器通着,但它下面某台摄像机的网线掉了。 只看设备状态会得出「一切正常」的错结论。

三、动手 Demo:四个词,一条从平台到镜头的链

用一棵四层的树把关系摆出来,再数一数域、平台、设备、通道各几个。

tree = {"域 3402000000": {
    "平台 34020000002000000001": {
        "NVR 34020000001320000001": {
            "通道 34020000001320000001": {},
            "通道 34020000001320000002": {},
        },
        "IPC 34020000001320000009": {
            "通道 34020000001320000009": {},
        },
    },
}}

def walk(node, depth):
    for k, v in node.items():
        print("  " * depth + k)
        walk(v, depth + 1)

walk(tree, 0)

实跑输出:

--------------------------------------------------------------------
四个词,一条从平台到镜头的链
--------------------------------------------------------------------
**国标里最容易被混的四个词是「域、平台、设备、通道」**,**它们的关系是一条单向的链,不是并列的。**

SIP 监控域 3402000000
  └─ 下级平台 34020000002000000001
    └─ 设备(NVR)34020000001320000001
      └─ 通道 1 34020000001320000001
      └─ 通道 2 34020000001320000002
    └─ 设备(IPC)34020000001320000009
      └─ 通道 1 34020000001320000009

  层级             数量      说明
  --------------------------------------------------
  **监控域**       **1**     **一个 10 位域号**
  **下级平台**     **1**     **自己也是 20 位编号**
  **设备**         **2**     **一台物理机器**
  **通道**         **3**     **真正出流的那一路**

**第二行最容易漏**:**下级平台本身也有一个 20 位编号**,
**而且它的编号规则和设备的编号规则是同一套**。**
**所以那串编号里的 `200` 段,说的是「我是一个平台」**,**而不是「我是一台摄像机」。**

**第四行是排障时最要紧的一条**:**上级平台看到的永远是「通道」,不是「设备」。**
**一台 NVR 有十六个通道,在目录里就是十六条记录**,**而 NVR 本身那条记录只是「载体」。**
**所以「设备在线但通道不在线」是常态**——**NVR 通着,但它下面那台摄像机的网线掉了。**

树一画出来,「通道比设备多」就一眼看得见。 三个通道挂在两台设备下面,而上级平台的目录里取的是三个通道,不是两台设备。 编号也能读出层级:平台的编号里带 200,NVR 带 132,摄像机带 131, 于是「这个号是干什么的」不用查表就能猜。 这是国标编号设计得比 ONVIF 好的地方——ONVIF 那边每个设备只有一个 URL,什么信息都不带。 但要小心一处:通道编号和它所属的设备编号可能长得一模一样, 比如那台 IPC 和它唯一的通道后半段完全相同。 这在单通道设备上是正常的,而多通道设备(NVR)就用末尾序号区分。

30 秒实验

  1. 算一下:一台 16 路 NVR 在目录里占几条记录?(16 条通道加设备本身,但上级通常只取通道)
  2. 想一下:为什么类型码 200 不该出现在设备列表里?
  3. 想一下:「设备在线通道离线」是怎么发生的?

常见误区

  1. 以为「平台没有编号」。 平台也有 20 位编号,而且类型段是 200。
  2. 以为「设备和通道是一回事」。 一台 NVR 下面十几个通道,出流的是通道。
  3. 以为「设备在线就是全好」。 通道可能单独掉线,排障要看通道状态。
自测三问(点开对答案) 1. 监控域、平台、设备、通道,谁在谁下面? —— **域包含平台,平台挂设备,设备下才是通道**。 2. 类型码 132 是什么? —— **网络录像机(NVR)**,它下面还会有通道。 3. 为什么上级只看通道? —— **通道才是真正出流的那一路**,设备只是载体。

下一节认缩写:一封报文里几十个缩略语,认不全就读不下去。

相关笔记