最近帮客户部署了一套基于 WVP-PRO 的 GB28181 视频流媒体平台,过程中踩了不少坑,特别是腾讯云服务器端口封禁的问题,折腾了好几天才解决。记录一下完整过程,供有需要的同学参考。
一、环境说明
| 项目 | 版本/配置 |
|---|---|
| 服务器 | 腾讯云 4核8G Ubuntu 22.04 |
| WVP-PRO | 2.7.4-07091454 |
| ZLMediaKit | 最新稳定版 |
| 数据库 | MySQL 8.0 |
| Redis | 6.0+ |
| WVP端口 | 18080 |
| SSH端口 | 886(非22) |
二、问题描述
部署完成后,发现 WVP 生成的流地址带了端口号:
FLV(https): https://wvp.xxwlh.net:443/rtp/xxx.live.flv FMP4: http://wvp.xxwlh.net:8091/rtp/xxx.live.mp4直接带上:443、:8091端口,播放器没问题,但腾讯云把这些端口封了,导致视频无法播放。
三、根因分析
查看 WVP JAR 包中的StreamURL.class字节码:
bash
复制
javap -c StreamURL.class | grep "ldc"发现格式字符串是:
String %s://%s:%s/%s // 4个参数,带端口正常应该是:
String %s://%s/%s // 3个参数,不带端口四、修复过程
1. 备份原JAR
bash
复制
cd /root/wvp/wvp-GB28181-pro/release cp wvp-pro-2.7.4-07091454.jar wvp-pro-2.7.4-07091454.jar.bak_$(date +%Y%m%d)2. 解压JAR
bash
复制
mkdir -p tmp_fix && cd tmp_fix jar -xf ../wvp-pro-2.7.4-07091454.jar3. 找到并修改源码
StreamURL.java 位于:
BOOT-INF/classes/com/genersoft/iot/vmp/common/StreamURL.class修改toString()方法:
java
复制
// 修改前 String.format("%s://%s:%s/%s", protocol, host, port, file) // 修改后 String.format("%s://%s/%s", protocol, host, file)4. 重新编译打包
bash
复制
# 编译 javac -cp "../BOOT-INF/lib/*:../BOOT-INF/classes" \ -d ../BOOT-INF/classes \ BOOT-INF/classes/com/genersoft/iot/vmp/common/StreamURL.java # 打包 jar -cf ../wvp-pro-2.7.4-07091454.jar . mv wvp-pro-2.7.4-07091454.jar ../wvp-pro-2.7.4-07091454.jar5. 重启WVP
bash
复制
pkill -f wvp && nohup java -jar wvp-pro-2.7.4-07091454.jar &五、验证结果
修改后生成的流地址:
FLV(https): https://wvp.xxwlh.net/rtp/xxx.live.flv FMP4: http://wvp.xxwlh.net/rtp/xxx.live.mp4端口号已移除,腾讯云环境下播放正常。
六、关键配置检查
如果你的 WVP 也生成不了 HTTPS 流地址,检查以下几点:
| 配置项 | 说明 |
|---|---|
http-ssl-port | 设为 443,不能是 0 |
ZLMsslport | 设为 0,SSL 统一走 Nginx |
| Nginx 代理顺序 | 流媒体配置要优先加载(命名0_*.conf) |
| 防火墙 | 443、18080、8091 端口都要开 |
七、常见坑汇总
| 问题 | 原因 | 解法 |
|---|---|---|
| 流地址带端口 | StreamURL.format 带端口参数 | 修改源码重新编译 |
| 无 HTTPS 流地址 | http-ssl-port=0 | 改为 443 |
| 播放器显示 URL 空 | Mixed Content 被浏览器拦截 | 确认 WVP 生成 HTTPS 地址 |
| 点播成功但 20 秒后关闭 | 前端没有实际消费流 | 检查播放器 URL 是否为 HTTPS |
八、总结
WVP + ZLMediaKit 这套组合拳很强,但版本兼容和端口配置有不少坑。这次修复的 port 问题本身不复杂,但排查定位花了比较长时间。
如果部署过程中遇到其他问题,欢迎交流。
有类似部署需求?
闲鱼搜「流媒体技术站」,提供 WVP-PRO / ZLMediaKit 部署、调试、排障服务,远程帮你搞定。
有问题也可以直接私信我。