GB28181 平台海量截图方案
版本:v2026.09 | 适用范围:gbhub 视频监控平台
一、功能简介
面向国标设备的海量截图方案,支持万级设备并发采集、毫秒级历史查询、多存储后端、跨级联多级部署。
- 基于 GB28181-2022 标准
CaptureCmd 指令
- 支持本地磁盘与 S3 对象存储双模式
- 历史截图持久归档,游标分页,随时回看
二、一句话价值
只看一张图,却要拉 30 秒视频流——用截图替代拉流,每次从 7.5 MB 降到 250 KB,节省 30 倍公网流量,服务器侧几乎零负载。
三、核心问题
3.1 传统方案:为一张图拉 30 秒流
上级想看下级某个通道的画面:
上级 → 公网 → 下级 ZLM 拉流(ZLM 最短保持 30 秒,2 Mbps)
用户只要一帧画面,却消耗了 30 秒的视频流带宽。
单次公网消耗:7.5 MB
3.2 本方案:只要图片
上级发 CaptureCmd → 下级从本地 ZLM 截图(内网 127.0.0.1,不计公网)→ 下级上传图片(公网 250 KB)
拉流在内网(不计成本),公网只传图片。
单次公网消耗:250 KB
3.3 对比
| 维度 |
视频流 |
截图 |
节省 |
| 传输内容 |
30 秒视频流 |
一张图 |
— |
| 单次公网消耗 |
7.5 MB |
250 KB |
30 倍 |
| 持续时间 |
30 秒 |
一次性突发 |
— |
| 网络路径 |
上级 → 下级(跨公网) |
下级 → 上级/OSS |
— |
四、带宽成本对比
4.1 公网是唯一成本项
| 网络 |
成本 |
承载 |
| 局域网(设备 ↔ ZLM ↔ sip) |
几乎免费 |
拉流、截图 |
| 公网 |
贵 |
图片出站 |
4.2 频率放大(1000 路)
| 采集频率 |
视频流/天 |
截图/天 |
节省 |
| 每小时 1 次 |
180 GB |
6 GB |
30 倍 |
| 每 30 分钟 |
360 GB |
12 GB |
30 倍 |
| 每 5 分钟 |
2.16 TB |
72 GB |
30 倍 |
| 每 1 分钟 |
10.8 TB |
360 GB |
30 倍 |
4.3 带宽成本估算(1000 路,每小时 1 张)
| 项 |
视频流 |
截图 |
差异 |
| 持续带宽需求 |
2 Gbps |
~50 Kbps(平均) |
三个数量级 |
| 峰值带宽需求 |
2 Gbps |
250 KB/s(突发) |
只需普通带宽 |
| 服务器公网套餐 |
百兆专线起 |
5 Mbps 足够 |
成本差 20 倍 |
| 月流量费(按量) |
万元级 |
百元级 |
视运营商资费 |
视频流需持续预留带宽,截图只需突发带宽——成本结构完全不同。
五、性能占用对比
5.1 服务器侧资源
1000 路、每小时采集 1 次:
| 资源 |
视频流 |
截图 |
差异 |
| 公网带宽 |
2 Gbps 持续 |
突发 250 KB/s |
三个数量级 |
| CPU |
视频转发 + 解封装 |
只转发命令 |
90%+ 降低 |
| 内存 |
每路缓冲 + 连接 |
只存索引 |
90%+ 降低 |
| 磁盘 I/O |
持续写入 |
只写索引 |
99%+ 降低 |
| 连接数 |
每路长连接 |
按需短连接 |
大幅降低 |
| Redis 内存 |
会话状态 |
~100 字节/条 |
可忽略 |
5.2 上级服务器负载
| 维度 |
视频流 |
本地模式 |
S3 模式 |
| 接收流量 |
2 Gbps 持续 |
250 KB/次 |
0 |
| 落盘 I/O |
高 |
中 |
0 |
| 磁盘占用 |
大 |
中 |
只存索引 |
| CPU |
视频转发 |
只处理信令 |
只处理信令 |
S3 模式下上级几乎零负载。
5.3 存储成本
| 场景 |
视频录像(30 天) |
截图(30 天) |
节省 |
| 1000 路 |
630 TB |
180 GB |
3500 倍 |
| 单路 |
630 GB |
180 MB |
3500 倍 |
5.4 并发能力
| 场景 |
服务器侧负载 |
| 100 路同时截图 |
忽略 |
| 1000 路同时截图 |
排队 1 秒消化 |
| 100 个历史查询并发 |
无压力 |
六、核心优势
6.1 带宽优势
| 维度 |
表现 |
| 公网消耗 |
每次从 7.5 MB 降到 250 KB |
| 上级出口 |
S3 模式零占用;本地模式只接收 |
| 可预测 |
按张计费,不受码率波动影响 |
| 无需求时 |
公网零流量 |
6.2 性能优势
| 维度 |
表现 |
| 历史查询 |
恒定 ~3ms |
| 查询规模 |
与图片总数无关(10 万张仍 3ms) |
| 服务器 CPU |
90%+ 降低 |
| 服务器内存 |
90%+ 降低 |
| 磁盘 I/O |
99%+ 降低 |
| 并发能力 |
千级设备排队 1 秒消化 |
6.3 架构优势
| 优势 |
说明 |
| 标准协议 |
GB28181-2022 CaptureCmd |
| 零带宽中转 |
S3 模式图片不经过任何服务器 |
| 状态显式 |
pending / ready 双态,无 404 窗口 |
| 多后端兼容 |
OSS / MinIO / Ceph / AWS S3 |
6.4 安全优势
| 层面 |
措施 |
| 传输加密 |
presign URL 走 HTTPS |
| 短期凭证 |
presign 有效期 600 秒 |
| 零长期密钥下发 |
下级只拿短期 URL |
| 内部鉴权 |
X-Internal-Token |
| 业务鉴权 |
JWT + 细粒度权限 |
| 信令加密(可选) |
GB35114 A 级 |
6.5 运维优势
| 维度 |
表现 |
| 无中间件依赖 |
本地模式零依赖 |
| 配置化切换 |
环境变量控制存储后端 |
| 自愈能力 |
断路器 + 重试 + 降级 |
| 索引自动维护 |
写入即 ZADD,删除即 ZREM |
| 清理自动调度 |
定时任务 UI 配置 |
七、技术亮点
7.1 本地 ZLM 截图
下级 sip 与 ZLM 同机(127.0.0.1),截图不占公网带宽。
- 流已在线:直接抓帧,0 上行消耗
- 流不在线:内网触发拉流(不计成本),抓帧后上传
7.2 图片直传
- 本地模式:传上级 sip,上级落盘
- S3 模式:传对象存储,上级零负担
7.3 Redis ZSet 索引
- 按时间倒序,翻页恒定 3ms
- 与图片总数无关
- 索引内存 ~100 字节/条
7.4 pending / ready 状态机
命令下发时置 pending,上传成功回调翻 ready,前端只显示 ready。
7.5 双清理机制
| 任务 |
复杂度 |
推荐 retention |
频率 |
| ZSet 快清 |
O(过期数量) |
30 天 |
每天 |
| 全盘扫兜底 |
O(全部) |
90 天 |
每周 |
7.6 跨服务器级联
下级 sip 上传成功后自动回调上级 mgr,上级只收索引,不收图片。
八、性能指标
8.1 单次截图
| 阶段 |
耗时 |
| 命令下发 |
~5ms |
| presign 调用 |
~42ms |
| 下发 CaptureCmd |
~40ms |
| 本地 ZLM 截图 |
< 10ms |
| 上传图片(259KB) |
~350ms |
| 索引更新 |
~1ms |
| 端到端 |
~1 秒 |
8.2 历史查询
| 图片数 |
传统扫盘 |
本方案 |
| 1000 张 |
~80ms |
~3ms |
| 10000 张 |
~500ms |
~3ms |
| 100000 张 |
~3s |
~3ms |
九、安全设计
| 层面 |
措施 |
| 图片上传 |
HTTPS + 短期 presign URL |
| 内部回调 |
HTTP 内网 + X-Internal-Token |
| 用户访问 |
HTTPS + JWT |
| 图片展示 |
CDN + 回源鉴权 |
| 信令加密(可选) |
GB35114 A 级(SM2/SM3) |
| 删除接口 |
JWT + 细粒度权限 |
十、可扩展性
| 维度 |
扩展方式 |
| 水平扩容 |
加 sip 实例,ZSet 天然共享 |
| 存储扩容 |
OSS 无限;本地加磁盘 + retention |
| 多后端 |
环境变量切换 |
| 多级级联 |
每级回调上级 mgr |
十一、总结
核心价值
| 维度 |
收益 |
| 公网带宽 |
每次从 7.5 MB 降到 250 KB,节省 30 倍 |
| 服务器负载 |
CPU / 内存 / I/O 全面降低 90%+ |
| 存储成本 |
从 630 TB/月降到 180 GB/月,节省 3500 倍 |
| 模式灵活 |
本地模式(上级收图)/ S3 模式(上级零负担) |
| 性能 |
历史查询恒定 3ms,比传统快 100 倍 |
| 安全 |
presign 短期凭证 + 内部 token + GB35114 |
| 稳定 |
断路器 + 重试 + 降级 + 幂等 |
| 标准 |
遵循 GB28181-2022 |
适用规模
| 规模 |
推荐 |
| 小型(< 1000 设备) |
单机 + 本地模式 |
| 中型(1000~10000 设备) |
主备 + S3 模式 |
| 大型(> 10000 设备) |
级联 + S3 + CDN |
一句话总结
只看一张图,却要拉 30 秒流——用截图替代拉流,公网带宽省 30 倍,服务器负载降 90%,存储成本降 3500 倍。
gbhub 团队 | https://gb.automate.org.cn