# Vol.Pro 整合项目实施方案 > **版本**: v1.0 > **日期**: 2026-04-29 > **编制**: 浮浮酱 > **状态**: 待实施 --- ## 一、项目概述 本项目包含两个子方案: 1. **视频监控方案**: Vol.Pro + Owl + ZLMediaKit(浏览器实时监控、回放、云台控制) 2. **采集网关方案**: Vol.Pro + MC4.0(设备管理、实时数据、反向控制、告警) 两个方案共用 **`Base_Device` 统一设备主表**,实现所有设备的集中管理和三维地图标记。 --- ## 二、实施前提条件 ### 2.1 环境准备(实施前必须完成) | # | 检查项 | 通过标准 | |---|--------|----------| | 1 | Owl + ZLMediaKit 部署 | Docker运行正常,Web管理端可访问 | | 2 | MC4.0 采集网关接入 | 设备已接入MC4.0,API可调用 | | 3 | Vol.Pro 开发环境 | api_sqlsugar/web.vite/warehouse 均可编译运行 | | 4 | 数据库权限 | 可执行建表SQL,代码生成器可用 | | 5 | 三维地图模型 | VgoMap中已为设备位置放置模型并记录MapModelId | ### 2.2 必须确认的技术点(实施Day 1前完成) | # | 确认项 | 确认方式 | 影响 | |---|--------|----------|------| | 1 | Owl API完整路径 | 访问Owl Swagger文档 | 所有Owl对接接口 | | 2 | ZLM播放地址格式 | 调用Owl play接口查看返回URL | 前端播放器配置 | | 3 | MC4.0 Token机制 | 实测登录接口,确认Header和有效期 | MC4.0所有接口 | | 4 | MC4.0接口频率限制 | 高频调用测试是否限流 | 轮询任务设计 | --- ## 三、实施策略 ### 3.1 分阶段实施 ``` Phase 1: 视频监控方案(15个工作日) ├─ 优先实施,技术成熟度更高 ├─ 不依赖MC4.0方案 └─ 验证Vol.Pro扩展机制的可行性 Phase 2: 采集网关方案(16个工作日) ├─ 在视频监控方案完成后实施 ├─ 可复用Phase 1积累的Vol.Pro扩展经验 └─ 共用Base_Device主表(Phase 1已创建) ``` ### 3.2 实施顺序 | 顺序 | 方案 | 工期 | 前置依赖 | |------|------|------|----------| | 1 | 视频监控方案 | 15天 | 无 | | 2 | 采集网关方案 | 16天 | 视频监控方案完成(复用Base_Device表) | | **合计** | | **31天** | | > **可并行优化**:如果人手充足,采集网关方案可在视频监控方案的阶段四/五时并行启动,总工期可缩短至 **20-22天**。 --- ## 四、视频监控方案实施计划(15天) ### Week 1: 基础搭建(Day 1-5) #### Day 1: 数据库与代码生成 - [ ] 执行建表SQL创建4张表:`Base_Device`、`Device_Video_Ext`、`Video_Channel`、`Video_Record` - [ ] 使用Vol.Pro代码生成器生成4个模块的CRUD代码 - [ ] 验证生成后的增删改查功能正常 - [ ] **验收点**: 管理端可正常增删改查设备/通道/录像 #### Day 2: Owl对接服务搭建 - [ ] 创建 `Warehouse/Services/Owl/IOwlApiService.cs` - [ ] 创建 `Warehouse/Services/Owl/OwlApiService.cs` - [ ] 实现JWT Token获取与缓存(内存/Redis) - [ ] **验收点**: 可成功获取Owl Token并缓存 #### Day 3: Owl设备同步 - [ ] 实现设备同步逻辑(调用Owl `/devices`) - [ ] 实现通道同步逻辑(调用Owl `/channels`) - [ ] 实现数据写入Base_Device + Device_Video_Ext + Video_Channel - [ ] **验收点**: 执行同步后,Vol.Pro数据库中有Owl设备数据 #### Day 4: 取流与回放接口 - [ ] 实现 `GetLiveUrl` 接口(调用Owl play) - [ ] 实现 `GetPlaybackUrl` 接口(调用Owl recordings) - [ ] 实现 `StopPlay` 接口 - [ ] **验收点**: Postman可调用获取流地址 #### Day 5: 云台与快照接口 - [ ] 实现 `PtzControl` 接口 - [ ] 实现 `GetSnapshot` 接口 - [ ] 创建 `VideoStreamController.cs` - [ ] **验收点**: Postman可调用云台控制和获取快照 ### Week 2: 前端与管理端(Day 6-10) #### Day 6: 管理端设备列表扩展 - [ ] 创建 `extension/warehouse/Base_Device.jsx` - [ ] 添加"同步设备"按钮 - [ ] 添加DeviceCategory=1筛选(默认显示视频监控设备) - [ ] 添加"查看通道"操作列 - [ ] **验收点**: 管理端设备列表有同步按钮和通道查看 #### Day 7: 管理端通道列表扩展 - [ ] 创建 `extension/warehouse/Video_Channel.jsx` - [ ] 添加"实时预览"按钮(弹窗播放) - [ ] 添加"云台控制"按钮 - [ ] 添加"回放"按钮 - [ ] **验收点**: 管理端通道列表可播放视频 #### Day 8: 播放器集成 - [ ] 引入Jessibuca/mpegts.js播放器组件 - [ ] 创建 `VideoPlayer.vue`(实时播放弹窗) - [ ] 创建 `VideoPlayback.vue`(回放查询页面) - [ ] **验收点**: 浏览器可播放实时视频和回放 #### Day 9: warehouse用户端改造 - Live.vue - [ ] 替换硬编码数据为真实API调用 - [ ] 集成Jessibuca播放器 - [ ] 摄像头列表从Video_Channel API获取 - [ ] **验收点**: warehouse Live.vue可播放实时视频 #### Day 10: warehouse用户端改造 - History.vue + VideoWall.vue - [ ] 改造History.vue实现回放查询和HLS播放 - [ ] 改造VideoWall.vue(图片→真实播放器) - [ ] 对接云台控制API - [ ] **验收点**: 回放和视频墙功能正常 ### Week 3: 联调与优化(Day 11-15) #### Day 11-12: 联调测试 - [ ] 设备注册到Owl后同步到Vol.Pro - [ ] 实时播放测试(WebRTC/FLV) - [ ] 回放功能测试 - [ ] 云台控制测试 - [ ] 多路视频墙测试 - [ ] **验收点**: 所有功能端到端可用 #### Day 13: 框架升级测试 - [ ] 重新运行代码生成器 - [ ] 验证所有自定义代码(Partial/extension)未被覆盖 - [ ] **验收点**: 代码生成器不覆盖自定义代码 #### Day 14-15: 缓冲优化 - [ ] 性能优化(视频墙路数限制、流释放) - [ ] 安全加固(播放地址代理、权限校验) - [ ] 文档补充 --- ## 五、采集网关方案实施计划(16天) ### Week 1: 基础搭建(Day 1-5) #### Day 1: 数据库与代码生成 - [ ] 执行建表SQL:`Device_IoT_Ext`、`IoT_DevicePoint`、`IoT_DeviceData`、`IoT_Alarm` - [ ] 使用Vol.Pro代码生成器生成CRUD代码 - [ ] **注意**: Base_Device表已在视频监控方案中创建,无需重复创建 - [ ] **验收点**: 管理端可正常增删改查 #### Day 2: MC4.0对接服务搭建 - [ ] 创建 `IMc4ApiService.cs` / `Mc4ApiService.cs` - [ ] 实现Token管理(登录/缓存/刷新) - [ ] 实现请求频率控制(SemaphoreSlim,每秒最多2次) - [ ] **验收点**: 可成功获取MC4.0 Token #### Day 3: 对象树与点表同步 - [ ] 实现对象树同步(`/object/tree`) - [ ] 实现点表同步(`/device/point/get`) - [ ] 数据写入Base_Device + Device_IoT_Ext + IoT_DevicePoint - [ ] **验收点**: 执行同步后Vol.Pro中有MC4.0设备数据 #### Day 4: 实时数据与控制接口 - [ ] 实现 `GetRealtime` 接口(调用MC4.0读数据) - [ ] 实现 `Control` 接口(反向控制) - [ ] **验收点**: Postman可读取实时数据和控制设备 #### Day 5: 告警接口 - [ ] 实现 `GetAlarms` 接口 - [ ] 实现 `ConfirmAlarm` / `EndAlarm` 接口 - [ ] 创建 `IoTStreamController.cs` - [ ] **验收点**: Postman可查询和确认告警 ### Week 2: 实时推送与管理端(Day 6-10) #### Day 6: SignalR Hub搭建 - [ ] 创建 `IoTDataHub.cs` - [ ] 实现设备分组订阅(SubscribeDevice/UnsubscribeDevice) - [ ] 实现告警管理员组订阅(SubscribeAlarmAdmin) - [ ] **验收点**: 前端可连接SignalR并订阅设备 #### Day 7: 实时数据轮询Job - [ ] 创建 `RealtimeDataPollJob.cs` - [ ] 每5秒轮询MC4.0实时数据 - [ ] **不入库,直接SignalR推送给前端** - [ ] **验收点**: 前端实时收到数据更新 #### Day 8: 告警轮询Job - [ ] 创建 `AlarmPollJob.cs` - [ ] 每10秒轮询MC4.0告警 - [ ] 新告警写入IoT_Alarm表 - [ ] 按设备分组SignalR推送 - [ ] **验收点**: 新告警实时推送到前端 #### Day 9: 管理端设备列表扩展 - [ ] 扩展 `Base_Device.jsx`(添加采集设备相关按钮) - [ ] 添加"同步对象树"按钮(仅DeviceCategory=2显示) - [ ] 添加"同步点表"操作列 - [ ] 添加"查看实时数据"按钮 - [ ] **验收点**: 管理端可同步和查看采集设备 #### Day 10: 管理端告警列表扩展 - [ ] 扩展告警列表页 - [ ] 添加"确认"和"结束"操作按钮 - [ ] 告警等级颜色标识(紧急=红色,重要=橙色) - [ ] **验收点**: 管理端可处理告警 ### Week 3: warehouse用户端与联调(Day 11-16) #### Day 11-12: warehouse用户端开发 - [ ] 开发实时数据看板(设备列表+实时数值+SignalR接收) - [ ] 开发设备控制面板(开关/滑块/输入框) - [ ] 开发告警信息面板(实时告警+历史查询) - [ ] **验收点**: warehouse可查看实时数据和控制设备 #### Day 13-14: 联调测试 - [ ] MC4.0设备接入测试 - [ ] 实时数据读取测试(验证SignalR推送,不入库) - [ ] 反向控制测试 - [ ] 告警轮询与推送测试(10秒轮询+分组推送) - [ ] 请求频率控制测试(每秒不超过2次) - [ ] 多设备并发测试 - [ ] **验收点**: 所有功能端到端可用 #### Day 15: 框架升级测试 - [ ] 重新运行代码生成器 - [ ] 验证自定义代码未被覆盖 - [ ] **验收点**: 代码独立性验证通过 #### Day 16: 缓冲优化 - [ ] 性能优化 - [ ] 文档补充 - [ ] 问题修复 --- ## 六、关键里程碑与验收标准 | 里程碑 | 时间 | 验收标准 | |--------|------|----------| | M1: 视频监控后端完成 | Day 5 | Owl对接服务所有接口Postman测试通过 | | M2: 视频监控前端完成 | Day 10 | warehouse Live/History/VideoWall功能可用 | | M3: 视频监控联调完成 | Day 15 | 所有功能端到端可用,框架升级测试通过 | | M4: 采集网关后端完成 | Day 5 | MC4.0对接服务所有接口Postman测试通过 | | M5: 采集网关前端完成 | Day 12 | warehouse实时数据/控制/告警功能可用 | | M6: 采集网关联调完成 | Day 16 | 所有功能端到端可用,框架升级测试通过 | --- ## 七、风险控制 | 风险 | 影响 | 应对措施 | |------|------|----------| | Owl API路径不准确 | 所有取流/云台接口404 | Day 1实测Swagger确认路径 | | MC4.0 Token快速过期 | 频繁重新登录 | Day 1实测Token有效期,设计自动刷新 | | ZLM WebRTC配置失败 | 无法使用WebRTC | 默认使用WS-FLV,WebRTC作为可选优化 | | MC4.0接口限流 | 轮询任务失败 | SemaphoreSlim频率控制,失败时告警 | | 数据量爆炸 | SQL Server性能下降 | 实时数据不入库,仅SignalR推送 | | 前端播放器兼容性 | 部分浏览器无法播放 | 提供FLV/HLS多协议降级 | --- ## 八、实施检查清单 ### 每日检查项 - [ ] 今日代码是否写在独立文件(不修改框架代码) - [ ] 新服务是否实现IDependency接口 - [ ] Controller是否使用partial或全新文件 - [ ] 前端扩展是否写在extension目录 ### 阶段验收检查项 - [ ] 重新运行代码生成器,确认自定义代码未被覆盖 - [ ] 所有API接口Postman测试通过 - [ ] 前端功能在Chrome/Firefox/Edge测试通过 - [ ] 性能测试(视频墙最大路数、MC4.0轮询频率) --- ## 九、相关文档索引 | 文档 | 路径 | 说明 | |------|------|------| | 视频监控整合方案 | `doc/整合方案/Vol.Pro_Owl_ZLMediaKit_整合方案_v1.0.md` | 详细技术方案 | | 采集网关整合方案 | `doc/整合方案/Vol.Pro_MC4.0_整合方案_v1.0.md` | 详细技术方案 | | MC4.0 API文档 | `doc/对接文档/MC4.0对外API.md` | MC4.0接口定义 | | 联网部署手册 | `owl_zlmediakit/联网部署手册.md` | Owl+ZLM部署指南 | | 超时排查手册 | `owl_zlmediakit/排查手册-访问超时.md` | 网络问题排查 | --- > **文档结束** > **版本**: v1.0 > **最后更新**: 2026-04-29 > **状态**: 待主人确认后实施