Skip to content

CoderDongHuang/EdgeVideoAnalysis

Repository files navigation

智慧城市边缘视频分析平台

基于 Spring Boot + YOLOv8 的智能灯杆边缘视频分析系统,实现设备管理、传感器监控、行人检测、报警联动与远程控制。

✨ 核心功能

  • 设备管理 - 灯杆 CRUD、在线状态监控、视频流配置
  • 传感器监测 - 温湿度、光照、电压电流实时采集与历史曲线查询
  • AI 行人检测 - YOLOv8 实时识别行人,支持截图与结果回放
  • 智能报警 - 传感器阈值设置,超限自动告警与推送
  • 远程控制 - HTTP → MQTT 下发 LED 开关指令,WebSocket 实时心跳
  • 数据可视化 - 传感器曲线、报警记录、推理记录多维查询
  • API 文档 - Springdoc 自动生成,启动后访问 /doc.html

🚀 性能优化亮点

优化项 优化前 优化后 手段
单帧识别耗时 ~750ms ~190ms 线程池 + CompletableFuture + JPEG压缩
历史查询响应 ~300ms ~90ms 复合索引 + Redis 缓存
设备状态同步 不稳定 99%+ WebSocket + Redis 版本号心跳
传感器上报吞吐 同步写库 异步削峰 RabbitMQ + 死信队列
缓存可用性 无防护 穿透/击穿/雪崩全防护 空值缓存 + SETNX 互斥锁 + TTL 随机偏移
AI 推理韧性 无保护 熔断+重试+降级 Resilience4j @Retry + @CircuitBreaker
视频帧阻塞 无超时 10s 超时熔断 CompletableFuture.get(timeout)

🛠 技术栈

层级 技术
后端框架 Spring Boot 2.7
ORM MyBatis-Plus 3.5
数据库 MySQL 8.0
缓存 Redis
消息队列 RabbitMQ(传感器削峰)
设备指令 MQTT (Spring Integration + Paho)
AI 推理 YOLOv8 (Python/Flask)
容错框架 Resilience4j(重试+熔断+降级)
视频处理 JavaCV / FFmpeg
实时通信 WebSocket
API 文档 Springdoc OpenAPI
可观测性 Spring Boot Actuator + Prometheus
网关 Nginx(反向代理 + 限流)
容器化 Docker + Docker Compose(7 容器编排)

📦 快速开始

Docker Compose 部署(推荐)

git clone <repository-url>
cd EdgeVideoAnalysis

# 一键启动全部 7 个服务
docker-compose up -d

服务启动后访问:

服务 地址
后端 API(Nginx 网关) http://localhost
后端 API(直连) http://localhost:8080
API 文档 http://localhost:8080/doc.html
YOLOv8 推理 http://localhost:5000
RabbitMQ 管理后台 http://localhost:15672
Prometheus 指标 http://localhost:8080/actuator/prometheus

本地开发运行

# 1. 启动 MySQL + Redis
# 2. 初始化数据库
mysql -uroot -p123456 -e "CREATE DATABASE IF NOT EXISTS edge_video_analysis DEFAULT CHARACTER SET utf8mb4"
mysql -uroot -p123456 edge_video_analysis < src/main/resources/db/init.sql

# 3. 启动 YOLOv8 推理服务
cd yolov8-service
pip install -r requirements.txt
python app.py

# 4. 编译启动后端
cd ..
mvn clean package -DskipTests
java -jar target/edge-video-analysis-1.0.0.jar

RabbitMQ / MQTT / Nginx 非必须——代码含降级兜底,MQ 不可用时自动走同步处理。

📁 项目结构

EdgeVideoAnalysis/
├── src/main/java/com/edgevideoanalysis/
│   ├── device/          # 设备管理
│   ├── sensor/          # 传感器数据 + MQ Producer/Consumer
│   ├── alarm/           # 报警规则与记录
│   ├── video/           # 视频流处理(线程池+异步+超时)
│   ├── ai/              # YOLOv8 推理集成(R4j熔断重试)
│   ├── websocket/       # 设备心跳与状态推送
│   ├── control/         # 远程控制 + MQTT 指令下发
│   └── common/          # 公共配置、异常处理、统一响应
├── yolov8-service/      # YOLOv8 推理服务(Python/Flask)
├── nginx.conf           # Nginx 反向代理 + API 限流配置
├── docker-compose.yml   # 7 服务编排
└── pom.xml

📖 API 文档

启动后访问 http://localhost:8080/doc.html,Springdoc 自动生成全部接口文档,支持在线调试。

模块 方法 路径 说明
健康检查 GET /api/health 服务健康检查
设备 GET /api/lamp/list 获取灯杆列表
传感器 POST /api/sensor/report 上报传感器数据(MQ 异步)
传感器 GET /api/sensor/curve 获取曲线数据
视频 GET /api/video/frame/{lampId} 获取当前帧(10s超时)
AI POST /api/ai/inference 执行行人检测(熔断保护)
控制 POST /api/control/led MQTT 下发 LED 开关
WebSocket ws /ws/device 设备心跳连接
Prometheus GET /actuator/prometheus 监控指标

详细接口定义见 API接口文档.md

🏆 项目成果

  • 荣获 全国大学生物联网设计大赛湖南赛区一等奖
  • 稳定支持 4+ 路摄像头并发处理
  • 完整实现设备接入、AI 推理调度、告警联动、远程控制五大模块
  • 56 个纯 Mockito 单元测试覆盖核心业务链路
  • 缓存三板斧 / 熔断降级 / MQ异步削峰 / 视频帧超时控制 全链路容错

📄 许可证

MIT License

👥 作者

CoderDongHuang

About

智慧城市边缘视频分析平台,基于Spring Boot + YOLOv8实现智能灯杆场景下的行人检测、传感器监控与远程设备控制。 核心优化:自定义线程池+CompletableFuture异步处理,单帧识别耗时从750ms降至190ms;WebSocket+Redis版本号心跳机制,设备状态同步准确率99%+;MySQL复合索引优化,历史查询从300ms优化至90ms内。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors