news 2026/9/6 23:12:15

WVP-PRO国标视频平台通道录像配置实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WVP-PRO国标视频平台通道录像配置实战指南

这次我们直接看一个目前实战中很常见的国标视频平台:WVP-PRO。

它是完全免费开源的国标 GB28181 视频接入平台,核心功能就是把海康、大华、宇视这类支持国标协议的摄像头或 NVR 接入到统一的 Web 管理界面里,然后通过浏览器直接看直播、回放录像、云台控制、语音对讲,甚至继续向上级平台做国标级联。对做安防集成、系统集成、私有化项目交付的朋友来说,这套平台基本能替代一部分商业流媒体服务器的活。

这篇文章的重点非常明确,就是“通道录像配置”。包括设备怎么接入、通道为什么会离线、录像计划在哪设置、录像文件实际存到哪里、如何通过平台回看录像、以及录像文件怎么清理。同时也会把 WVP-PRO 部署中最容易踩坑的环节,比如数据库配置、ZLMediaKit 流媒体服务启动、端口放通、国标目录订阅,全部过一遍。

读完之后,你可以按文章里的步骤自己搭一套国标监控平台,并把通道录像完整跑通。文章所有操作均基于通用部署架构,没有给定具体公网 IP、端口和数据库密码的位置,请按你自己的环境替换。

1. 核心能力速览

先把 WVP-PRO 的整体能力列出来,方便你判断它是否适合当前项目。

能力项说明
项目类型开源国标 GB28181 视频接入平台,附带 Web 管理界面和流媒体网关能力
后端框架Java Spring Boot,搭配数据库 MySQL / PostgreSQL / SQLite
流媒体服务默认内置并联动 ZLMediaKit,提供 RTSP、RTMP、HLS、HTTP-FLV、WebRTC 等拉流方式
设备接入支持国标 GB28181 设备/平台接入,同时支持通过开放的 REST API 管理设备与通道
通道管理支持通道树、通道同步、通道状态查看、通道录像配置、云台控制、语音对讲
录像能力支持平台录像计划和设备端录像回放;平台录像由流媒体服务按 GB28181 标准拉流后存储
录像存储录像文件由 ZLMediaKit 写入指定磁盘目录,可配置存储策略和计划周期
浏览器播放无需安装播放器,支持 Web 页面直接预览,兼容 H5 拉流
级联扩展支持向上级国标平台级联,适合多级平台部署场景
部署要求需要 Java 环境、数据库、ZLMediaKit 流媒体服务;资源消耗主要看并发路数和录像码率
是否支持批量支持;通道数量多时可通过平台批量分配录像计划,也可用数据库脚本批量调整
是否支持 API支持;平台提供 HTTP API,可完成设备查询、通道列表、录像计划配置等常用操作
适合场景安防集成项目、园区监控、工厂监控、连锁店铺视频汇聚、国标设备统一管理、国标上云网关

核心要点:WVP-PRO 本身不是做录像文件的转码工具,它更像是一个国标信令网关加设备管理平台。录像、拉流、推流、转封装由流媒体服务负责。所以我们配置录像前,必须先确认 WVP-PRO 服务和流媒体服务之间的配置是通的。

2. 适用场景与使用边界

从实际项目角度看,WVP-PRO 主要在下面几类场景里价值最大:

  • 存量国标设备统一接入。现场已经有几十上百个国标摄像头或 NVR,想用一个平台集中查看和管理。
  • 视频监控上云。需要把分散在多个分支机构的监控视频汇聚到总部平台,或继续向上级监管平台上报。
  • 私有化安防平台。客户不允许使用公有云监控平台,要求视频数据留在本地或内网。
  • 国标协议联调测试。作为国标下级平台去模拟设备,测试上级平台的接入能力。
  • 快速给内部系统提供监控视频流。通过 API 把直播流地址输出给第三方业务系统。

同时也要说清楚它的边界,避免踩坑:

  • WVP-PRO 是“信令 + 管理”平台,不是专业 NVR,虽然能配置通道录像,但更适合做录像汇聚和回放,若需要长时间、大容量、强检索的录像服务,建议配合专业存储或 NVR 使用。
  • 国标设备的录像回放依赖设备端是否支持 GB28181 录像查询。部分低端摄像头没实现历史视频检索接口,这时候只能走平台录像,让流媒体服务持续拉流存储。
  • 平台录像会占用大量磁盘 I/O 和网络带宽。多路高清长时间录像时,一定要单独规划存储盘,不要和系统盘混用。
  • 涉及人脸、车牌、门禁、行踪等个人信息时,要严格遵循网络安全法、个人信息保护法和当地监控管理规定。测试环境也要使用自己拥有或获得授权的素材,禁止采集未授权区域画面。
  • 语音对讲功能涉及现场声音采集,使用前必须告知现场人员并取得合法授权。

3. WVP-PRO 本地部署环境准备

在开始安装前,先把环境准备清楚。下面这套环境是 WVP-PRO 项目常见的部署组合,适用于 Ubuntu 20.04/22.04、CentOS 7/8、Deepin 以及 Windows 开发环境。不同操作系统命令稍有差异,但核心依赖一致。

3.1 硬件配置建议

项目最小配置推荐配置
CPU2 核4 核及以上
内存4 GB8 GB 及以上
系统盘40 GB100 GB SSD
录像盘按录像路数和天数估算单独挂载数据盘,容量越大越好
网络千兆内网按码率计算上行带宽

录像盘空间建议按公式估算:

  • 单路 1080P,H.264,平均码率按 4 Mbps 计算。
  • 一天录像容量约:4 Mbps × 3600 秒 × 24 小时 ÷ 8 = 约 43 GB。
  • 10 路摄像头存 30 天,约 43 × 10 × 30 = 12900 GB,也就是大约 13 TB。

如果你的摄像头编码是 H.265,同样的画质下码率可能下降到一半,容量也会相应减少。这里注意,实际码率取决于摄像头码流配置、画面复杂度和编码参数,最终容量以实际录像文件为准。

3.2 软件依赖清单

软件版本建议说明
JDK1.8 或 11/17,视发布包要求WVP-PRO 后端 Java 服务依赖
MySQL5.7 或 8.0也可以使用 PostgreSQL / SQLite,生产建议 MySQL
Redis5.0 及以上部分新版本用于缓存、流媒体会话管理,如未使用可跳过,但建议安装
ZLMediaKit最新稳定版流媒体服务,负责拉流、推流、录像写入
FFmpeg4.x 及以上,可选主要用于 HLS 切片、拉流转码等辅助能力
Node.js16/18/20前端管理界面构建时需要

3.3 安装基础依赖

先更新系统,安装常用工具,然后装 JDK 和 Git。

# Ubuntu / Deepin sudo apt update && sudo apt install -y git wget curl unzip tar # CentOS sudo yum install -y git wget curl unzip tar

安装 JDK,这里以 OpenJDK 11 为例:

sudo apt install -y openjdk-11-jdk # 或者: sudo yum install -y java-11-openjdk-devel

检查 Java 版本:

java -version

安装 MySQL 和 Redis:

# Ubuntu / Deepin 安装 MySQL sudo apt install -y mysql-server sudo systemctl enable --now mysql # 安装 Redis sudo apt install -y redis-server sudo systemctl enable --now redis

MySQL 初始化完成后,需要创建一个 WVP-PRO 使用的数据库和账号。这里以数据库名wvp、账号wvp、密码wvp123456为例,换成你自己的强密码。

CREATE DATABASE IF NOT EXISTS wvp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'wvp'@'%' IDENTIFIED BY 'wvp123456'; GRANT ALL PRIVILEGES ON wvp.* TO 'wvp'@'%'; FLUSH PRIVILEGES;

如果你的 MySQL 只允许本地访问,客户端连接时使用127.0.0.1即可,但后端服务和数据库在同一台机器时,建议使用127.0.0.1连接,避免不必要的网络暴露。

3.4 端口规划

WVP-PRO 与 ZLMediaKit 涉及多个端口,部署前先确定好端口占用情况:

服务默认端口用途
WVP-PRO Web/API18080管理界面和 HTTP API
WVP-PRO 国标信令5060(UDP/TCP)SIP 国标信令
ZLMediaKit RTSP554RTSP 拉流
ZLMediaKit RTMP1935RTMP 拉流/推流
ZLMediaKit HTTP-FLV8080/80HTTP-FLV 流输出
ZLMediaKit WebRTC10000浏览器 WebRTC 拉流
MySQL3306数据库
Redis6379缓存

查看端口占用:

sudo lsof -i:18080 sudo ss -lntup | grep -E "18080|5060|554|1935|8080|10000"

如果有服务占用,请提前处理或修改配置,否则启动后会出现端口绑定失败。

4. WVP-PRO 安装部署与服务启动

WVP-PRO 的部署方式不只一种,最简单的思路是:编译打包后端 + 构建前端 + 启动 ZLMediaKit。下面给出一套通用流程,所有命令中的版本号、仓库地址请以项目发布的实际信息为准。

4.1 获取项目源码

git clone https://gitee.com/kkkkk5g/wvp-GB28181-pro.git cd wvp-GB28181-pro

也可以从 GitHub 或 Gitee 的 release 页面直接下载最新发布包,使用 release 包可以跳过编译环节,直接修改配置启动。

4.2 后端打包

通常使用 Maven 打包:

mvn package -DskipTests

打包完成后,在target目录下会生成 jar 包,例如wvp-pro-*.jar。把 jar 包放到部署目录,比如/opt/wvp-pro/

如果是自定义数据库,需要提前把数据库建好,并确认后端配置中的地址、账号、密码正确。WVP-PRO 首次启动时如果开启自动建表,会自动创建数据表;否则需要手动导入项目中的 SQL 脚本。

4.3 修改后端配置

WVP-PRO 的配置文件通常是application.yml。把配置项中的数据库、Redis、流媒体服务、SIP 信令等相关参数改成你自己的。

server: port: 18080 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/wvp?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8 username: wvp password: wvp123456 redis: host: 127.0.0.1 port: 6379 password: "" database: 0 sip: ip: 127.0.0.1 # 本机内网 IP,可被设备访问 port: 5060 # SIP 信令端口 domain: 34020000002000000001 id: 34020000002000000001 password: 12345678 media: ip: 127.0.0.1 # ZLMediaKit 服务 IP port: 8080 # ZLMediaKit HTTP API 端口 secret: your_media_secret stream-ip: 127.0.0.1 # 流媒体对外访问 IP http-port: 8080 rtmp-port: 1935 rtsp-port: 554 rtp-port: 10000 enable-rtsp: true enable-rtmp: true enable-hls: true enable-fmp4: true

注意:这里的sip.ipmedia.ipstream-ip需要设置成摄像头或 NVR 能访问到的地址。如果是内网设备,写机器内网 IP;如果跨公网,要配置公网 IP 或内网穿透,并放通对应端口。

4.4 启动 ZLMediaKit

ZLMediaKit 是独立的流媒体进程。获取源码并编译:

git clone https://gitee.com/zlmediakit/ZLMediaKit.git cd ZLMediaKit git submodule update --init ./build_for_linux.sh

编译完成后,进入生成的buildrelease目录,启动:

cd release/linux/Debug/ ./MediaServer -d -c config.ini

如果启动成功,会在日志中输出监听端口。此时确认 8080、554、1935、10000 等端口正常监听。

开发环境也可以直接用已编译的发行包,具体以官方 release 为准。生产环境建议把 MediaServer 注册为 systemd 服务,方便开机自启和守护。

4.5 启动 WVP-PRO 后端

后端 jar 包启动:

cd /opt/wvp-pro nohup java -jar wvp-pro-*.jar --spring.config.location=file:/opt/wvp-pro/application.yml >/opt/wvp-pro/wvp.log 2>&1 &

然后查看日志:

tail -f /opt/wvp-pro/wvp.log

日志中出现类似“服务启动成功”或 HTTP 端口监听成功的字样,说明后端启动完成。

4.6 启动前端管理界面

WVP-PRO 的前端项目通常是独立仓库,依赖 Node.js。克隆前端项目后执行:

npm install npm run build

构建产物会生成在dist目录。把dist目录里的文件发布到 Nginx 静态目录,并配置代理:

server { listen 80; server_name your_domain_or_ip; root /opt/wvp-web/dist; index index.html; location /api/ { proxy_pass http://127.0.0.1:18080/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

如果只是内网快速验证,也可以直接用npm run dev启动开发模式,然后通过 Vite/Webpack 代理访问后端。生产环境统一用 Nginx 托管静态文件和反向代理。

4.7 访问管理界面

浏览器访问http://服务器IP:80http://服务器IP:18080(如果后端直接打开)。

第一次进入需要登录。默认管理员账号和密码以项目说明为准,通常为admin/adminadmin/123456。登录后第一件事是进入系统设置,确认媒体服务配置是否正常。如果媒体服务连接成功,系统里会显示媒体节点在线;如果显示离线,登录 WVP 后先解决媒体服务连接,再继续设备接入。

5. 设备接入与通道管理

WVP-PRO 的核心工作方式是:向下连接国标摄像头/平台,向上给你提供 Web 和 API。

5.1 添加国标设备

在 WVP-PRO 界面中找到“国标设备”或“设备管理”,点击“添加”。

需要填写的信息包括:

  • 设备名称,例如“厂区东门”。
  • 设备国标编号,例如34020000001320000001
  • 设备国标域,例如3402000000
  • 设备 IP 或域名。
  • 端口,默认 5060。
  • 认证用户名和密码,需要与摄像头/NVR 里的 SIP 设置保持一致。

在摄像头或 NVR 的 GB28181 配置界面里,也用同样的思路填写平台侧的信息:SIP 服务器 IP 填 WVP-PRO 所在服务器 IP,SIP 端口填 5060,SIP 用户 ID 和认证密码与 WVP-PRO 中设备信息一致。

5.2 通道同步

设备添加成功后,WVP-PRO 会向设备发送目录订阅请求,设备返回通道列表。这个过程叫通道同步。

在“国标设备”列表里找到该设备,点击“通道同步”。同步成功后,设备节点下面会列出摄像头通道,每个通道对应一路视频。如果通道数量为 0,可能原因:

  • 摄像头/NVR 里的 SIP 配置不正确,没有注册成功。
  • 设备没有启用国标目录订阅。
  • WVP-PRO 与设备网络不通。
  • 设备国标编号重复或不符合规范。

通道同步完成后,在“通道管理”或“设备通道”页面可以看到每一路通道的状态。通道状态显示在线,说明取流和信令链路正常。

5.3 通道详情与直播预览

点击某个通道的“播放”按钮,浏览器会调用 WVP-PRO 获取流地址,再通过 ZLMediaKit 拉流并输出到 Web 前端播放。首次播放时可能会有一两秒延迟,这是国标 INVITE 流程的正常现象。

如果直播画面无法打开,排查顺序:

  1. 通道是否在线。
  2. 摄像头码流类型是否设置为子码流或主码流,平台是否支持对应编码。
  3. ZLMediaKit 端口是否被防火墙拦截。
  4. 服务器带宽是否足够。
  5. 摄像头是不是只允许单路预览。

直播成功后,下一步就是通道录像配置。

6. WVP-PRO 通道录像配置全过程

录像配置是这篇文章的核心。很多人装好 WVP-PRO 后直播没问题,但录像不生效,或者录像文件一直不写入磁盘。下面按照从存储规划、录像计划、通道关联到录像验证的完整顺序来讲。

6.1 确定录像实现方式

WVP-PRO 的录像主要有两种路径:

录像方式原理优缺点
设备端录像回放WVP 通过国标信令查询设备/ NVR 上的历史录像,然后把历史流拉取到平台播放不占用 WVP 平台存储,但依赖设备的国标录像查询能力,不同厂家兼容性有差异
平台录像ZLMediaKit 根据 WVP 下发的指令,实时把通道码流录制成文件保存到服务器磁盘录像不受设备端限制,统一管理,但需要规划存储空间和 I/O 能力

本章主要讲“平台录像”的完整配置步骤,因为这是 WVP-PRO 可以完全掌控的录像能力,也是项目交付中最常用、最可控的方案。

6.2 先规划好录像存储目录

在配置录像之前,一定要先确认 ZLMediaKit 的录像保存路径。ZLMediaKit 的配置文件中一般有一个record相关配置,里面指定了录像文件的保存根目录。

例如在 ZLMediaKit 的config.ini中:

[record] # 录像存储根目录 appPath=./record # 录像切片时长, 单位秒 fileBufSize=65536 # 录像文件格式 recordSecond=3600

生产环境建议把appPath改为独立数据盘路径,比如/data/record,并且保证该目录有足够空间。

sudo mkdir -p /data/record sudo chmod -R 777 /data/record

查看磁盘空间:

df -h /data/record

如果根分区空间不足,先把数据盘挂载到/data/data/record,再做录像配置,否则录像会把系统盘写满,导致服务崩溃。

6.3 在 WVP-PRO 中配置存储策略

登录 WVP-PRO,进入“系统配置”或“存储配置”相关菜单。核心参数一般包括:

  • 流媒体服务是否开启录像。
  • 录像存储类型,比如“本地存储”。
  • 录像存储路径,和 ZLMediaKit 配置的appPath保持对应。
  • 录像切片时长,比如 30 分钟或 60 分钟切片一次,方便检索和清理。
  • 是否按通道分目录保存。

如果 WVP-PRO 界面里没有明确的存储策略,那么可以确认 ZLMediaKit 的录像配置已经开启,然后在通道录像计划里写入计划,平台会通过媒体服务接口把录像任务下发到 ZLMediaKit 执行。

注意:WVP-PRO 的录像计划配置最终作用对象是 ZLMediaKit,两者要能正常通信。如果媒体服务配置错误,录像计划下发不成功,那么无论计划怎么填,都不会有录像。

6.4 创建录像计划

通道录像配置的常规路径是:

进入“国标设备”-> 选择设备 -> 找到“通道”或“录像计划” -> 新建计划。

一个录像计划通常包含下面的字段:

字段示例值说明
计划名称白天 8 小时录像用于识别计划的名称
生效时间每天 08:00 - 18:00录像计划的日期和时间范围
星期周一至周五可重复周期
通道范围指定通道或全部通道一个计划可以关联多个通道
码流类型主码流 / 子码流 / 视频流主码流清晰度高,子码流省空间
录像类型连续录像 / 事件录像取决于平台支持情况

创建一个最简单的“全天录像”计划:

  1. 计划名称填全天录像
  2. 时间范围选择00:00 - 23:59
  3. 星期选“每天”。
  4. 通道范围选择需要录像的通道,例如通道 1、通道 2、通道 3。
  5. 码流类型选择主码流,如果摄像头带宽有限,也可以选子码流。
  6. 保存计划。

如果平台支持“按星期”重复录像,可以创建工作日、非工作日两套计划,避免周六周日空拍。

6.5 将录像计划关联到通道

创建完计划后,在通道列表中勾选要录像的通道,把计划应用到这些通道。

这一步非常容易出现遗漏,因为只建了计划但没有“关联通道”,计划不会生效。操作时注意三个方面:

  • 确认通道状态为在线。
  • 确认计划生效时间覆盖当前时间。
  • 确认关联通道后,界面上能看到通道对应计划的状态,而不是空白。

某些版本下,通道录像计划也可以直接在“通道管理”页面里针对单通道设置,此时你可以选择具体的通道,点击“配置录像”或“编辑计划”来完成关联。

6.6 验证录像是否真正写入磁盘

录像计划保存后,等待超过计划生效时间(比如 2 分钟后),查看 ZLMediaKit 录像目录。

find /data/record -type f | head -n 50 ls -lh /data/record/

正常情况会看到按日期和通道生成的目录,里面有.mp4.flv等录像文件。文件大小会随录像时长增长。

继续验证平台能不能查看到这段录像。在 WVP-PRO 界面中进入“录像查询”,选择通道和时间范围,点击查询。平台应该能列出刚才的录像文件。选择其中一个文件,点击回放,浏览器播放器会开始播放。

如果录像查询查不到文件,但磁盘上已经有文件,说明数据库里录像索引和文件没同步。常见原因是媒体服务配置的 HTTP 回调地址没有正确配置到 WVP-PRO,或者回调接口被防火墙拦截。解决办法是在 ZLMediaKit 的配置里设置on_record_mp4等回调地址为 WVP-PRO 的接口地址,让媒体服务在录像文件生成后通知 WVP-PRO 记录索引。

6.7 计划录像与手动录像

除了按计划录像,WVP-PRO 也支持手动控制某一路通道开始录制/停止录制。

操作思路:在通道详情或通道列表中,找到“开始录像”或“手动录像”按钮。点击后 WVP 向 ZLMediaKit 发送开始录制指令。过几分钟,到录像目录里查看,如果文件出现,说明手动录像链路正常。

手动录像适合临时取证场景,例如突发情况时开启某通道录像,不需要长期占用存储空间。

6.8 录像文件查看和导出

对于平台录像,直接到 ZLMediaKit 的record目录下复制.mp4文件即可导出。也可以使用 WVP-PRO 的录像查询页面,根据通道和时间定位到录像片段,然后下载对应文件。

国标设备录像回放则不同。如果设备端(NVR)本身存了录像,WVP-PRO 通过国标信令向设备发送媒体回放请求,设备把录像流推送到平台上,然后平台转码输出到浏览器。你可以按小时/天查询设备上的录像列表,然后逐段点播回放。这种模式下不需要 WVP-PRO 磁盘存储录像,WVP 只是起信令中转和流分发作用。

7. 录像回放与存储策略

录像不是录完就结束。上线之后,需要持续关注存储空间、录像文件保留周期和回放体验。

7.1 按通道目录管理

推荐在 ZLMediaKit 的录像配置里启用按通道目录保存,这样每个通道每天的录像文件都在独立的目录下,管理方便。

例如:

/data/record/ ├── 34020000001320000001/ │ ├── 2025-06-01/ │ │ ├── 10_00_00.mp4 │ │ ├── 11_00_00.mp4 │ │ └── ... │ └── 2025-06-02/ │ └── ... └── 34020000001320000002/ └── ...

这个目录结构可以直接用脚本做定时清理。

7.2 录像清理策略

录像一直在增长,必须设定保留周期。常见策略:

  • 保留 7 天,适合临时查证场景。
  • 保留 30 天,适合常规安防项目。
  • 保留 90 天,适合重要监管区域,但对存储容量要求高。

写一个简单的定时清理脚本,删除指定天数之前的录像文件:

#!/bin/bash RECORD_DIR="/data/record" KEEP_DAYS=30 find ${RECORD_DIR} -type f -name "*.mp4" -mtime +${KEEP_DAYS} -delete find ${RECORD_DIR} -type d -empty -delete

加入 crontab,每天凌晨执行一次:

crontab -e 0 3 * * * /usr/local/bin/clean_record.sh

也可以使用 WVP-PRO 自带的存储清理功能,如果有的话,优先使用平台能力,脚本只作为兜底。

7.3 录像回放稳定性

回放卡顿的原因通常是磁盘 I/O 不足、带宽不足或录像文件碎片化。保证回放体验的建议:

  • 录像盘使用独立机械硬盘或 SSD。
  • 如果并发回放人数多,优先使用 SSD 并提升内存。
  • 避免在录像盘上同时跑数据库和媒体服务。
  • 回放时优先选择子码流。

8. 接口 API 与自动化运维思路

WVP-PRO 提供 HTTP API,可以对接第三方系统或做自动化运维。这里给一个通用调用模板。真实请求地址、参数、鉴权方式需要按你部署版本的接口文档调整。

8.1 登录并获取 Token

通常 API 需要先登录,获取访问凭证。

curl -X POST http://127.0.0.1:18080/api/login \ -H "Content-Type: application/json" \ -d '{ "username": "admin", "password": "admin" }'

返回体里会包含 token 或 sessionId。

8.2 查询通道列表

curl -X GET "http://127.0.0.1:18080/api/device/channel/list?page=1&count=100" \ -H "Authorization: Bearer YOUR_TOKEN"

8.3 配置通道录像计划

不同版本的接口路径可能不同,这里给出一个“按通道设置录像计划”的 POST 模板:

curl -X POST http://127.0.0.1:18080/api/record/plan \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "channelId": "34020000001320000001", "planName": "全天录像", "timeRange": "00:00-23:59", "week": "1,2,3,4,5,6,7", "streamType": "main", "recordType": "continuous" }'

8.4 Python 批量配置示例

如果通道数量很大,可以写 Python 脚本从 Excel 读取通道列表,循环调用接口。

import requests import time BASE_URL = "http://127.0.0.1:18080" TOKEN = "YOUR_TOKEN" HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"} def set_record_plan(channel_id, plan_name="全天录像"): url = f"{BASE_URL}/api/record/plan" payload = { "channelId": channel_id, "planName": plan_name, "timeRange": "00:00-23:59", "week": "1,2,3,4,5,6,7", "streamType": "main", "recordType": "continuous" } resp = requests.post(url, json=payload, headers=HEADERS, timeout=10) print(channel_id, resp.status_code, resp.text) time.sleep(0.5) channel_list = [ "34020000001320000001", "34020000001320000002", ] for cid in channel_list: set_record_plan(cid)

使用脚本批量配置前,先在单个通道上验证接口参数;接口响应结构和字段名不确定时,先在页面上点击一次并打开浏览器开发者工具,查看实际请求路径和方法。

在批量任务设计上,建议加一个简单的失败重试和日志,避免因为某个通道异常导致后面全部跳过。

9. 资源占用与性能观察

WVP-PRO 本身的 Java 进程在通道数量少时占用不高,真正消耗资源的是 ZLMediaKit 和存储 I/O。性能观察可以从四个维度来看。

9.1 观察 CPU 和内存

使用tophtop查看:

top

重点看 Java 进程和 MediaServer 进程的 CPU 和内存占用。如果资源占用长期过高,优先确认是不是并发拉流路数过多、HLS 切片过密或者转码导致。

9.2 观察磁盘 I/O

使用iostat查看:

iostat -x 1 5

重点看%utilawait。当%util长时间接近 100% 时,磁盘压力较大。录像配置多路高清视频时,建议把录像目录和系统目录分开。

9.3 观察网络流量

使用nloadiftop

sudo apt install -y nload nload

若带宽被打满,说明码流过大或并发观看路数过多。此时可以降低录像码流类型,或者限制同时回放的路数。

9.4 如何判断 WVP-PRO 是否正常

  • 打开管理界面,确认媒体节点在线。
  • 查看 WVP 日志,确认设备注册、通道同步、录像计划下发没有报错。
  • 查看 ZLMediaKit 日志,确认没有连接超时、鉴权失败等报错。
  • 查看磁盘空间,确认录像目录还有余量。

如果页面能播放直播但录像不写入,优先排查 ZLMediaKit 的录像开关和回调地址,这两点占录像问题的大多数。

10. 常见问题与排查方法

下面整理 WVP-PRO 部署和通道录像配置中最高频的问题。

问题现象可能原因排查方式解决方案
摄像头国标注册不上SIP 端口未放通、设备 ID/密码配置错误查看 WVP 日志确认 SIP 注册信息检查 WVP-PRO SIP 地址、端口、设备国标编号与设备端一致
通道状态离线注册成功但目录订阅或心跳超时查看设备通道列表,看设备最近活跃时间检查设备和平台网络,尽量保持网络稳定,重新同步通道
直播画面黑屏流媒体服务拉流失败、码流编码不受支持、带宽不够查看 ZLMediaKit 日志确认是否成功收流更换码流类型,检查防火墙端口,确认摄像头码流协议
录像计划保存生效但没录像文件录像开关未开启、计划未关联通道、ZLMediaKit 回调没配查看录像目录和 ZLMediaKit 日志开启录像开关,确认计划关联到在线通道,配置录像回调
有录像文件但平台查不到回调地址错误导致录像索引未写入数据库查看 WVP 日志确认录像回调请求在 ZLMediaKit 里配置 on_record_mp4 回调到 WVP 接口
录像回放卡顿磁盘 I/O 不足、带宽不足、回放码流过大用 iostat 和 nload 看资源使用 SSD 盘,降低回放码流,增加带宽
磁盘被录像写满录像保留策略缺失df -h 查看磁盘占用配置录像自动清理脚本,设定保留天数
后端启动失败,端口被占用18080 或 5060 被其他进程占用ss -lntup 查看端口更换端口或停掉占用进程
媒体服务配置不对,页面显示节点离线media ip/secret 配置错误查看 WVP 配置和 ZLMediaKit 日志用正确的 IP 和 secret 修改配置并重启
数据库连接失败MySQL 未启动、账号权限错误、密码错误手动连接数据库测试检查和修正数据库连接配置

每遇到一个新问题,首先看日志,这是最可靠的排查手段。WVP-PRO 后端日志一般会打印 SIP 注册、信令交互和设备状态变化;ZLMediaKit 日志会打印取流、断流、录像写入情况。不要只凭管理界面显示的状态判断问题。

11. 最佳实践与工程建议

WVP-PRO 上线到生产环境前,下面这些实践建议值得提前规划好。

11.1 部署结构建议

  • 小规模项目(50 路以内):单台服务器部署 WVP-PRO + MySQL + Redis + ZLMediaKit,录像目录挂独立数据盘。
  • 中大规模项目:WVP-PRO 和 ZLMediaKit 分开部署。WVP-PRO 作为信令和管理层,ZLMediaKit 作为流媒体层,数据盘独立。
  • 如果设备分布在不同网段,需要提前规划好路由,保证 SIP 信令和 RTP 媒体流都能互通。

11.2 安全加固

  • WVP-PRO 管理后台不要暴露到公网,必须暴露时加 Nginx 反向代理、HTTPS 和访问认证。
  • 设备国标 SIP 密码不要使用空密码或弱密码。
  • 命令行和配置文件中不要硬编码数据库密码;生产环境使用环境变量或配置管理工具。
  • WVP-PRO 的 API 服务不使用时不要开放到公网。
  • 定期检查服务器安全日志,避免被扫描和暴力破解。

11.3 合规使用提醒

监控视频涉及个人信息和隐私安全,一定要强调:

  • 部署和使用监控平台前,确认监控区域属于合法监控范围,现场需要有明确告知。
  • 录像数据要分级管理,严格控制访问权限,不能随意分享给无权查看的人员。
  • 人脸、车辆等敏感数据的存储和调用要符合个人信息保护法及相关规定。
  • 测试环境只能使用自己拥有或已获授权的画面,不要对小区、单位、公共场所进行未授权录像测试。
  • 平台产生的录像数据如果需要保留,要制定明确的保留周期,到期自动清理。

11.4 运维保障

  • 录像目录和数据库目录不要混用。
  • 每天检查一次磁盘空间和媒体服务状态。
  • 配置录像清理脚本,避免磁盘写满。
  • 数据库、服务配置和关键脚本定期备份。
  • 服务启动方式建议使用 systemd 托管,保证异常退出后自动重启。

下面给出一个简单的 systemd 启动 WVP-PRO 的示例:

[Unit] Description=WVP-PRO Service After=mysql.service redis.service [Service] Type=simple User=root WorkingDirectory=/opt/wvp-pro ExecStart=/usr/bin/java -jar /opt/wvp-pro/wvp-pro.jar --spring.config.location=file:/opt/wvp-pro/application.yml Restart=on-failure RestartSec=10 StandardOutput=append:/opt/wvp-pro/wvp.log StandardError=append:/opt/wvp-pro/wvp.log [Install] WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload sudo systemctl enable wvp-pro sudo systemctl start wvp-pro sudo systemctl status wvp-pro

12. 总结与下一步

WVP-PRO 是一套很值得部署的国标视频平台,最值得尝试的点在于它把国标信令、设备管理、直播预览、通道录像、API 输出全部打通了,完全可以作为安防项目的核心视频网关来用。

先验证什么?我的建议是把顺序定为:

  1. 部署 WVP-PRO 和 ZLMediaKit 并确认媒体节点在线。
  2. 接入一个摄像头或模拟器,确认通道同步和直播正常。
  3. 创建一组录像计划,关联到单个通道,验证磁盘写入和历史回放。
  4. 再用脚本或 API 批量配置其它通道。

最容易踩的坑有四个:一是媒体服务配置不对导致页面显示节点离线;二是录像计划没有关联到通道,计划建了但没效果;三是 ZLMediaKit 录像回调没配置,导致文件录了但平台索引不到;四是磁盘空间规划不足,跑几天就被写满。

如果这套平台你已经跑通了基础录像,下一步可以继续做国标级联,把 WVP-PRO 作为下级平台推送到另一个上级国标平台;也可以把 WVP-PRO 的直播和回放能力接入到企业内部统一视频平台,通过鉴权机制控制访问范围;通道数量特别多时,还可以结合 API 做自动巡检和故障告警。

建议先把文章收藏备用,等动手部署的时候,把带宽、磁盘和端口放通这三件事提前想清楚,后面会顺利很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 23:05:21

VM是什么?VMware、JVM与Node.js沙箱全解读

不管你是刚开始折腾 VMware Workstation 的新手,还是已经在用 VirtualBox 做实验的老手,只要在搜索引擎里敲下“VM”这两个字母,大概率都会遇到同一个困惑:为什么搜出来的东西千奇百怪,有讲虚拟机的,有报 J…

作者头像 李华
网站建设 2026/9/6 23:03:07

【NebulaGraph】如何查询一个特定 ID 的点及其所有属性?

NebulaGraph 点查询全解析:电信网络故障溯源中的高效实体检索 用户问题原文:如何查询一个特定 ID 的点及其所有属性? 本文将围绕上述问题,系统性解析 NebulaGraph 3.8.0 中通过 VID(Vertex ID)查询点及其所有属性的 nGQL 语法、执行计划、存储机制及生产级最佳实践,结合…

作者头像 李华
网站建设 2026/9/6 23:02:18

通达信价格变异率主图指标:源码解析与实战调参指南

简介:这是一份面向通达信软件用户的指标公式教程文档,讲解价格变异率主图指标的源码组成与编写思路,帮助有一定基础的投资者理解并运用价格波动率相关信号。文档共1个doc文件,压缩包仅241KB,内容包含指标完整源码、SAR…

作者头像 李华
网站建设 2026/9/6 23:01:57

Python入门:流程控制语句

文章目录1. 条件分支语句1.1 if 语句1.2 if - else 语句1.3 if - elif - else 语句1.4 嵌套条件分支语句1.5 条件表达式(三元运算符)2. while循环语句2.1 基本使用2.2 无限循环(死循环)2.3 while 循环与 else 子句2.4 循环控制语句…

作者头像 李华
网站建设 2026/9/6 23:01:05

51单片机自动节水灌溉系统设计:从传感器到水泵的完整实战

简介:基于单片机的自动节水灌溉系统课程设计文档,定位为面向计算机、自动化、农业工程等相关专业学生的毕业设计或课程设计参考资料。资源共1个文件,为doc格式文档,压缩包大小445KB,内容覆盖AT89C51单片机控制原理、主…

作者头像 李华