Windows环境快速部署WVP+ZLMediaKit:GB28181视频流获取实战指南
1. 环境准备搭建WVPZLMediaKit的基础条件在Windows系统下部署WVPWeb 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?useSSLfalse 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] secret035c73f7-bb6b-4889-a715-d9eb2d1925cc # 保持与WVP配置一致 [http] port80 # HTTP访问端口 sslport443 # HTTPS端口可选 [rtp_proxy] port10000 # RTP代理端口范围 range30000-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的日志信息都很详细按照时间线对照分析很快就能定位问题原因。