xg-cms 国标中心管理
围绕 GB/T 28181 信令交互与资源管理构建的 CMS:设备/通道生命周期、目录同步、实时点播、云台控制,并与 ZLMediaKit 通过 Hook 协议联动完成媒体调度。
定位与价值
xg-cms 用于承载国标平台的“控制面”能力:以 SIP 信令为核心,面向业务系统提供稳定的设备管理与点播编排接口。它通常与媒体服务器(例如 ZLMediaKit)配合使用,将媒体能力外置,形成清晰的分层:
- 控制面(xg-cms):GB/T 28181 设备接入、目录管理、点播/回放指令、云台控制、广播等。
- 数据面(媒体服务器):RTP 收流、转封装、分发、录制等媒体处理能力。
这种拆分使得平台具备更好的可扩展性,也便于与既有业务系统集成。
核心能力(以仓库功能清单为准)
| 能力项 | 状态 | 说明 |
|---|---|---|
| GB28181 注册与 Digest 认证 | 已支持 | 设备注册/注销、鉴权与心跳保活。 |
| 目录查询与订阅 | 已支持 | 目录查询、目录订阅通知,维护通道资源视图。 |
| 实时点播(Invite)与 RTP 接收 | 已支持 | 对接媒体服务器,完成实时预览链路搭建。 |
| 云台控制(PTZ) | 已支持 | 提供云台控制指令下发能力。 |
| 语音广播 | 已支持 | 支持国标语音广播相关能力。 |
| 历史回放/级联/更多状态接口 | 规划中 | 仓库 README 标注为未完成项,适合作为后续迭代方向。 |
对外接口(HTTP API / Swagger)
xg-cms 提供基于 Gin 的 HTTP API,并内置 Swagger 文档入口,便于联调与二次开发。
| 功能域 | 路由示例 | 说明 |
|---|---|---|
| Swagger | GET /swagger/*any |
在线接口文档(服务启动后访问)。 |
| GB28181 控制 | GET /dev/v1/gb/invite / GET /dev/v1/gb/ptz / GET /dev/v1/gb/catalog |
点播、云台、目录查询等控制入口。 |
| WebRTC 播放 | POST /dev/v1/rtc/play |
WebRTC 播放相关接口。 |
| WebSocket | GET /dev/ws/chat |
实时消息通道(路由受 JWT 中间件保护)。 |
与 ZLMediaKit 的联动(Hook 驱动的调度闭环)
xg-cms 通过 ZLMediaKit 的 HTTP Hook 机制感知播放/拉流事件,并在“流不存在”等场景触发按需点播,形成典型的媒体调度闭环:
| Hook | 用途 | 实现入口 |
|---|---|---|
on_play |
播放鉴权与策略控制 | POST /dev/v1/zlk/hook/on_play |
on_stream_not_found |
按需拉流(请求的流不存在时触发点播) | POST /dev/v1/zlk/hook/on_stream_not_found |
on_stream_none_reader |
无人观看资源回收(关闭直播流、发送 Bye) | POST /dev/v1/zlk/hook/on_stream_none_reader |
on_server_started / on_server_keepalive |
媒体节点生命周期感知 | POST /dev/v1/zlk/hook/on_server_started 等 |
on_flow_report |
流量统计与审计 | POST /dev/v1/zlk/hook/on_flow_report |
ZLMediaKit Hook 参考文档:Web Hook API。
部署与运维要点
核心配置集中在 xg-cms/config.yml,典型包括:
- HTTP 服务监听:
http.host/http.port(默认 8080)。 - MySQL:
mysql.dsn(可配置mysql.initdb初始化表结构)。 - Redis:
redis.host/redis.port/redis.password。 - SIP:
sip.listen_ip/sip.publish_ip/sip.port(默认 15060,支持 UDP/TCP)。 - ZLMediaKit:
zlk.host/zlk.public_ip/zlk.secret,以及 hook 回调地址。
仓库提供 Docker Compose 方式运行与交叉编译说明(详见 CMD.MD)。
技术栈概览(来自 go.mod)
| 模块 | 说明 |
|---|---|
| Gin | HTTP API 服务框架。 |
| GoSIP | GB/T 28181 信令栈基础能力。 |
| GORM + MySQL | 设备、通道、位置等数据持久化。 |
| Redis | 缓存、会话/状态支撑。 |
| Swagger | 接口文档生成与展示。 |
| gin-jwt | JWT 鉴权中间件(当前路由中部分功能可启用)。 |
典型应用场景
- 多品牌国标摄像机统一接入:目录自动同步、通道状态可视化、统一点播入口。
- 视频中台控制面:为上层业务提供统一 REST API(预览、PTZ、订阅、广播)。
- 媒体调度闭环:结合 ZLMediaKit Hook 实现按需拉流与无人观看自动关闭,降低资源占用。