Mac wvp-GB28181-pro 本地开发部署环境记录
Mac 本地开发部署环境记录
本文档记录在 Mac 本机运行wvp-GB28181-pro的环境配置。当前目标是:
- MySQL 使用 Mac 本机已有服务。
- Redis 使用 Docker 容器。
- ZLMediaKit 使用 Mac 本地编译运行的
MediaServer。 - WVP 后端使用 IDEA 启动。
- 前端使用本机 Node/NPM 启动。
1. 项目信息
| 项目 | 值 |
|---|---|
| 项目目录 | /Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro |
| 后端版本 | 2.7.4 |
| 后端 Java 版本 | 21 |
| 后端 Profile | dev |
| 后端端口 | 18080 |
| 前端目录 | /Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro/web |
| 前端端口 | 9528 |
2. Java 和 IDEA
后端需要 JDK 21。
IDEA 项目 JDK 使用:
ms-21当前项目pom.xml中要求:
<java.version>21</java.version><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target>IDEA 后端启动配置:
Run/Debug Configurations Type: Application Main class: com.genersoft.iot.vmp.VManageBootstrap JDK: 21 Working directory: /Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro Active profiles: dev如果没有Active profiles输入框,可以在 VM options 中配置:
-Dspring.profiles.active=dev当前src/main/resources/application.yml已配置:
spring:profiles:active:dev3. MySQL 本地配置
本机 MySQL 使用已有服务。
当前后端配置:
spring:datasource:url:jdbc:mysql://127.0.0.1:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=trueusername:rootpassword:12345678数据库名:
wvp2全新初始化数据库:
cd/Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro mysql-uroot-p-e"DROP DATABASE IF EXISTS wvp2;"mysql-uroot-p-e"CREATE DATABASE wvp2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"mysql-uroot-pwvp2<数据库/2.7.4/初始化-mysql-2.7.4.sql注意:
- 全新库只执行
数据库/2.7.4/初始化-mysql-2.7.4.sql。 - 不要对全新库执行
数据库/2.7.4/更新-mysql-2.7.4.sql。 wvp_device_mobile_position在 2.7.4 中已经改为wvp_mobile_position。
检查默认用户:
mysql-uroot-pwvp2-e"select id, username, password from wvp_user;"默认 WVP 登录账号:
账号:admin 密码:admin4. Redis Docker 配置
Redis 使用 Docker 容器,容器名:
local-redis首次创建:
dockerrun-d\--namelocal-redis\-p6379:6379\redis:7\redis-server--requirepassroot以后启动:
dockerstart local-redis查看状态:
dockerps-a--filtername=local-redis验证 Redis:
dockerexec-itlocal-redis redis-cli-arootping正常返回:
PONG当前后端 Redis 配置:
spring:data:redis:host:127.0.0.1port:6379database:6password:roottimeout:100005. ZLMediaKit 本地配置
ZLMediaKit 使用 Mac 本地编译的MediaServer。
启动路径示例:
/Users/lizhenglee/CLionProjects/ZLMediaKit/release/darwin/Debug/MediaServer启动后需要确认监听端口:
HTTP: 80 RTSP: 554 RTMP: 1935 RTP: 10000WVP 当前媒体配置:
media:id:your_server_idip:127.0.0.1http-port:80secret:qCJU77A6LJOeldE56QU5rUwbgreGLH0ysdp-ip:192.168.0.12stream-ip:192.168.0.12rtp:enable:trueport-range:40000,45000send-port-range:50000,55000说明:
media.ip=127.0.0.1表示 WVP 本机访问 ZLM HTTP API。media.http-port=80必须和 ZLM 实际 HTTP 端口一致。media.id必须和 ZLM 的general.mediaServerId一致。当前 ZLM hook 上报的是your_server_id。media.secret必须和 ZLM 配置中的api.secret/hook.admin_params对应。sdp-ip和stream-ip必须填写摄像机能访问到的 Mac 局域网 IP,当前是192.168.0.12。
如果 WVP 日志出现:
[ZLM HOOK] 此zlm未接入 your_server_id说明 WVP 的media.id和 ZLM 的general.mediaServerId不一致。
如果 WVP 日志出现:
Failed to connect to /127.0.0.1:80说明 WVP 连接不到本地 ZLM,先确认 ZLM 已启动并监听 80:
lsof-nP-iTCP:80-sTCP:LISTEN6. WVP SIP 配置
当前 SIP 配置:
sip:port:8116domain:4101050000id:41010500002000000001password:12345678alarm:false设备接入 WVP 时常用参数:
SIP服务器IP:192.168.0.12 SIP服务器端口:8116 SIP服务器ID:41010500002000000001 SIP服务器域:4101050000 认证密码:12345678 传输协议:UDP测试设备国标编号示例:
44010200491320000001如果设备已经在数据库wvp_device中存在,并且该设备记录有单独密码,则设备密码会优先于sip.password。
检查设备密码:
mysql-uroot-pwvp2-e"select id, device_id, password from wvp_device where device_id='44010200491320000001';"7. WVP 后端启动顺序
推荐启动顺序:
1. 启动 MySQL 2. 启动 Redis Docker 容器 3. 启动 ZLMediaKit MediaServer 4. 在 IDEA 中启动 WVP 后端 5. 启动前端Redis:
dockerstart local-redisdockerexec-itlocal-redis redis-cli-arootpingZLMediaKit:
/Users/lizhenglee/CLionProjects/ZLMediaKit/release/darwin/Debug/MediaServerIDEA 启动:
Main class: com.genersoft.iot.vmp.VManageBootstrap Active profile: dev启动成功后后端地址:
http://localhost:18080如果 SIP 端口被占用:
lsof-nP-iTCP:8116-sTCP:LISTENlsof-nP-iUDP:8116结束占用进程:
kill<PID>必要时:
kill-9<PID>8. 前端 Node 环境
前端是 Vue 2 + Vue CLI 4:
"vue":"2.6.10","@vue/cli-service":"4.4.4"推荐 Node:
Node.js 16.20.2 npm 8.19.4使用 nvm:
nvm use16.20.2node-vnpm-v如果 Apple Silicon 下安装依赖遇到deasync/node-gyp编译错误,可以使用 Rosetta x64 shell:
softwareupdate --install-rosetta --agree-to-license arch-x86_64zshexportNVM_ARCH=x64 nvminstall16.20.2 nvm use16.20.2node-p"process.arch"期望输出:
x64安装依赖:
cd/Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro/webrm-rfnode_modules package-lock.jsonnpminstall--legacy-peer-deps本地启动前端:
cd/Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro/web nvm use16.20.2npmrun dev访问:
http://localhost:9528生产打包:
npmrun build:prod构建产物:
web/dist9. 点播问题排查
如果设备注册成功,但点播失败,重点看 WVP 日志中的收流地址。
错误示例:
收流地址:127.0.0.1:xxxxx rtpServer收流超时原因:
127.0.0.1 对摄像机来说是摄像机自己,不是 Mac。正确情况:
收流地址:192.168.0.12:xxxxx需要确认:
media.sdp-ip是 Mac 局域网 IP。media.stream-ip是 Mac 局域网 IP。- 摄像机能访问 Mac。
- Mac 防火墙没有拦截 ZLM/WVP。
- ZLM 的 RTP 端口范围可用。
当前配置:
media:sdp-ip:192.168.0.12stream-ip:192.168.0.12查看 Mac 局域网 IP:
ifconfig|grep"inet 192.168"如果 Mac IP 变化,需要同步修改application-dev.yml中的:
media:sdp-ip:新的Mac局域网IPstream-ip:新的Mac局域网IP10. 常用检查命令
检查 Redis:
dockerps-a--filtername=local-redisdockerexec-itlocal-redis redis-cli-arootping检查 MySQL:
mysql-uroot-p-e"show databases;"mysql-uroot-pwvp2-e"show tables;"检查后端端口:
lsof-nP-iTCP:18080-sTCP:LISTEN检查 SIP 端口:
lsof-nP-iTCP:8116-sTCP:LISTENlsof-nP-iUDP:8116检查 ZLM HTTP 端口:
lsof-nP-iTCP:80-sTCP:LISTEN检查 Mac 局域网 IP:
ifconfig|grep"inet 192.168"11. 当前关键账号和密码
| 类型 | 值 |
|---|---|
| WVP 登录账号 | admin |
| WVP 登录密码 | admin |
| MySQL 数据库 | wvp2 |
| MySQL 用户 | root |
| MySQL 密码 | 12345678 |
| Redis 密码 | root |
| SIP 认证密码 | 12345678 |
| ZLM secret | qCJU77A6LJOeldE56QU5rUwbgreGLH0y |
12. 当前本地启动清单
每次本地开发前按顺序确认:
# 1. Redisdockerstart local-redisdockerexec-itlocal-redis redis-cli-arootping# 2. ZLM/Users/lizhenglee/CLionProjects/ZLMediaKit/release/darwin/Debug/MediaServer# 3. IDEA 启动 WVP# Main class: com.genersoft.iot.vmp.VManageBootstrap# Profile: dev# 4. 前端cd/Users/lizhenglee/Documents/swzj/sp/wvp-GB28181-pro/web nvm use16.20.2npmrun dev