325 lines
6.5 KiB
Markdown
325 lines
6.5 KiB
Markdown
|
|
# 快速开始(使用 Java 17)
|
|||
|
|
|
|||
|
|
## 📋 前置要求
|
|||
|
|
|
|||
|
|
✅ 已安装:
|
|||
|
|
- Java 17(已确认)
|
|||
|
|
- Node.js(已确认)
|
|||
|
|
- Docker(已确认)
|
|||
|
|
|
|||
|
|
⚠️ 需要安装:
|
|||
|
|
- **Maven 3.3+**
|
|||
|
|
|
|||
|
|
## 🔧 安装 Maven
|
|||
|
|
|
|||
|
|
### 方法一:手动安装(推荐)
|
|||
|
|
|
|||
|
|
1. **下载 Maven**
|
|||
|
|
- 访问:https://maven.apache.org/download.cgi
|
|||
|
|
- 下载:`apache-maven-3.9.9-bin.zip`
|
|||
|
|
- 国内镜像:https://mirrors.aliyun.com/apache/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.zip
|
|||
|
|
|
|||
|
|
2. **解压到指定目录**
|
|||
|
|
```
|
|||
|
|
解压到:C:\Program Files\apache-maven-3.9.9
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **配置环境变量**
|
|||
|
|
- 打开"系统属性" → "高级" → "环境变量"
|
|||
|
|
- 在"系统变量"中找到 `Path`
|
|||
|
|
- 点击"编辑" → "新建"
|
|||
|
|
- 添加:`C:\Program Files\apache-maven-3.9.9\bin`
|
|||
|
|
- 点击"确定"保存
|
|||
|
|
|
|||
|
|
4. **验证安装**
|
|||
|
|
|
|||
|
|
打开**新的** CMD 或 PowerShell:
|
|||
|
|
```cmd
|
|||
|
|
mvn -version
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该显示:
|
|||
|
|
```
|
|||
|
|
Apache Maven 3.9.9
|
|||
|
|
Maven home: C:\Program Files\apache-maven-3.9.9
|
|||
|
|
Java version: 17.0.x
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方法二:使用 Chocolatey(如果已安装)
|
|||
|
|
|
|||
|
|
```powershell
|
|||
|
|
# 以管理员身份运行 PowerShell
|
|||
|
|
choco install maven
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方法三:使用 Scoop
|
|||
|
|
|
|||
|
|
```powershell
|
|||
|
|
scoop install maven
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 启动步骤
|
|||
|
|
|
|||
|
|
### 第一次使用
|
|||
|
|
|
|||
|
|
1. **确保基础服务运行**
|
|||
|
|
```cmd
|
|||
|
|
cd docker
|
|||
|
|
docker compose up -d polaris-redis polaris-mysql polaris-media
|
|||
|
|
cd ..
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **编译项目**
|
|||
|
|
|
|||
|
|
双击运行:`编译.bat`
|
|||
|
|
|
|||
|
|
或在 CMD 中:
|
|||
|
|
```cmd
|
|||
|
|
编译.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
脚本会自动:
|
|||
|
|
- ✅ 检查 Java 和 Maven
|
|||
|
|
- ✅ 编译前端(Vue)
|
|||
|
|
- ✅ 编译后端(Spring Boot)
|
|||
|
|
- ✅ 检查基础服务状态
|
|||
|
|
|
|||
|
|
3. **启动应用**
|
|||
|
|
|
|||
|
|
双击运行:`启动.bat`
|
|||
|
|
|
|||
|
|
或在 CMD 中:
|
|||
|
|
```cmd
|
|||
|
|
启动.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **访问应用**
|
|||
|
|
- 管理后台:http://localhost:18080
|
|||
|
|
- API 文档:http://localhost:18080/doc.html
|
|||
|
|
- 默认账号:`admin` / `admin`
|
|||
|
|
|
|||
|
|
### 后续使用
|
|||
|
|
|
|||
|
|
修改代码后,只需:
|
|||
|
|
```cmd
|
|||
|
|
编译.bat
|
|||
|
|
启动.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📂 功能模块位置
|
|||
|
|
|
|||
|
|
### 1. 主码流/子码流切换
|
|||
|
|
```
|
|||
|
|
src/main/java/com/genersoft/iot/vmp/gb28181/
|
|||
|
|
├── service/impl/PlayServiceImpl.java # 播放服务(包含码流切换逻辑)
|
|||
|
|
├── controller/DeviceQuery.java # 设备查询控制器
|
|||
|
|
└── bean/DeviceChannel.java # 通道实体(streamType字段)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**API 端点:**
|
|||
|
|
- 主码流:`GET /api/play/{deviceId}/{channelId}/start?streamType=0`
|
|||
|
|
- 子码流:`GET /api/play/{deviceId}/{channelId}/start?streamType=1`
|
|||
|
|
|
|||
|
|
### 2. 云台控制(转向、拉近、拉远)
|
|||
|
|
```
|
|||
|
|
src/main/java/com/genersoft/iot/vmp/gb28181/
|
|||
|
|
├── controller/PtzController.java # 云台控制主接口
|
|||
|
|
├── service/
|
|||
|
|
│ ├── IPTZService.java # PTZ 服务接口
|
|||
|
|
│ └── impl/PTZServiceImpl.java # PTZ 服务实现
|
|||
|
|
├── transmit/cmd/impl/SIPCommander.java # 发送 SIP 命令
|
|||
|
|
└── bean/
|
|||
|
|
├── FrontEndControlCodeForPTZ.java # PTZ 控制码
|
|||
|
|
└── FrontEndCode.java # 前端控制码
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**API 端点:**
|
|||
|
|
- 左转:`GET /api/front-end/{deviceId}/{channelId}/left`
|
|||
|
|
- 右转:`GET /api/front-end/{deviceId}/{channelId}/right`
|
|||
|
|
- 上转:`GET /api/front-end/{deviceId}/{channelId}/up`
|
|||
|
|
- 下转:`GET /api/front-end/{deviceId}/{channelId}/down`
|
|||
|
|
- 拉近:`GET /api/front-end/{deviceId}/{channelId}/zoom_in`
|
|||
|
|
- 拉远:`GET /api/front-end/{deviceId}/{channelId}/zoom_out`
|
|||
|
|
|
|||
|
|
### 3. 无限制设备接入
|
|||
|
|
```
|
|||
|
|
src/main/java/com/genersoft/iot/vmp/gb28181/
|
|||
|
|
├── service/impl/DeviceServiceImpl.java # 设备管理服务
|
|||
|
|
├── transmit/event/request/impl/
|
|||
|
|
│ ├── RegisterRequestProcessor.java # 设备注册处理
|
|||
|
|
│ └── MessageRequestProcessor.java # 心跳和消息处理
|
|||
|
|
├── SipLayer.java # SIP 协议层
|
|||
|
|
└── dao/
|
|||
|
|
├── DeviceMapper.java # 设备数据访问
|
|||
|
|
└── DeviceChannelMapper.java # 通道数据访问
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**性能配置:**
|
|||
|
|
```yaml
|
|||
|
|
# src/main/resources/application.yml
|
|||
|
|
spring:
|
|||
|
|
datasource:
|
|||
|
|
hikari:
|
|||
|
|
maximum-pool-size: 200 # 连接池大小
|
|||
|
|
minimum-idle: 10
|
|||
|
|
|
|||
|
|
sip:
|
|||
|
|
pool-size: 100 # SIP 线程池
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔍 常见问题
|
|||
|
|
|
|||
|
|
### 1. 编译失败:Maven 命令未找到
|
|||
|
|
|
|||
|
|
**原因**:Maven 未安装或环境变量未配置
|
|||
|
|
|
|||
|
|
**解决**:按照上面的"安装 Maven"步骤操作
|
|||
|
|
|
|||
|
|
### 2. 端口被占用
|
|||
|
|
|
|||
|
|
**错误**:`Address already in use: bind`
|
|||
|
|
|
|||
|
|
**解决**:修改端口
|
|||
|
|
```yaml
|
|||
|
|
# src/main/resources/application-dev.yml
|
|||
|
|
server:
|
|||
|
|
port: 28080 # 改为其他端口
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 数据库连接失败
|
|||
|
|
|
|||
|
|
**检查 MySQL 状态**:
|
|||
|
|
```cmd
|
|||
|
|
docker ps | findstr mysql
|
|||
|
|
docker logs docker-polaris-mysql-1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**测试连接**:
|
|||
|
|
```cmd
|
|||
|
|
docker exec -it docker-polaris-mysql-1 mysql -u wvp_user -pwvp_password -e "show databases;"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. Redis 连接失败
|
|||
|
|
|
|||
|
|
**检查 Redis**:
|
|||
|
|
```cmd
|
|||
|
|
docker exec -it docker-polaris-redis-1 redis-cli ping
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该返回 `PONG`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 配置文件说明
|
|||
|
|
|
|||
|
|
### 开发环境配置
|
|||
|
|
文件:`src/main/resources/application-dev.yml`
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
spring:
|
|||
|
|
data:
|
|||
|
|
redis:
|
|||
|
|
host: 127.0.0.1
|
|||
|
|
port: 6379
|
|||
|
|
datasource:
|
|||
|
|
url: jdbc:mysql://127.0.0.1:3306/wvp?...
|
|||
|
|
username: wvp_user
|
|||
|
|
password: wvp_password
|
|||
|
|
|
|||
|
|
server:
|
|||
|
|
port: 18080
|
|||
|
|
|
|||
|
|
media:
|
|||
|
|
ip: 127.0.0.1
|
|||
|
|
http-port: 8080
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Docker 配置
|
|||
|
|
文件:`docker/.env`
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 流媒体端口
|
|||
|
|
MediaRtmp=10001
|
|||
|
|
MediaRtsp=10002
|
|||
|
|
MediaRtp=10003
|
|||
|
|
|
|||
|
|
# Web 端口
|
|||
|
|
WebHttp=8080
|
|||
|
|
|
|||
|
|
# IP 配置(公网部署时需修改)
|
|||
|
|
Stream_IP=127.0.0.1
|
|||
|
|
SDP_IP=127.0.0.1
|
|||
|
|
|
|||
|
|
# SIP 配置
|
|||
|
|
SIP_Port=8160
|
|||
|
|
SIP_Domain=3502000000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🛠️ 服务管理
|
|||
|
|
|
|||
|
|
### 查看服务状态
|
|||
|
|
```cmd
|
|||
|
|
docker ps --filter "name=polaris-"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 启动基础服务
|
|||
|
|
```cmd
|
|||
|
|
cd docker
|
|||
|
|
docker compose up -d polaris-redis polaris-mysql polaris-media
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 停止所有服务
|
|||
|
|
```cmd
|
|||
|
|
cd docker
|
|||
|
|
docker compose down
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查看日志
|
|||
|
|
```cmd
|
|||
|
|
# WVP 日志(运行时控制台输出)
|
|||
|
|
|
|||
|
|
# Docker 服务日志
|
|||
|
|
docker compose logs -f polaris-redis
|
|||
|
|
docker compose logs -f polaris-mysql
|
|||
|
|
docker compose logs -f polaris-media
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📚 相关文档
|
|||
|
|
|
|||
|
|
- [完整启动指南](启动指南-Java17.md)
|
|||
|
|
- [快速启动说明](QUICKSTART.md)
|
|||
|
|
- [官方文档](https://doc.wvp-pro.cn)
|
|||
|
|
- [GitHub](https://github.com/648540858/wvp-GB28181-pro)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚡ 快捷命令
|
|||
|
|
|
|||
|
|
```cmd
|
|||
|
|
# 一键编译
|
|||
|
|
编译.bat
|
|||
|
|
|
|||
|
|
# 一键启动
|
|||
|
|
启动.bat
|
|||
|
|
|
|||
|
|
# 查看服务状态
|
|||
|
|
docker ps --filter "name=polaris-"
|
|||
|
|
|
|||
|
|
# 重新编译并启动
|
|||
|
|
编译.bat && 启动.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
最后更新:2026-02-02
|