| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 2 个月前 |
VLStream-Web
VLStream Cloud — AI 驱动的开源视频物联网(Video IoT)平台前端
VLStream-Web 是一个高性能、AI 驱动的开源 Web 视频平台,将传统视频监控升级为智能化的视觉管理。平台融合了低延迟视频流、强大的 AI 分析能力与灵活的可扩展性,为构建智能、高效、安全的视频物联网系统提供了坚实的基础。
本仓库为平台的前端工程(位于 VLStream-ui/),基于 Vue 3 + Vite 构建,对接基于 SpringBlade 微服务框架的后端网关与统一身份认证(SSO)。
目录
核心特性
- 🎥 低延迟视频流 — 支持 RTSP / HLS / WebRTC 多协议接入,内置视频广场、多画面布局、云台(PTZ)控制、视频回放。
- 🤖 AI 智能分析 — 算法仓库管理、算法训练 / 标注 / 模型管理、智能分析申请与结果、事件管理与场景治理。
- 🗺️ GIS 地图联动 — 基于 Leaflet 的地图可视化,设备与摄像头空间分布一目了然。
- 🧩 AI 算力调度 — 容器实例管理,弹性调度算法推理资源。
- 🔐 企业级权限 — 对接统一用户平台(SSO),支持用户、角色、菜单、部门、岗位、租户、数据权限、接口权限的完整 RBAC 体系。
- 🌐 开箱即用 — Element Plus + Avue 表单/表格引擎,CRUD Mixin,大量可复用业务组件。
技术栈
| 分类 | 技术 |
|---|---|
| 框架 | Vue 3 (Composition API) |
| 构建工具 | Vite 4 |
| UI 组件库 | Element Plus + @smallwei/avue |
| 状态管理 | Pinia |
| 路由 | Vue Router 4 |
| HTTP | axios(封装多实例 + 拦截器) |
| 视频播放 | hls.js、OPlayer |
| 地图 | Leaflet |
| 加密 | sm-crypto(国密 SM2/SM4) |
| 其他 | markdown-it、nprogress、vue-i18n |
项目结构
VLStream-Web/
├── LICENSE # MIT 许可证
├── README.md # 本文档
└── VLStream-ui/ # 前端工程根目录
├── index.html # 应用入口 HTML
├── package.json # 依赖与脚本
├── vite.config.js # Vite 配置(base 路径、开发代理)
├── nginx.conf.example # 生产环境 Nginx 配置示例
├── build-prod.bat # Windows 一键构建脚本
├── scripts/ # 部署 / 重构辅助脚本
├── public/ # 静态资源(OPlayer 等)
└── src/
├── main.js # 应用入口
├── App.vue # 根组件
├── router/ # 路由配置 + 全局守卫(含 SSO 鉴权)
├── layout/ # 全局布局框架
├── api/ # 后端接口封装(按业务模块拆分)
├── views/ # 页面(按业务域分目录,见下文)
├── components/ # 全局可复用组件
├── utils/ # 工具库(请求、鉴权、Token 同步等)
├── mixins/ # CRUD 等通用 mixin
└── assets/ # 图片、样式等静态资源
src/views/ 业务域划分:
| 目录 | 业务域 |
|---|---|
VideoAggregation/ |
视频聚合:视频广场、设备管理、视频回放、监控告警、标签管理、摄像机设置、智能分析结果 |
DecisionAI/ |
决策 AI:事件管理、场景治理、智能分析申请、设计图、场景编辑、算法配置、任务配置 |
AlgorithmWarehouse/ |
算法仓库:算法管理、算法训练平台 |
AlgorithmTraining/ |
算法训练:算法标注、算法模型、算法训练、SSH 连接 |
AIComputingScheduling/ |
AI 算力调度:容器实例 |
System/ |
系统管理:用户、角色、菜单、部门、岗位、租户、数据权限、接口权限 |
功能模块
- 工作台 — 平台总览首页
- 视频广场 / 设备管理 — 多画面实时视频、设备接入与组织管理
- 视频回放 / 监控告警 — 历史录像检索回放、实时告警处置
- 事件管理 / 场景治理 — AI 事件接警、场景化治理编排
- 智能分析(申请 / 结果) — 发起智能分析任务、查看分析结果
- 算法管理 / 算法训练平台 — 算法上架发布、训练任务调度
- 算法标注 / 模型 / 训练 — 数据集标注、模型管理、训练作业、SSH 远程连接
- 容器实例 — 算力容器调度与监控
- 系统管理 — 完整的 RBAC 权限与租户体系
- 个人设置
快速开始
环境要求
- Node.js 16 及以上(推荐 18 LTS)
- npm(随 Node 安装)或 pnpm / yarn
- 后端服务:SpringBlade 网关默认监听
http://127.0.0.1:8080(可通过环境变量覆盖)
安装与本地开发
# 1. 进入前端工程目录
cd VLStream-ui
# 2. 安装依赖
npm install
# 3. 启动开发服务器(默认端口 3000,监听所有网卡)
npm run dev
启动后访问:http://localhost:3000/
开发模式下,所有后端请求(
/system、/blade-auth、/vls、/api、/sso等前缀)会通过 Vite 代理转发到后端,默认目标为http://127.0.0.1:8080。
其他脚本
npm run build # 构建生产版本,产物输出到 dist/
npm run preview # 本地预览构建产物
npm run lint # ESLint 代码检查并自动修复
Windows 下也可直接运行一键构建脚本:
# 在 VLStream-ui 目录下
build-prod.bat
环境配置
项目通过 Vite 环境变量进行配置。在 VLStream-ui/ 目录下创建 .env.local(不会被提交到 Git)按需覆盖:
| 变量 | 说明 | 默认值 |
|---|---|---|
VITE_DEV_PROXY_TARGET |
开发环境后端代理目标 | http://127.0.0.1:8080 |
VITE_WVP_PROXY_TARGET |
五协议页面的开发环境 WVP 代理目标 | http://127.0.0.1:9080 |
VITE_WVP_API_BASE_URL |
可选的 WVP 接口基址;默认开发 /wvp-api、生产 /bus/wvp-server |
空 |
VITE_SSO_PROXY_TARGET |
开发环境 SSO 代理目标 | http://oort.oortcloudsmart.com:21410/bus/apaas-sso |
VITE_API_BASE_URL |
生产环境接口基址 | http://oort.oortcloudsmart.com:21410/bus/vls-server |
VITE_BLADE_CLIENT_AUTH_HEADER |
OAuth Client Basic 认证头 | Basic c2FiZXI6c2FiZXJfc2VjcmV0 |
示例 .env.local:
# 将开发请求代理到本地后端
VITE_DEV_PROXY_TARGET=http://127.0.0.1:8080
VITE_WVP_PROXY_TARGET=http://127.0.0.1:9080
ISUP、RTSP、ONVIF、国标和大华页面采用前端双服务接入,业务仍由独立 WVP 后端处理;WVP 仅增加用于校验 VLStream Token 的轻量认证适配,协议服务、数据和原生 SDK 不迁移到 VLStream 后端。部署、Token、Nginx 代理及 Windows/Linux SDK 边界见 WVP 五协议前端联合接入说明。
构建与部署
1. 构建生产产物
cd VLStream-ui
npm run build
产物目录:VLStream-ui/dist/
⚠️ 注意:生产构建的
base路径固定为/bus/vls-ui/(见vite.config.js),需确保部署路径与之匹配。
2. 使用 Nginx 部署
将 dist/ 内的全部文件部署到 Nginx 静态目录(如 /usr/share/nginx/html/),并参考 VLStream-ui/nginx.conf.example 配置站点:
server {
listen 21410;
server_name your-domain.com;
# 前端静态资源
location /bus/vls-ui/ {
alias /usr/share/nginx/html/;
try_files $uri $uri/ /bus/vls-ui/index.html;
# 如需多线程视频处理,启用以下跨域隔离头:
# add_header Cross-Origin-Embedder-Policy "require-corp";
# add_header Cross-Origin-Opener-Policy "same-origin";
}
# 代理后端网关 API(vls-server)
location /bus/vls-server/ {
proxy_pass http://your-backend-gateway:18080/;
# ... proxy_set_header / CORS 头,详见示例配置
}
# 代理统一用户平台 API(apaas-sso)
location /bus/apaas-sso/ {
proxy_pass http://your-backend-gateway:18080/;
# ...
}
}
部署要点:
- 静态站点需以
/bus/vls-ui/为根路径提供服务,并开启 History 模式的try_files回退到index.html。 - 后端网关与 SSO 网关由 Nginx 反向代理转发,避免前端跨域问题。
- 如需启用
SharedArrayBuffer(多线程视频解码),需配置COEP/COOP响应头。
架构与认证
后端架构
前端为纯前端工程,所有业务能力依赖后端服务:
- 后端框架:SpringBlade 微服务(
blade-auth认证、blade-system系统、blade-job调度、vls-*业务服务等)。 - 统一认证(SSO):对接
apaas-sso统一用户平台,支持外部平台登录态透传、URL Token 跳转、本地 Token 缓存多级回退。 - 网关:生产环境通过 Nginx 反向代理统一暴露于
/bus/vls-server/。
认证机制
src/utils/request.js 中封装了三套 axios 实例(业务请求、图片上传、认证请求),统一处理:
- 请求头注入:自动写入
Authorization、blade-auth、accesstoken,兼容 SpringBlade 的 JWT 认证。 - OAuth Client 认证:登录取 Token 时使用 Basic Client 认证头。
- Token 多级读取:URL 参数 → sessionStorage → localStorage。
- 统一错误处理:识别 SpringBlade
success: false业务错误,并按 HTTP 状态码给出中文提示。
src/utils/ 下还包含完整的跨系统 Token 同步工具(tokenSync、crossSystemTokenSync、cookieTokenSync、storageEventSync 等),用于与外部统一用户平台保持登录态一致。
许可证
本项目基于 MIT License 开源。
Copyright (c) 2026 VLStream