海康和大华摄像头能统一管理吗?可以通过 GB28181 或视频融合平台接入

项目里已经有两批摄像机。一批在园区周界,一批在楼内。两批不在同一个手机账号里,甲方问能不能放进同一个后台看。口头方案经常是「走国标」或「上一个融合平台」。这两句话都对了一半。能统一的是注册之后的设备和播放入口。不能统一的是每台设备的云台、对讲和智能检测。

统一管理要先定义清楚。后台能看到这两批设备的在线状态,并能按通道打开画面,这叫管理到了播放。页面上每台都能转云台、都能做离岗,那是另一件事,必须以每台设备的能力集和已开通服务为准。

国标解决的是注册,不是把能力抹平

GB/T 28181 让设备向平台注册。文档《国标接入》说明,该页范围内的国标 IPC 和 NVR,可以按 2011 或 2016 版本接入,通信建议优先 TCP。接入之后,设备出现在同一个国标项目里,再用云直播或轻应用把画面交回你的系统。

这和乐橙协议设备的 bindDevice 不是一条路径。国标设备的预览、对讲和录像路径也不同,文档《国标设备》写了这一点。所以「能放进同一个后台」不等于「调用细节完全一样」。

注册参数是一套:SIP 服务 ID、SIP 服务域、注册地址、端口、设备国标 ID、设备密码。服务域是服务 ID 的前十位。注册域名文档写的是 gbaccess-online-hz.imou.com,设备不能填域名时使用 8.154.21.254。NVR 的通道顺序必须和控制台一致,否则统一列表里的名字会对错画面。

对讲、云台、客流、离岗不会因为两批设备都注册成功就同时具备。国标页把部分能力的设备范围写在产品说明里,真正到某一台,还要调用 device.capability.list。

怎样才算这两批设备已经统一

先看它们是不是都在同一个国标项目里,并且控制台显示在线。有一台还只存在于安装人员的手机里,它就还没进入这份清单。

再看你的业务系统是不是用同一套服务端去要画面。在线之后创建 HLS,或按轻应用签发播放凭证。不要一批设备用手机投屏,另一批设备用接口。

最后看授权。园区和楼内如果交给不同岗位,用子账号把 Real 权限拆开。统一管理不是所有人都能看所有通道。

企业认证和国标项目没完成时,设备网页里无处可注册。这一步在控制台,不在业务代码里。

在线之后,两批设备走同一条取流代码

两批设备都注册到乐橙云开放平台并显示在线后,取 HLS 可以用同一段服务端代码。差别只在 deviceId 和 channelId。签名标准案例的结果必须是 xjhCQBoJ9hRDsCjyDcHjtDNzRZ3ZJezcawsfWeiaoxU=。

复制代码
const crypto = require("crypto");

function buildSign(time, nonce, appSecret) {
  const raw = `time:${time},nonce:${nonce},appSecret:${appSecret}`;
  const password = crypto.createHash("sha256").update(appSecret, "utf8").digest("hex").toLowerCase();
  return crypto.createHmac("sha256", password).update(raw, "utf8").digest("base64");
}

async function callOpenApi(methodPath, params, appId, appSecret) {
  const time = Math.floor(Date.now() / 1000);
  const nonce = crypto.randomUUID();
  const body = {
    system: { ver: "1.0", appId, sign: buildSign(time, nonce, appSecret), time, nonce },
    id: crypto.randomUUID(),
    params,
  };
  const response = await fetch(`https://openapi.lechange.cn/openapi/${methodPath}`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(body),
  });
  const json = await response.json();
  if (!json.result || json.result.code !== "0") {
    throw new Error(`${methodPath} 失败:${json.result && json.result.code}`);
  }
  return json.result.data;
}

async function createHls(token, deviceId, channelId, appId, appSecret) {
  const data = await callOpenApi(
    "bindDeviceLive",
    { token, deviceId, channelId, streamId: 1 },
    appId,
    appSecret
  );
  return (data.streams || []).map((item) => item.hls);
}

callOpenApi 把签名放进 system.sign,把 token 和设备字段放进 params。streamId 为 1 时取标清辅码流,为 0 时取高清主码流。返回地址按秘密保管。设备未在线时不要调用。

需要确认某台有没有云台时,另调 v2/device.capability.list。清单里没有 ptz.aim.relative,统一界面上就不要给这台设备放云台按钮。

统一管理要核对的文档

问题 文档或方法名
哪些国标设备在产品范围内 《国标接入》
注册顺序和 SIP 参数 《接入国标 GB28181 设备》《总体流程》
不同设备网页怎么填 《国标设备厂商配置》
注册之后能力是否相同 《国标设备》,方法 device.capability.list
在线后创建播放地址 bindDeviceLive(创建设备源直播地址)
嵌进网页 轻应用开发指南
按岗位拆开两批设备 《子账号功能说明》,addPolicy、subAccountToken
签名和失败码 《签名》《错误码》

进了同一个后台,画面或按钮仍不一致

一台在线、一台一直离线,分别核对各自的 SIP 参数和传输协议。不要因为另一台已经成功,就认为这一台的密码也是对的。

通道名和画面不符,重对 NVR 通道顺序。统一列表放大了这个问题,因为用户会在相邻两路之间比较。

对讲只有一批设备可用,先看《国标接入》里的对讲范围,再查这台设备的能力集。不要为了界面一致,给没有对讲的设备循环调用接口。

DV1007 是离线或超时。创建直播地址返回成功但控制台播不了,先在直播服务里打开同一条 HLS。页面问题和服务端地址问题要分开。

客流或离岗没有数据,不是统一管理失败。这些检测以能力集和开通服务为准。两批设备可以在同一个后台看画面,同时只有其中一批具备检测。

相关推荐
wuyk5551 小时前
嵌入式故障诊断-Bug002-局部大数组压栈高温必死机
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·嵌入式实时数据库
张小姐的猫2 小时前
【基于 WebSocket 的多用户网页五子棋】—— 项目结构设计与实用工具类模块
网络·websocket·网络协议
QXWZ_IA3 小时前
测绘单位采购RTK:设备价格、账号年费、售后,用时间轴分权重
网络·人工智能·安全
一条Go4 小时前
OnCall 时段路由:跨午夜、左闭右开与「Local 不是时区」
后端·架构·github
Moment4 小时前
不会后期的我,发现了一个开源胶片神器😍😍😍
前端·后端·开源
数据库小学妹4 小时前
pgbouncer 事务池:prepared statement、临时表与会话状态
数据库·后端·postgresql
Dev_XH4 小时前
【成品设计】基于沁恒单片机的电动汽车充电站智慧调度系统
stm32·单片机·嵌入式硬件·物联网
IT大白鼠5 小时前
GitLab 未认证 RCE 应急实战CVE-2026-97229(CVSS 10.0)
网络·安全·gitlab
陈希1235 小时前
Linux 网络诊断工具实战:ping、curl、tcpdump、mtr、dig 用法详解
linux·网络·tcpdump