当前位置: 首页 > news >正文

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
http://www.jsqmd.com/news/1115386/

相关文章:

  • 学而思T6深度解读:当AI家教长出“数字灵魂“,教育从此不再拼爹
  • 【Springboot毕设全套源码+文档】基于springboot人像后期融合网站的设计与实现的设计与实现(丰富项目+远程调试+讲解+定制)
  • OneMore插件终极指南:如何让OneNote变成你的生产力利器
  • 突破游戏限制:Wand-Enhancer本地增强方案完全指南
  • hwinfo:跨平台硬件信息库的现代C++解决方案
  • ICM-42688-P与STM32F413ZH在工业振动监测中的应用
  • 思源宋体CN:解决中文排版痛点的7字重免费解决方案
  • FigmaCN:基于DOM观测的实时界面本地化引擎技术解析
  • STM32L4S5ZI与MAX9744构建高效音频增强系统
  • Windows Defender完全禁用指南:专业工具助你彻底释放系统性能
  • 网盘直链下载助手:重新定义浏览器下载体验的九大网盘解决方案
  • 运营人员跨系统数据搬运桌面Agent:2026智能体驱动的跨系统协同与效率革命
  • 终极方案:Scroll Reverser专业解决macOS多设备滚动冲突
  • CTFshow Web 入门|反弹 Shell 构造超详细 Writeup(Netcat+cpolar+无公网 IP 解决方案)
  • 数据治理“治而不愈”的魔咒,这次真有人敢接招了
  • Linux命令实战:top、sort、grep命令深度解析与操作指南
  • 烟草行业专卖管理与数据统计Agent方案:构建数智化监管与精准营销新范式
  • 5分钟掌握Video2X:用AI技术让模糊视频秒变高清
  • 计算机毕业设计之基于大数据技术的南宁市共享单车需求及停放点调度的预测实现
  • 艾尚伊护HPV凝胶完整副作用大全:轻度/中度/重度反应区分(附处理方案)
  • Obsidian Excel插件:在笔记中创建和管理专业电子表格
  • STM32 EEPROM数据存储方案与可靠性设计
  • 基于PIC18LF46K22与UG95的远程监控系统设计与实现
  • Adobe-GenP 3.0:创意工作者的灵活工具选择
  • 渠道有短板,运营来补位:三个精细化操作思路
  • 如何用h5maker零代码制作专业H5页面:完整免费教程
  • Agent落地实战:从取数到数据治理全链路自动化指南,小白程序员必备,值得收藏
  • 华为交换机配置备份实战:FTP与SecureCRT指南
  • 计算机毕业设计之基于大数据技术的空气质量监测设计与实现
  • 596w+量级| 数据升级| CnOpenData中国高校专利统计数据