Mac wvp-GB28181-pro 本地开发部署环境记录

📅 2026/7/3 12:43:04 👁️ 阅读次数 📝 编程学习
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
后端 Profiledev
后端端口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:dev

3. 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 密码:admin

4. 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:10000

5. ZLMediaKit 本地配置

ZLMediaKit 使用 Mac 本地编译的MediaServer

启动路径示例:

/Users/lizhenglee/CLionProjects/ZLMediaKit/release/darwin/Debug/MediaServer

启动后需要确认监听端口:

HTTP: 80 RTSP: 554 RTMP: 1935 RTP: 10000

WVP 当前媒体配置:

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-ipstream-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:LISTEN

6. 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-arootping

ZLMediaKit:

/Users/lizhenglee/CLionProjects/ZLMediaKit/release/darwin/Debug/MediaServer

IDEA 启动:

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/dist

9. 点播问题排查

如果设备注册成功,但点播失败,重点看 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局域网IP

10. 常用检查命令

检查 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 secretqCJU77A6LJOeldE56QU5rUwbgreGLH0y

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