news 2026/8/22 11:43:39

GBHub 国标视频平台

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GBHub 国标视频平台

GBHub 国标视频平台:一款 Rust 实现的高性能 GB/T 28181 视频接入与分发平台
前言

最近在做一个视频监控相关的项目,需要将不同品牌、不同型号的摄像头统一接入和管理。调研了一圈,发现市面上的国标视频平台要么是商业闭源的,价格不菲;要么是基于 Java 或 Go 实现的开源方案,性能和资源占用上总觉得差点意思。

于是自己动手用 Rust 写了一个——GBHub 国标视频平台。

经过一段时间的开发和实际部署,目前已经稳定运行在生产环境中,接入了几百路摄像头。在这里把项目的设计和实现思路分享出来,希望对有类似需求的朋友有所帮助。

项目官网:https://gb.automate.org.cn

为什么选择 Rust?

在开始之前,先聊聊为什么用 Rust。

视频监控平台是一个典型的长时间运行、高并发、对稳定性要求极高的服务端程序。设备注册、心跳保活、信令处理、媒体流转发……任何一环出问题,都可能导致整个系统不可用。

Rust 的优势恰好匹配这个场景:

内存安全:没有 GC 停顿,不会因为垃圾回收导致请求延迟抖动 零成本抽象:高性能的同时保持代码的可维护性 强大的异步生态:Tokio 提供了高效的异步运行时,单机轻松支撑数万并发

实际测试下来,GBHub 的空闲内存占用不到 50MB,单机可以稳定承载 5 万+ 设备并发注册。
系统架构

GBHub 采用微服务架构,由三个核心服务和一套共享库组成:
服务 功能 端口
gbhub-mgr 管理服务器,提供 HTTP API 3002
gbhub-sip SIP 信令服务器 6060 (SIP) / 3003 (API)
gbhub-scheduler 定时任务调度器 无外部端口

管理服务(gbhub-mgr)统一对外提供 HTTP API,同时将未匹配的请求自动代理到 SIP 服务,对调用方来说就像是一个完整的服务。

定时任务调度器是独立运行的,每 30 秒扫描一次 Redis 中的任务配置,按 Cron 表达式触发截图、录制、清理等任务,不需要额外部署 cron。
核心功能

  1. 设备接入与管理

完整支持 GB/T 28181-2016 和 2022 标准,设备通过 SIP 协议注册接入。

实际测试中,海康、大华、宇视等主流厂商的 IPC 和 NVR 都可以正常接入。传输协议自动适配 UDP/TCP,注册认证支持 Digest 摘要认证(MD5 和 SHA-256 都支持)。

设备注册成功后,平台会自动查询 Catalog 获取通道列表,不需要手动配置。
2. 实时直播与回放

直播支持多种输出协议:
协议 延迟 适用场景
WS-TS < 1s 通用浏览器播放
WebRTC < 500ms 低延迟场景
HTTP-FLV / HLS 1-3s 移动端、兼容性优先

回放支持精确到秒的检索,播放过程中可以暂停、跳转进度。
3. 录像与转录

两个比较实用的功能:

自动录制:通过定时任务配置,按计划自动录制指定通道 录像转录:将设备的历史录像片段异步转录为 MP4 文件,支持去重和并发控制

转录功能在实际项目中帮了大忙——有些设备的录像格式不兼容,转录后统一为 MP4,方便归档和分享。
4. 级联与目录管理

支持作为下级平台向上级 SIP 域注册,也支持作为上级平台接收下级注册。

目录管理支持三种推送方式:

扁平列表:仅推送通道列表 行政目录:按省/市/区组织通道 业务目录:按业务分组(215/216)组织通道

通道可以绑定自定义名称,上级平台看到的目录树会更直观。
5. 定时任务

内置了 Cron 调度器,支持以下任务类型:

定时截图(snapshot) 定时录制(record) 清理残留会话(cleanup_sessions) 同步设备在线状态(sync_device_status) 清理过期录像(cleanup_media) 清理过期截图(cleanup_snapshot)

清理任务在实际运维中非常实用——录像文件占满磁盘是视频平台最常见的问题之一,配置一个每天凌晨执行的清理任务就能自动解决。
几个值得说的技术点
Redis 性能优化

早期版本使用 KEYS 命令和 SCAN 遍历 dev_info:* 来获取设备列表,设备数量超过 5000 后接口响应明显变慢。

后来改成了 Redis Set 维护全局索引:

all_devices:存储所有设备 ID,查询 O(1) cascade_ids:存储级联服务器 ID,启动恢复不再需要 KEYS cascade:*

优化后,设备列表查询延迟从几百毫秒降到了 1 毫秒以内。

连接池方面用了 deadpool-redis,解决了之前单连接断连需要重启服务的问题。
级联信令与媒体解耦

早期版本中级联实例创建时强制依赖 ZLM 在线,如果 ZLM 重启,级联实例就丢了。

后来做了改造:SipState 的 zlm 字段改为 Option,级联实例创建和恢复时不依赖 ZLM。INVITE 处理时再动态获取 ZLM 客户端。

这样 ZLM 重启不会影响级联注册状态,系统可靠性提升了不少。
反向索引

通道绑定用了两个 Hash:

channel_bindings:app:stream → 通道 ID(正向) channel_bindings_rev:通道 ID → app:stream(反向)

反向索引让级联场景下的流查找变成了 O(1) 常数时间,不用遍历查找。
部署体验

部署流程比较简单:

配置好 Redis、PostgreSQL/GreptimeDB、ZLMediaKit 创建 .env 文件,配置数据库连接、SIP 参数等 启动三个服务

项目提供了 systemd 服务配置模板,可以用 systemctl 管理服务生命周期。

授权方式采用的是 Ed25519 数字签名 + 硬件指纹绑定,授权文件 license.lic 放在服务目录下即可。
一些踩过的坑

设备注册失败:最常见的原因是 SIP 端口没开放(默认 6060),或者密码配置不一致。查看 logs/sip.log 可以快速定位。

流播放黑屏:一般有两种情况——ZLM 节点离线,或者设备端码率过高。前者检查 zlm_nodes:online 集合,后者在设备端降低码率试试。

录像转录超时:如果设备不支持回放或者时间范围内没有录像,转录任务会超时。建议先通过设备录像查询确认时间范围内有数据。
后续计划

Docker 镜像支持,进一步降低部署门槛 更多流媒体协议的支持 智能分析能力接入

总结

GBHub 是我在 Rust 国标视频平台方向的一次尝试,目前已经能够稳定支撑实际项目使用。如果你也在做视频监控相关的项目,或者对 Rust 在安防领域的应用感兴趣,欢迎交流。

项目官网:https://gb.automate.org.cn

在线演示:https://mgr.automate.org.cn(用户名 admin / 密码 admin123)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 11:43:37

React面试核心:Fiber架构与Hooks原理深度解析

1. 为什么React面试题如此重要&#xff1f;2026年的前端技术格局中&#xff0c;React依然占据着核心地位。根据最新的开发者调查报告显示&#xff0c;React在全球范围内的采用率高达78%&#xff0c;远超其他前端框架。这直接导致了一个现象&#xff1a;无论你是应届毕业生还是资…

作者头像 李华
网站建设 2026/8/22 11:43:13

AI辅助逆向工程:GPT-5.6与MCP协议如何重塑Web爬虫技术范式

你有没有遇到过这种情况&#xff1a;想从某个网站批量获取数据&#xff0c;但对方反爬虫机制层层加码&#xff0c;常规的请求头伪装、IP轮换、验证码识别都试了一遍&#xff0c;还是被精准拦截。你盯着那些动态加载、参数加密、逻辑混淆的JavaScript代码&#xff0c;感觉像是在…

作者头像 李华
网站建设 2026/8/22 11:42:26

TCP协议核心机制与C# Socket实战:从原理到高并发应用

这次我们来看一个网络通信中最核心的协议之一&#xff1a;TCP协议。无论你是刚入门网络编程的新手&#xff0c;还是需要排查线上连接问题的开发者&#xff0c;理解TCP都绕不开。它不仅仅是教科书里的概念&#xff0c;更是保证你写的程序能稳定收发数据的关键。 简单说&#xf…

作者头像 李华
网站建设 2026/8/22 11:39:48

基于SpringBoot的毕业设计选题系统:从需求到实现的全栈开发指南

每到毕业季&#xff0c;高校计算机相关专业的学生和指导老师都会面临一个共同的难题&#xff1a;如何高效、公平、透明地完成毕业设计选题工作。传统的线下选题方式&#xff0c;如纸质表格、邮件沟通或简单的Excel共享&#xff0c;往往伴随着信息不同步、选题冲突、流程混乱、数…

作者头像 李华
网站建设 2026/8/22 11:39:13

Harmony os 技术实战|拼豆制图32:三档格子尺寸如何统一编号图几何

标签&#xff1a;Harmony os、ArkTS、ArkUI、响应式布局、几何计算同一张 7070 图纸在拼豆制图里至少出现三次&#xff1a;编号页总览要看全局轮廓&#xff0c;展开页要读清每格色号&#xff0c;未来的内嵌图纸视口还要在有限高度里浏览。三种场景若共用一个格子尺寸&#xff0…

作者头像 李华
网站建设 2026/8/22 11:39:08

数学建模竞赛:从解题到建模的思维跃迁与实战指南

1. 项目概述&#xff1a;从“解题”到“建模”的思维跃迁 又到了一年一度的华为杯数学建模竞赛季&#xff0c;对于很多研究生同学来说&#xff0c;A题往往是那个最引人注目也最让人头疼的存在。它不像B、C题可能偏向某个具体应用领域&#xff0c;A题通常更综合、更开放&#xf…

作者头像 李华