架构
MiBeeVision 采用管道式分层架构:Source → Pipeline → Sink,每一层以接口抽象,配置驱动组合。
┌─────────────────────────────────────────────────────────────┐
│ MiBeeVision(serve 常驻 + 内嵌 Web 配置页 :9092) │
│ │
│ Source 层(录像段获取) │
│ • local_file 与 NVR 共享录像目录,直接读本地文件 │
│ • http_download 跨机部署时从 NVR 下载录像段 │
│ │ │
│ ▼ │
│ Pipeline 层(分析管道) │
│ 解码抽帧 → YOLOv8n 检测 → ByteTrack 跟踪 → 事件规则判定 │
│ │ │
│ ▼ │
│ Sink 层(结果输出) │
│ • 事件入库(SQLite/libSQL) │
│ • 带框快照落盘 │
│ • 回写 MiBeeNvr(AI 状态 + 事件) │
└─────────────────────────────────────────────────────────────┘
各层职责
| 层 | 职责 | 说明 |
|---|---|---|
| Source | 产出录像段 | 两种获取方式按部署形态选择:与 NVR 同机时用 local_file(共享录像目录);分机部署时用 http_download(从 NVR 下载后分析)。配置页保存后自动生效 |
| Pipeline | 把画面变成判断 | FFmpeg 解码抽帧 → YOLOv8n 目标检测(ONNX Runtime)→ ByteTrack 多目标跟踪 → 区域入侵/越界/徘徊规则判定 |
| Sink | 把判断变成记录 | 事件写入 SQLite/libSQL;每条事件生成带框快照;状态与事件回写 NVR |
运行形态
- serve 常驻服务:当前发布版的推荐形态——进程常驻,持续消费 NVR 新生成的录像段;配置页(
:9092)负责接线(NVR 地址、API Key、摄像头、规则)与运行状态自检。 - 配置驱动:摄像头选择、规则区域、传输方式均在配置页修改,保存后管线自动重启生效,不需要手工编辑配置文件。
设计原则
- 与 NVR 解耦:Vision 是独立进程,可以跑在 NVR 同机(共享存储)或另一台机器(HTTP 下载录像),NVR 挂了 Vision 不受影响,反之亦然。
- 每层可替换:录像段来源、检测模型、事件输出都以接口抽象——换模型、换存储、增加输出渠道都是「加一个实现」,不改既有链路。
- 零云依赖:推理、规则、存储全部在本地完成,无任何外部服务调用。
与 MiBeeNvr 的关系
NVR 是数据与语义中枢:决定「哪些录像段给 Vision 分析」,消费「Vision 判定出的结果」(AI 状态、事件、快照)。完整协同方式见 MiBeeNvr 协同。