WVP-PRO本地部署实战:从零搭建海康摄像头国标接入平台
1. 环境准备搭建基础服务框架第一次接触WVP-PRO的朋友可能会被各种组件搞晕其实核心就三个数据库、流媒体服务和WVP主程序。我去年在帮某连锁超市部署监控系统时发现先理清组件关系能避免80%的部署错误。MySQL和Redis的安装建议推荐使用Docker快速部署特别是测试环境。用官方镜像比手动安装省心很多记得把数据卷挂载出来docker run --name mysql -e MYSQL_ROOT_PASSWORDyourpassword -p 3306:3306 -v /data/mysql:/var/lib/mysql -d mysql:5.7 docker run --name redis -p 6379:6379 -v /data/redis:/data -d redisZLMediaKit的部署技巧 原始文章用了docker-compose这里分享个实用技巧第一次启动时先不挂载配置文件等容器生成默认配置后复制出来修改。这样做有两个好处避免因配置文件格式错误导致服务无法启动能保留原始配置作为参考具体操作# 启动临时容器 docker run -d --name zlm_temp zlmediakit/zlmediakit:master # 复制配置文件到宿主机 docker cp zlm_temp:/opt/media/conf /path/to/your/conf # 删除临时容器 docker rm -f zlm_temp2. 流媒体服务配置ZLMediaKit深度调优很多人卡在ZLM和WVP的对接环节关键是要搞懂这两个参数mediaServerId相当于服务指纹两边必须完全一致secret相当于握手密码建议用强密码生成器创建config.ini关键配置[general] mediaServerIdzlmediakit-local # 必须与WVP配置一致 secretRcMfBHDyaozutIsaSXMaAxlXTkytRslR # 建议修改为复杂字符串 [hook] enable1 admin_paramssecretRcMfBHDyaozutIsaSXMaAxlXTkytRslR # 同上端口映射避坑指南UDP端口范围建议缩小到50000-50050即可如果服务器有防火墙记得放行这些端口TCP: 1935(RTMP), 8085(HTTP), 554(RTSP)UDP: 10000(SIP), 50000-50050(媒体流)3. WVP-PRO后端部署从配置文件到服务启动application.yaml是WVP的核心我整理了配置模板供参考server: port: 18082 ssl: enabled: false sip: ip: 192.168.1.89 # 本机IP port: 5070 domain: 4401020049 # 行政区划代码 id: 44010200492000000001 password: admin123 # 设备认证密码 media: id: zlmediakit-local # 必须与ZLM配置一致 ip: 192.168.1.73 # ZLM服务器内网IP http-port: 8085 # ZLM的HTTP端口 stream-ip: 192.168.1.73 # 流地址IP sdp-ip: 192.168.1.73 # SDP信令IP secret: RcMfBHDyaozutIsaSXMaAxlXTkytRslR # 与ZLM一致常见启动问题排查端口冲突用netstat -tunlp检查5070和18082端口数据库连接失败检查MySQL用户权限和字符集设置SIP服务无法启动确认IP配置不是127.0.0.14. 前端部署与设备接入实战前端启动看似简单但有几个隐藏坑点Node版本建议v14-v16新版可能兼容性问题如果修改了后端端口需要同步修改前端配置// src/api/base.js const baseUrl http://192.168.1.89:18082海康摄像头接入详解登录摄像头Web界面进入网络-高级配置-平台接入启用GB/T28181协议填写以下参数SIP服务器ID44010200492000000001与WVP配置一致SIP服务器地址192.168.1.89WVP服务器IPSIP服务器端口5070传输协议TCP认证ID摄像头编号如34020000001320000001认证密码admin123与WVP配置一致在WVP前端点击国标设备应该能看到摄像头自动注册上线视频调阅异常处理如果能看到设备但无法播放视频检查ZLM的流媒体端口是否开放在摄像头端抓包确认INVITE信令是否到达查看ZLM日志确认是否收到媒体流5. 生产环境优化建议经过三个月的实际运行我总结出这些优化点性能调优参数# 在application.yaml增加 spring: datasource: hikari: maximum-pool-size: 20 connection-timeout: 30000 redis: timeout: 5000 lettuce: pool: max-active: 30安全加固措施修改默认密码包括MySQL root、Redis、SIP密码启用HTTPS申请免费SSL证书配置到Nginx限制访问IP在ZLM配置中设置allow_ips高可用方案ZLM集群部署通过多节点负载均衡实现WVP多实例共享同一数据库前端用Nginx做负载定时备份数据库每日全量备份binlog6. 典型问题解决方案设备频繁掉线检查网络延迟PING值应100ms调整SIP心跳间隔默认60秒sip: keepalive-timeout: 120 # 单位秒视频延迟大在ZLM中开启TCP_NODELAY[rtsp] tcp_nodelay1降低视频码率或分辨率检查网络带宽是否充足历史录像查询慢为record表添加时间索引配置Redis缓存查询结果考虑使用MinIO做分布式存储