保姆级教程:用WVP-Pro + ZLMediaKit搭建GB28181视频监控平台(含海康摄像头配置)
从零搭建GB28181视频监控平台WVP-Pro与ZLMediaKit实战指南在智能安防领域GB28181协议已经成为设备互联的国家标准协议。这套协议解决了不同厂商设备之间的兼容性问题使得视频监控系统的搭建不再受限于单一品牌。本文将手把手带你完成基于WVP-Pro和ZLMediaKit的完整监控平台搭建涵盖从服务器部署到海康摄像头接入的全流程。1. 环境准备与基础组件安装1.1 硬件与系统要求搭建GB28181平台前需要确保服务器满足以下最低配置要求CPU4核及以上视频转码对CPU要求较高内存8GB及以上建议16GB以获得更好性能存储SSD硬盘至少100GB可用空间视频存储需求视具体场景而定网络千兆网卡公网IP或内网穿透配置操作系统Ubuntu 20.04/22.04 LTS或CentOS 7/8提示如果计划接入多路高清摄像头建议配置更高性能的服务器。每路1080P视频流转码约需要1个CPU核心。1.2 依赖环境安装首先更新系统并安装基础依赖# Ubuntu/Debian sudo apt update sudo apt upgrade -y sudo apt install -y git maven openjdk-11-jdk ffmpeg # CentOS/RHEL sudo yum update -y sudo yum install -y git maven java-11-openjdk-devel ffmpeg验证Java环境是否安装成功java -version # 应输出类似openjdk version 11.0.15 2022-04-191.3 数据库配置WVP-Pro支持MySQL和PostgreSQL这里以MySQL为例# Ubuntu安装MySQL sudo apt install -y mysql-server # CentOS安装MySQL sudo yum install -y mysql-server sudo systemctl start mysqld创建数据库并设置权限CREATE DATABASE wvp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER wvp_user% IDENTIFIED BY StrongPassword123; GRANT ALL PRIVILEGES ON wvp_db.* TO wvp_user%; FLUSH PRIVILEGES;2. WVP-Pro服务部署与配置2.1 获取与编译WVP-Pro克隆最新版WVP-Pro仓库git clone https://github.com/648540858/wvp-GB28181-pro.git cd wvp-GB28181-pro编译项目mvn clean package编译完成后在target目录下会生成wvp-pro-*.jar文件。2.2 配置文件详解WVP-Pro的核心配置文件是application.yml主要需要修改以下部分server: port: 18080 # Web服务端口 spring: datasource: url: jdbc:mysql://localhost:3306/wvp_db?useSSLfalseallowPublicKeyRetrievaltrue username: wvp_user password: StrongPassword123 sip: id: 65010200002000000001 # SIP服务器ID domain: 6501020000 # SIP域 ip: 192.168.1.100 # 服务器IP port: 5060 # SIP端口 password: 12345678 # SIP密码 media: id: 65010200002000000001 # 媒体服务器ID ip: 192.168.1.100 # 媒体服务器IP hook-ip: 192.168.1.100 # Hook回调IP hook-port: 18081 # Hook回调端口2.3 启动WVP-Pro服务使用以下命令启动服务java -jar target/wvp-pro-*.jar验证服务是否正常运行curl http://localhost:18080 # 应返回HTML页面内容3. ZLMediaKit媒体服务器部署3.1 编译安装ZLMediaKit安装编译依赖# Ubuntu/Debian sudo apt install -y build-essential cmake # CentOS/RHEL sudo yum groupinstall -y Development Tools sudo yum install -y cmake克隆并编译ZLMediaKitgit clone --depth 1 https://github.com/ZLMediaKit/ZLMediaKit.git cd ZLMediaKit git submodule update --init mkdir build cd build cmake .. -DENABLE_WEBRTCON make -j43.2 配置ZLMediaKit修改config.ini关键配置[api] apiDebug1 secret035c73f7-bb6b-4889-a715-d9b2d6513d9e # API访问密钥 [hook] enable1 # 启用Hook admin_paramssecret035c73f7-bb6b-4889-a715-d9b2d6513d9e timeoutSec10 # Hook超时时间 on_flow_reporthttp://192.168.1.100:18081/hook/on_flow_report on_http_accesshttp://192.168.1.100:18081/hook/on_http_access on_playhttp://192.168.1.100:18081/hook/on_play on_publishhttp://192.168.1.100:18081/hook/on_publish on_record_mp4http://192.168.1.100:18081/hook/on_record_mp4 on_rtsp_authhttp://192.168.1.100:18081/hook/on_rtsp_auth on_rtsp_realmhttp://192.168.1.100:18081/hook/on_rtsp_realm on_shell_loginhttp://192.168.1.100:18081/hook/on_shell_login on_stream_changedhttp://192.168.1.100:18081/hook/on_stream_changed on_stream_none_readerhttp://192.168.1.100:18081/hook/on_stream_none_reader on_stream_not_foundhttp://192.168.1.100:18081/hook/on_stream_not_found on_server_startedhttp://192.168.1.100:18081/hook/on_server_started on_server_keepalivehttp://192.168.1.100:18081/hook/on_server_keepalive3.3 启动ZLMediaKit./MediaServer -d 验证服务状态curl http://localhost:80/index/api/getServerConfig # 应返回JSON格式的服务器配置信息4. 海康摄像头接入配置4.1 摄像头网络配置通过网线连接摄像头和交换机使用SADP工具搜索并修改摄像头IP确保与WVP服务器在同一网段登录摄像头Web管理界面默认IP通常为192.168.1.644.2 GB28181协议配置在海康摄像头管理界面中配置网络→高级配置→平台接入启用GB/T28181协议填写SIP服务器信息SIP服务器ID65010200002000000001与WVP配置一致SIP域6501020000SIP服务器地址WVP服务器IPSIP服务器端口5060密码12345678与WVP配置一致注册有效期3600秒保存配置并重启摄像头4.3 WVP-Pro设备管理登录WVP-Pro管理界面http://服务器IP:18080进入设备管理页面点击添加设备填写设备信息设备ID摄像头GB28181设备ID如65010200001320000107名称自定义设备名称厂商Hikvision传输协议UDP流媒体服务器选择配置好的ZLMediaKit服务器保存后设备状态应变为在线5. 常见问题排查与优化5.1 设备无法注册问题排查当摄像头无法注册到WVP时可按以下步骤排查网络连通性检查ping 摄像头IP telnet 摄像头IP 5060SIP信令抓包分析tcpdump -i eth0 -w sip.pcap port 5060WVP日志检查tail -f logs/wvp-pro.log常见错误及解决方案错误现象可能原因解决方案401 UnauthorizedSIP密码不匹配检查WVP和摄像头的SIP密码是否一致404 Not FoundSIP服务器ID或域错误核对WVP和摄像头的SIP ID和域配置超时无响应网络不通或端口未开放检查防火墙设置和网络路由5.2 视频流无法播放问题如果设备已注册但无法播放视频可检查ZLMediaKit日志tail -f logs/zlmediakit.log端口开放情况netstat -tulnp | grep -E 5060|30000流媒体协议支持确保摄像头支持的编码格式H.264/H.265与ZLMediaKit配置匹配在WVP的媒体服务器配置中正确设置流媒体端口范围5.3 性能优化建议ZLMediaKit调优参数[rtp] lowLatency1 # 启用低延迟模式 audioMtuSize570 # 音频MTU大小 videoMtuSize1400 # 视频MTU大小 [hls] segNum3 # HLS分片数量 segRetain5 # 保留分片数WVP-Pro JVM参数优化java -Xms2g -Xmx4g -XX:UseG1GC -jar wvp-pro-*.jarLinux系统调优# 增加文件描述符限制 echo * soft nofile 65535 /etc/security/limits.conf echo * hard nofile 65535 /etc/security/limits.conf # 优化内核参数 echo net.ipv4.tcp_max_syn_backlog 8192 /etc/sysctl.conf echo net.core.somaxconn 8192 /etc/sysctl.conf sysctl -p6. 高级功能扩展6.1 级联上级平台配置WVP-Pro支持向上级平台级联配置方法在WVP管理界面进入平台管理添加上级平台信息SIP服务器ID和域上级平台IP和端口认证密码配置设备通道的上级平台权限6.2 录像存储与回放配置ZLMediaKit录像功能[record] appNamerecord # 录像应用名 sampleMS10000 # 录像切片时长(ms) fileBufSize65536 # 文件缓冲区大小 filePath./record # 录像存储路径通过WVP-Pro界面可以设置定时录像计划按时间检索录像文件回放历史录像6.3 集群部署方案对于大规模部署可采用以下架构[摄像头] -- [WVP边缘节点] -- [ZLMediaKit边缘节点] -- [WVP中心节点] -- [数据库集群] -- [Redis集群]关键配置要点使用Redis实现多节点会话共享配置Nginx实现负载均衡设置中心节点与边缘节点的级联关系7. 安全加固措施7.1 通信安全配置SIP协议加密在WVP配置中启用TLSsip: ssl: true ssl-port: 5061摄像头端配置SIP over TLS媒体流加密在ZLMediaKit中配置SRTP[rtp] encRtp1摄像头端启用媒体流加密7.2 访问控制策略WVP-Pro API鉴权security: enabled: true username: admin password: $2a$10$N9qo8uLOickgx2ZMRZoMy.MQDqShPsH7n0DVRhF3fRZHLGt7G7PemZLMediaKit IP白名单[http] allow_ip192.168.1.0/24防火墙规则# 只开放必要端口 sudo ufw allow 5060/tcp sudo ufw allow 5060/udp sudo ufw allow 18080/tcp sudo ufw enable7.3 日志与监控日志集中管理# 配置logrotate /var/log/wvp-pro/*.log { daily missingok rotate 30 compress delaycompress notifempty create 640 root adm }监控指标采集通过WVP的/actuator/prometheus端点暴露指标配置Prometheus采集scrape_configs: - job_name: wvp metrics_path: /actuator/prometheus static_configs: - targets: [wvp-server:18080]告警规则示例groups: - name: GB28181-Alert rules: - alert: DeviceOffline expr: up{jobwvp} 0 for: 5m labels: severity: critical annotations: summary: Device {{ $labels.instance }} is offline