Windows下WVP+ZLMediaKit服务搭建全流程实战指南
最近在帮客户部署GB28181视频监控平台时,发现Windows环境下搭建WVP和ZLMediaKit的完整教程并不多见。作为一套开源的国标视频平台解决方案,WVP-PRO配合ZLMediaKit能够实现设备接入、流媒体转发、录像回放等核心功能。本文将基于最新版本,手把手带你避开我踩过的所有坑。
1. 环境准备与依赖安装
在开始前,请确保你的Windows系统是64位版本,建议使用Windows 10或更高版本。我遇到过不少问题都源于环境配置不当,特别是以下这些关键组件:
- Java开发环境:推荐JDK 11(LTS版本),注意设置JAVA_HOME环境变量
- Node.js:前端编译需要,建议安装14.x以上版本
- Maven:3.6.0+版本,用于后端项目构建
- MySQL:5.7或8.0版本,记得开启binlog
- Redis:最新稳定版即可
提示:安装MySQL时建议选择"Developer Default"配置,这样可以自动安装MySQL Workbench,后续数据库管理会更方便
验证环境是否就绪的几个关键命令:
java -version npm -v mvn -version如果这些命令都能正确输出版本信息,说明基础环境已经准备就绪。我强烈建议在开始前先创建一个专门的工作目录,比如D:\gb28181,所有相关文件都放在这里,避免路径混乱。
2. WVP-PRO服务部署详解
2.1 项目获取与编译
WVP-PRO有两个主要的代码仓库,国内用户建议使用Gitee镜像:
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git cd wvp-GB28181-pro前端编译是第一个容易出问题的环节。进入web_src目录前,建议先配置npm淘宝镜像:
npm config set registry https://registry.npmmirror.com cd web_src npm install npm run build常见问题处理:
- 如果npm install报错,尝试删除node_modules后重新执行
- 编译时报错缺少Python环境,需要安装Windows Build Tools
- 内存不足可以设置临时环境变量:
set NODE_OPTIONS=--max_old_space_size=4096
2.2 数据库初始化
MySQL配置建议使用以下参数创建数据库:
CREATE DATABASE wvp CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;初始化脚本位于项目的sql/mysql目录,只需执行最新的init.sql即可。我曾遇到过执行顺序错误导致表结构不完整的问题,所以务必注意:
- 只执行init.sql
- 不要执行upgrade开头的升级脚本
- 确认所有表都创建成功
2.3 关键配置调整
配置文件主要修改两个文件:application.yml和application-dev.yml。以下是最容易出错的配置项:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| spring.profiles.active | dev | 开发环境使用dev |
| datasource.url | jdbc:mysql://127.0.0.1:3306/wvp | 数据库连接地址 |
| sip.ip | 本机内网IP | 不能使用127.0.0.1 |
| media.id | 自定义ID | ZLM服务器唯一标识 |
| media.ip | ZLM服务器IP | 通常与WVP同服务器 |
特别要注意sip和media相关配置,这是实现GB28181协议通信的关键。我曾经因为IP配置错误导致设备始终无法注册成功。
3. ZLMediaKit服务部署
3.1 Windows版编译与运行
ZLMediaKit官方提供了Windows预编译版本,下载解压后可直接运行:
# 下载最新release版本 https://github.com/ZLMediaKit/ZLMediaKit/releases # 解压后进入release目录 cd ZLMediaKit\release\windows\Debug start.bat首次运行需要修改config.ini配置文件,重点关注以下参数:
[api] secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc # 与WVP配置一致 [rtp_proxy] port=30000 # 端口范围起始 [rtp] timeoutSec=15 # 流超时时间3.2 与WVP的联动配置
WVP和ZLM的配合工作需要确保以下几点:
- secret一致:两边api.secret必须相同
- IP可达性:确保WVP能访问ZLM的IP和端口
- 防火墙设置:开放5060(SIP)、30000-30500(RTP)等端口
验证联动是否成功的方法:
- 启动ZLM服务,观察日志无报错
- 启动WVP服务,检查启动日志是否有ZLM连接成功提示
- 访问WVP的
http://localhost:18080,查看服务器状态
4. 常见问题排查手册
4.1 设备注册失败
这是最常见的问题,排查步骤:
- 检查SIP配置中的IP是否为设备可达地址
- 确认5060端口未被占用且防火墙已放行
- 使用Wireshark抓包分析SIP信令交互
4.2 视频流无法播放
流媒体相关问题通常表现为黑屏或加载失败:
- 检查ZLM日志:确认收到推流请求
- 验证端口开放:确保RTP端口范围(30000-30500)可用
- 测试直接播放:尝试用VLC播放rtsp流
4.3 性能优化建议
当设备数量较多时,可以考虑以下优化:
# 在application-dev.yml中调整 spring: datasource: druid: max-active: 100 # 数据库连接池大小 max-wait: 10000 # 最大等待时间 redis: poolMaxTotal: 500 # Redis连接池大小对于Windows环境,还需要注意:
- 关闭不必要的后台程序
- 调整系统TCP/IP参数
- 定期重启服务释放资源
5. 进阶配置与功能扩展
5.1 级联上级平台
WVP支持向上级平台级联,配置要点:
- 在"系统管理-服务器配置"中添加上级平台
- 填写正确的SIP账号信息
- 配置转发规则和权限
5.2 录像存储与管理
虽然可以关闭自动录像,但关键监控点建议开启:
user-settings: record-sip: true record-push-live: true存储位置在ZLM配置中指定:
[record] appName=record fileBufSize=65536 filePath=./www/record/5.3 集群部署方案
对于高可用场景,可以采用:
- WVP多实例+负载均衡
- ZLM边缘节点部署
- Redis哨兵模式
- MySQL主从复制
这种架构下,关键在于保持状态同步和会话一致性。