Skip to content

Voglander 是一个基于 Spring Boot 3 和 Java 17 构建的企业级视频监控平台,专注于提供高性能、高可用、易扩展的视频监控解决方案。The opulent video surveillance platform. The founder's grandson Peter Wilhelm Friedrich Voigtländer, mathematician Perzval designed the first accurately calculated lens in 1840

License

Notifications You must be signed in to change notification settings

lunasaw/voglander

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

245 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Voglander 视频监控平台

Maven Central GitHub license Java Spring Boot

🌐 项目主页 | 📖 文档中心 | 🚀 快速开始

📋 项目介绍

Voglander 是一个基于 Spring Boot 3 和 Java 17 构建的企业级视频监控平台,专注于提供高性能、高可用、易扩展的视频监控解决方案。

Stream操作演示

✨ 核心特性

  • 🎯 多协议支持 - 支持 GB28181、GT1078、ONVIF 等主流视频监控协议
  • 🏭 设备兼容 - 兼容海康、大华、宇视、中维等主流监控设备厂商
  • 🔧 模块化架构 - 采用多模块设计,支持集群化部署
  • 📊 实时监控 - 支持实时视频流处理和设备状态监控
  • 🚀 高性能 - 基于异步处理和缓存优化,支持大规模并发
  • 🛡️ 安全可靠 - 提供完善的权限控制和数据安全保障

🎯 应用场景

  • 🏢 企业园区监控 - 办公楼宇、工厂园区安防监控
  • 🏫 教育机构 - 学校、培训机构视频监控管理
  • 🏥 医疗机构 - 医院、诊所安防监控系统
  • 🏪 商业场所 - 商场、超市、门店监控管理
  • 🏘️ 社区物业 - 住宅小区、物业管理监控系统

🏗️ 系统架构

整体架构图

┌─────────────────────────────────────────────────────────────┐
│                        前端层 (Frontend)                     │
│  ┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐ │
│  │   管理后台       │  │   监控大屏       │  │   移动端      │ │
│  │  (Vue.js)      │  │  (Dashboard)   │  │  (Mobile)    │ │
│  └─────────────────┘  └─────────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
                              │
                    ┌─────────┴─────────┐
                    │   API Gateway     │
                    │  (Load Balancer)  │
                    └─────────┬─────────┘
                              │
┌─────────────────────────────┴─────────────────────────────────┐
│                        应用层 (Application)                   │
│  ┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐ │
│  │   Web 层        │  │   Manager 层     │  │   Service 层  │ │
│  │ - REST API      │  │ - 业务管理       │  │ - 核心服务    │ │
│  │ - 参数校验      │  │ - 流程编排       │  │ - 业务逻辑    │ │
│  │ - 异常处理      │  │ - 缓存管理       │  │ - 事务控制    │ │
│  └─────────────────┘  └─────────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────┴─────────────────────────────────┐
│                      数据访问层 (Repository)                  │
│  ┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐ │
│  │   ORM 映射      │  │   缓存管理       │  │   消息队列    │ │
│  │ - MyBatis Plus  │  │ - Redis Cache   │  │ - RabbitMQ   │ │
│  │ - 动态数据源    │  │ - 本地缓存      │  │ - RocketMQ   │ │
│  │ - 分库分表      │  │ - 分布式锁      │  │ - 异步处理    │ │
│  └─────────────────┘  └─────────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
                              │
┌─────────────────────────────┴─────────────────────────────────┐
│                       存储层 (Storage)                       │
│  ┌─────────────────┐  ┌─────────────────┐  ┌──────────────┐ │
│  │   关系数据库     │  │   缓存数据库     │  │   流媒体服务  │ │
│  │ - MySQL         │  │ - Redis         │  │ - ZLMediaKit │ │
│  │ - SQLite        │  │ - 集群部署      │  │ - 流转发      │ │
│  │ - 主从复制      │  │ - 高可用        │  │ - 录像存储    │ │
│  └─────────────────┘  └─────────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────────┘

模块架构

voglander/
├── voglander-web/          # Web控制层 - REST API接口
│   ├── controller/         # 控制器
│   ├── filter/            # 过滤器
│   ├── interceptor/       # 拦截器
│   └── config/            # Web配置
│
├── voglander-manager/      # 业务管理层 - 复杂业务逻辑
│   ├── manager/           # 业务管理器
│   ├── assembler/         # 数据转换器
│   ├── service/           # 业务服务
│   └── async/             # 异步任务
│
├── voglander-service/      # 核心服务层 - 核心业务逻辑
│   ├── command/           # 设备命令服务
│   └── login/             # 登录注册服务
│
├── voglander-repository/   # 数据访问层 - 数据持久化
│   ├── entity/            # 数据实体
│   ├── mapper/            # 数据映射
│   ├── cache/             # 缓存管理
│   └── config/            # 数据源配置
│
├── voglander-integration/  # 集成层 - 第三方系统集成
│   ├── wrapper/           # 外部系统包装器
│   ├── domain/            # 集成领域模型
│   └── aop/               # 切面处理
│
├── voglander-client/       # 客户端层 - 外部调用客户端
│   ├── service/           # 客户端服务
│   └── domain/            # 客户端模型
│
├── voglander-common/       # 公共模块 - 通用组件
│   ├── constant/          # 常量定义
│   ├── enums/             # 枚举类型
│   ├── exception/         # 异常处理
│   └── util/              # 工具类
│
└── voglander-test/         # 测试模块 - 单元测试和集成测试
    └── resources/          # 测试配置

🔧 技术栈

后端技术栈

技术 版本 说明
核心框架
Java 17 开发语言
Spring Boot 3.5.3 微服务框架
数据访问
MyBatis Plus 3.5.5 ORM框架
Dynamic DataSource 4.3.1 动态数据源
MySQL 8.2.0 关系数据库
SQLite - 嵌入式数据库
HikariCP - 数据库连接池
缓存中间件
Redis - 分布式缓存
Spring Cache 3.3.1 缓存抽象层
消息队列
RabbitMQ - 消息中间件
RocketMQ 2.3.0 分布式消息系统
视频协议
GB28181-Proxy 1.2.4 国标协议支持
ZLMediaKit-Starter 1.0.6 流媒体服务器
工具库
Luna Common 2.6.5 通用工具库
EasyExcel 4.0.1 Excel处理
FastJSON2 - JSON处理
监控与追踪
SkyWalking 9.1.0 链路追踪
Swagger 3.0.0 API文档
其他
Lombok - 代码生成
Apache Commons - 通用工具

前端技术栈

技术 版本 说明
Vue.js 3.x 前端框架
Vue Router 4.x 路由管理
Pinia 2.x 状态管理
Element Plus - UI组件库
Axios - HTTP客户端

🚀 快速开始

环境要求

  • Java: JDK 17+
  • Maven: 3.6+
  • MySQL: 8.0+ (可选,默认使用SQLite)
  • Redis: 6.0+ (可选)
  • Node.js: 16+ (前端开发)

📥 克隆项目

git clone https://github.com/lunasaw/voglander.git
cd voglander

🔧 后端启动

  1. 编译项目
mvn clean compile
  1. 初始化数据库
# 使用SQLite (默认)
# 数据库文件会自动创建为 app.db

# 或使用MySQL
# 1. 创建数据库: CREATE DATABASE voglander;
# 2. 执行SQL脚本: sql/voglander.sql
# 3. 修改配置文件中的数据库连接信息
  1. 启动应用
mvn spring-boot:run -pl voglander-web
  1. 访问应用
应用地址: http://localhost:8081
API文档: http://localhost:8081/swagger-ui.html

🎨 前端启动

cd voglander-frontend
npm install
npm run serve

前端访问: http://localhost:8080

🐳 Docker 部署 (规划中)

# 构建镜像
docker build -t voglander:latest .

# 运行容器
docker-compose up -d

📖 配置说明

核心配置文件

  • application.yml - 主配置文件
  • application-dev.yml - 开发环境配置
  • application-repo.yml - 数据库配置
  • application-inte.yml - 集成配置

关键配置项

# 数据库配置
spring:
  datasource:
    dynamic:
      primary: master
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/voglander
          username: root
          password: your_password

# Redis配置
  data:
    redis:
      host: localhost
      port: 6379
      password: your_password

# SIP协议配置
sip:
  enable: true
  port: 5060
  ip: 0.0.0.0

📚 API 文档

设备管理 API

# 获取设备列表
GET /api/device/list

# 获取设备详情
GET /api/device/{id}

# 添加设备
POST /api/device/add

# 更新设备
PUT /api/device/update

# 删除设备
DELETE /api/device/{id}

通道管理 API

# 获取设备通道
GET /api/channel/list/{deviceId}

# 通道控制命令
POST /api/channel/control

完整 API 文档请访问: Swagger UI 访问这个链接: Swagger API

🧪 测试

运行单元测试

mvn test

运行集成测试

mvn verify -P integration-test

测试覆盖率

mvn clean test jacoco:report

📈 性能特性

  • 高并发: 支持万级并发连接
  • 低延迟: 毫秒级响应时间
  • 高可用: 99.9% 服务可用性
  • 可扩展: 水平扩展支持

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目基于 MIT License 开源协议发布。

👥 开发团队

🔗 相关链接

⭐ Star History

Star History Chart


如果这个项目对您有帮助,请给我们一个 ⭐️ Star!

About

Voglander 是一个基于 Spring Boot 3 和 Java 17 构建的企业级视频监控平台,专注于提供高性能、高可用、易扩展的视频监控解决方案。The opulent video surveillance platform. The founder's grandson Peter Wilhelm Friedrich Voigtländer, mathematician Perzval designed the first accurately calculated lens in 1840

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages