系统架构
整体结构
┌─────────────────────────────────────────────────────────────┐
│ OmniVP 平台 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ GB28181 │ │ ISUP │ │ ONVIF │ │ JT1078 │ │
│ │ SIP 服务 │ │ EHome 桥接│ │ 客户端 │ │ 服务 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └─────────────┴──────┬──────┴─────────────┘ │
│ ▼ │
│ ┌───────────────┐ │
│ │ 统一设备抽象 │ │
│ │ (VideoService)│ │
│ └───────┬───────┘ │
│ ▼ │
│ ┌───────────────────────────────────────────────┐ │
│ │ HTTP API │ WebSocket │ 告警/录像/审计 │ │
│ └────────────────────┬──────────────────────────┘ │
└───────────────────────┼─────────────────────────────────────┘
│
┌─────────▼──────────┐
│ ZLMediaKit │ 媒体节点(可水平扩展)
│ 收流 / 转封装 / 分发 │
└─────────┬──────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
Web 播放器 安卓 App 第三方系统
(HLS/FLV/RTC) (FLV/HLS) (REST API)
关键设计
- 信令与媒体分离:设备注册、云台控制、录像查询走 OmniVP 的信令通道;音视频流由设备直接推送到 ZLMediaKit,平台只做调度与鉴权。
- 协议抽象层:
VideoService接口统一了所有协议的"播放/停止/云台/录像"操作,上层 API 与协议无关。 - 多播放器引擎:前端根据编码(H.264/H.265)与协议自动选择 mpegts.js、Jessibuca 或 WebRTC,保证兼容性。
部署形态
| 形态 | 说明 |
|---|---|
| 单机 | OmniVP + ZLMediaKit + SQLite 跑在一台机器,适合 50 路以内 |
| 分布式 | OmniVP 单实例 + 多个 ZLMediaKit 媒体节点,适合大规模接入 |
| 容器化 | 提供 Dockerfile,可部署到 Kubernetes(参考运维手册) |