1. 环境准备:搭建WVP+ZLMediaKit的基础条件
在Windows系统下部署WVP(Web Video Platform)和ZLMediaKit组合方案前,需要准备好基础运行环境。我去年给某园区部署监控平台时就因为漏装了一个组件,折腾了大半天才发现问题。这里把必备工具和注意事项都列出来,帮你避开这些坑。
首先需要安装五大基础组件:
- Java开发环境:推荐JDK 1.8或11版本,记得配置JAVA_HOME环境变量。有个简单验证方法:在cmd输入
java -version能显示版本号就说明装对了 - MySQL数据库:5.7或8.0版本都可以,建议用MySQL Workbench管理更方便
- Node.js环境:用于前端编译,安装时记得勾选"Add to PATH"选项
- Maven构建工具:建议3.6+版本,装好后在命令行运行
mvn -v测试 - Git版本控制:用来拉取项目代码,安装时选择"Use Git from Windows Command Prompt"
注意:所有安装路径不要包含中文或空格,我之前有个项目因为路径里有"程序文件"四个字导致编译失败。
验证环境是否齐全可以用这个命令组合:
java -version && mvn -v && node -v && npm -v && git --version如果发现某个命令不识别,就需要检查对应软件的安装和环境变量配置。建议在开始菜单搜索"环境变量",在系统属性里检查PATH变量是否包含各工具的bin目录路径。
2. WVP服务部署实战
2.1 获取和编译项目代码
WVP-PRO的源码托管在Gitee和GitHub,国内用户建议用Gitee镜像,速度更快:
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git cd wvp-GB28181-pro重点来了:前端编译是新手最容易出错的地方。进入web_src目录后,先修改npm源为国内镜像:
cd web_src npm config set registry https://registry.npmmirror.com然后执行安装和构建:
npm install npm run build如果遇到node-sass报错,可以尝试:
npm uninstall node-sass npm install sass2.2 数据库初始化
在MySQL中新建名为wvp的数据库,字符集用utf8mb4。然后执行项目sql目录下的初始化脚本:
CREATE DATABASE wvp CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE wvp; SOURCE /path/to/wvp-GB28181-pro/sql/init.sql;重要提示:只需要执行init.sql这一个脚本,后续的upgrade脚本是给升级用的,初次部署千万别执行!
2.3 配置文件详解
WVP有两个关键配置文件需要修改:
- application.yml- 主要设置运行环境
spring: application: name: wvp profiles: active: dev # 使用开发环境配置- application-dev.yml- 核心配置所在,重点修改这些部分:
# 数据库配置 datasource: url: jdbc:mysql://127.0.0.1:3306/wvp?useSSL=false username: root password: yourpassword # Redis配置(如果没有可以暂时不配) redis: host: 127.0.0.1 port: 6379 # SIP协议配置(GB28181核心) sip: ip: 192.168.1.100 # 本机内网IP port: 5060 domain: 4401020049 # 模拟的行政区划代码 id: 44010200492000000001 # 媒体服务器配置(先保留默认,等ZLMediaKit装好再改) media: id: your_zlm_id ip: 192.168.1.100 http-port: 80特别提醒:关闭自动录像功能可以节省磁盘空间:
user-settings: record-push-live: false record-sip: false3. ZLMediaKit媒体服务器部署
3.1 Windows版ZLMediaKit安装
从官网下载最新Windows版本解压后,进入release目录,双击运行MediaServer.exe。看到控制台输出"您可以使用浏览器访问http端口"就说明启动成功了。
验证服务是否正常:
- 浏览器访问 http://127.0.0.1/index/api/getApiList
- 应该能看到返回的JSON格式API列表
3.2 关键配置调整
修改config.ini配置文件中的这些参数:
[api] secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc # 保持与WVP配置一致 [http] port=80 # HTTP访问端口 sslport=443 # HTTPS端口(可选) [rtp_proxy] port=10000 # RTP代理端口范围 range=30000-30500 # 必须与WVP配置一致3.3 与WVP的联动配置
回到WVP的application-dev.yml,修改media部分:
media: id: zlm001 # 自定义ID ip: 192.168.1.100 # ZLM服务器IP http-port: 80 # ZLM的HTTP端口 secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc # 与ZLM配置一致 rtp: enable: true port-range: 30000,30500 # 与ZLM配置一致4. 服务启动与调试
4.1 启动WVP服务
后端启动有两种方式:
- 开发模式:在IDE中直接运行
WvpApplication主类 - 生产模式:打包后运行
mvn clean package java -jar target/wvp-pro.jar前端启动:
cd web_src npm run dev4.2 常见问题排查
端口冲突问题:
- 检查5060(SIP)、80(HTTP)、30000-30500(RTP)端口是否被占用
- 使用
netstat -ano | findstr "5060"命令查看端口占用情况
视频流无法播放:
- 确认ZLM控制台有流注册记录
- 检查WVP的media配置是否与ZLM一致
- 测试直接访问ZLM的流地址:http://ZLM_IP/live/streamId.flv
设备注册失败:
- 确认SIP配置中的IP和端口正确
- 检查设备端配置的SIP服务器地址
- 使用Wireshark抓包分析SIP信令交互
登录WVP管理界面(默认账号admin/admin)后,在"国标设备"菜单添加设备。设备接入时有个小技巧:先把设备端的注册有效期设为60秒,方便调试。等全部调通后再改为3600秒。
第一次成功看到监控画面时,建议先测试关键功能:
- 实时直播(主码流/子码流切换)
- PTZ云台控制
- 录像回放
- 报警信息接收
这套组合在实际项目中表现很稳定,我部署的某个停车场系统已经连续运行200多天。关键是要确保初始配置准确,特别是SIP和媒体端口的对应关系。遇到问题多看日志,WVP和ZLM的日志信息都很详细,按照时间线对照分析很快就能定位问题原因。