从零构建Windows国标视频平台:WVP+ZLMediakit全流程实战指南
第一次接触国标视频平台部署时,我盯着满屏的配置文件参数和陌生的术语列表,感觉像在破解某种神秘代码。直到成功在公网看到监控画面那一刻,才发现原来Windows环境下的WVP+ZLMediakit部署可以如此清晰——只要避开那些教科书不会告诉你的"坑"。
1. 环境准备:搭建稳固地基
在Windows上部署视频平台,就像组装一台精密仪器,每个零件都需要精准就位。我建议先创建一个专用文件夹(例如C:\GB28181),所有组件都将在这里安家。
必备组件清单:
- Java 8+运行环境(推荐JDK11)
- 绿色版Redis 5.0+(无需安装,解压即用)
- Visual Studio 2017(社区版即可)
- Git for Windows(用于获取源码)
重要提示:VS2017安装时务必勾选"使用C++的桌面开发"工作负载,这是编译ZLMediakit的关键依赖。
下载Redis绿色版后,通过命令行启动服务:
redis-server.exe redis.windows.conf验证Redis是否正常运行:
redis-cli.exe ping # 应返回 PONG2. 源码编译:打造核心引擎
2.1 WVP-GB28181编译
虽然官方文档主要面向Linux,但Windows同样可以完成编译:
git clone https://github.com/648540858/wvp-GB28181-pro.git cd wvp-GB28181-pro mvn clean package -DskipTests编译完成后,在target目录会生成wvp-pro-*.jar文件,这就是我们的核心服务。
2.2 ZLMediakit编译实战
这个媒体服务器是视频流转发的核心,Windows编译需要特别注意:
- 用VS2017打开
ZLMediaKit\windows\ZLMediaKit.sln - 选择
Release配置 - 右键
ZLMediaKit项目→"生成"
编译成功后,在ZLMediaKit\Release目录会生成:
MediaServer.exe(主程序)config.ini(配置文件模板)
3. 关键配置:通向公网的桥梁
配置文件是部署中最容易出错的环节,特别是公网环境。下面这个表格对比了局域网与公网配置的核心差异:
| 配置项 | 局域网环境 | 公网环境 | 作用说明 |
|---|---|---|---|
| media.ip | 内网IP(192.168.x.x) | 内网IP | ZLM服务器内网通信地址 |
| stream-ip | 可空 | 公网IP或域名 | 视频流对外访问地址 |
| sdp-ip | 可空 | 公网IP或域名 | SDP协议中的媒体地址 |
| rtp.enable | false | true | 启用多端口RTP传输 |
| port-range | 可空 | 30000-30500 | RTP端口范围 |
必须修改的WVP配置示例:
media: ip: 192.168.1.100 # ZLM服务器内网IP stream-ip: your-public-ip.com # 替换为你的公网IP或域名 sdp-ip: your-public-ip.com # 同上 http-port: 80 # 与ZLM配置一致 rtp: enable: true # 公网必须开启 port-range: 30000-30500 # RTP端口范围4. 网络配置:打通最后一道关卡
公网部署时,防火墙和端口转发是最大的"拦路虎"。我曾花了三小时才发现云服务商的安全组没配置完整。
必须开放的端口清单:
- TCP 5060(SIP信令)
- TCP 80/443(HTTP/HTTPS)
- UDP 30000-30500(RTP媒体流)
- TCP 18080(WVP管理界面)
在阿里云/腾讯云等平台,还需要配置安全组规则:
# 示例:阿里云安全组添加入站规则 协议类型: 自定义TCP 端口范围: 5060,80,18080 授权对象: 0.0.0.0/0 协议类型: 自定义UDP 端口范围: 30000-30500 授权对象: 0.0.0.0/05. 服务启动与验证
正确的启动顺序能避免许多诡异问题:
- 启动Redis服务
- 运行ZLMediakit:
MediaServer.exe -c config.ini -s zlm.conf - 启动WVP:
java -jar wvp-pro-*.jar
验证服务是否正常:
- 访问
http://localhost:18080应看到WVP登录页 - ZLM控制台
http://localhost:80显示服务器状态 - 在路由器或云平台查看端口连通性
6. 常见故障排查指南
遇到问题时,这几个检查点能快速定位原因:
现象:设备注册失败
- 检查WVP的
sip.ip是否配置正确 - 确认5060端口未被占用(
netstat -ano | findstr 5060) - 查看WVP日志中的SIP消息交换
现象:能注册但无视频流
- 确认
stream-ip和sdp-ip是公网可达地址 - 检查RTP端口范围是否开放UDP协议
- 在ZLM控制台查看是否有流生成
现象:公网访问延迟高
- 考虑开启ZLM的TCP传输模式(修改config.ini)
- 检查服务器带宽是否充足
- 尝试调整
rtp.port-range为更小范围
7. 高级调优与生产建议
当系统需要支持更多设备时,这些参数调整很关键:
ZLM性能优化:
[thread] # 根据CPU核心数调整 thread_num=4 [rtp] # 增大RTP缓存 rtp_max_size=10MBWVP数据库优化:
spring: datasource: max-active: 20 # 默认1太小 min-idle: 5 max-wait: 30000对于生产环境,建议:
- 使用Nginx反向代理HTTPS
- 配置日志轮转和监控
- 定期备份SQLite数据库
- 考虑使用MySQL替代SQLite
整个部署过程中最让我意外的是——原来最难的不是技术实现,而是那些看似简单的网络配置细节。记得第一次成功通过手机4G网络查看监控画面时,那种成就感比写完十万行代码还要强烈。