从"三个品牌的摄像头吵架"说起:用WVP-GB28181-Pro搭建免费开源视频监控平台的完整手记
【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro
如果你正在为多品牌摄像头无法统一管理而发愁,那么基于GB28181国标协议的开源视频监控平台 WVP-GB28181-Pro 可能是你一直在找的答案。它开箱即用,自带管理后台,能把海康、大华、宇视等不同厂家的设备收进同一个界面,本文就用一位物业工程师的真实经历,带你完整走一遍这条"统一监控"之路。
一、故事的开头:老张的机房里有四台显示器
老张是某产业园的运维工程师,他的工位旁边摆着四台显示器,分别盯着不同厂家的摄像头客户端——海康一个、大华一个、还有两个杂牌。每当领导问"园区南门那个摄像头是不是坏了",他都要切四个界面逐个找。
这不是老张一个人的烦恼。几乎所有同时用过两个以上品牌监控设备的人,都体会过这种"品牌壁垒"带来的割裂感:每家的客户端界面不一样,操作逻辑不一样,录像还得去各自的软件里翻。
老张决定找一个能"一锅端"的方案。他的需求很简单:
- 能把不同品牌的摄像头、NVR都接入同一个平台
- 有一个像样的网页界面,不用装客户端
- 最好免费、开源,出了问题能看代码
- 以后园区二期扩建,还能继续加设备、加服务器
后来他在网上搜"GB28181 视频监控平台",找到了 wvp-GB28181-pro 这个开源项目,故事的走向就此改变。
二、先认识一下:它到底是个什么东西
用一句话概括:WVP-GB28181-Pro 是一个实现了国标 GB/T 28181-2016 协议的网络视频平台,相当于把"信令调度"和"视频流转发"两件事都包办了。
拆开来说,它由两部分协作完成:
- WVP 主程序(Java 编写):负责国标信令、设备管理、录像计划、报警订阅、权限控制这些"大脑"工作;
- 媒体服务(ZLMediaKit):负责视频流的接收、转发、拉流推流这些"血管"工作。
为什么它能让不同品牌"握手"?因为国标协议就是摄像头行业里的"普通话"——只要设备支持国标(现在海康、大华、宇视的主流设备基本都支持),WVP 就能用同一套语言跟它对话,不需要厂商 SDK,也不需要写私有协议的适配代码。
它适合谁用?
- 中小园区、学校、商超的 IT 人员,想自己搭一套监控系统
- 集成商,想在项目里快速交付一套带管理界面的平台
- 开发者,需要一套可以改代码、可以对接第三方系统的底座
它有哪几个拿得出手的特点?
- 自带完整 Web 管理界面,登录就能用,不用二次开发
- 支持 NAT 穿透,内网设备也能纳管
- 支持国标级联,能跟上级监管平台或同级平台互通
- 支持把普通摄像头、直播流、推流内容"转成国标"共享出去
三、上线之路:四个里程碑,从零到能登录
老张在测试服务器上把平台跑了起来,整个过程像闯关一样,一共四道关卡。他用的是一台 Ubuntu 服务器、4 核 8G 内存,足够测试用。
里程碑 1:准备好环境与代码
你需要三样东西:JDK(8 或更高版本)、MySQL(项目也支持 PostgreSQL、金仓等)、以及媒体服务 ZLMediaKit。
克隆代码:
git clone https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro人话解释:把项目源码下载到本地,后面的编译和配置都基于这份代码。
里程碑 2:初始化数据库
创建数据库,并导入对应版本的初始化脚本:
CREATE DATABASE wvp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE wvp; SOURCE 数据库/2.7.4/初始化-mysql-2.7.4.sql;人话解释:给平台建一个"账本",初始化脚本会一次性建好所有表结构。数据库目录下有多个版本的脚本,选与你版本一致的那个。
里程碑 3:改配置,就改两个地方
配置文件在src/main/resources/application.yml。老张主要动了两个区块:
数据库连接——告诉平台账本在哪:
spring: datasource: url: jdbc:mysql://localhost:3306/wvp username: root password: 你的密码SIP 服务参数——这是国标协议的"身份证":
sip: ip: 192.168.1.100 # 服务器的对外 IP port: 5060 # 国标信令端口 domain: 3402000000 # 平台域编号(20 位数字)人话解释:
domain相当于平台在国标网络里的身份证号,之后设备接入时要填它。端口 5060 是国标默认端口,注意在防火墙里放行 UDP 和 TCP。
这里有个小细节:如果 wvp 和 ZLMediaKit 不在同一台机器,还要在配置文件里把媒体服务的地址和密钥(SECRET)改一致,否则两边"对不上暗号",视频流就传不起来。
里程碑 4:编译、启动、登录
mvn clean package -Dmaven.test.skip=true java -jar target/wvp-pro-*.jar人话解释:第一行把源码打包成可执行 jar 包;第二行启动服务。看到日志里出现"启动成功"字样,就说明过了关。
打开浏览器访问http://你的IP:8080,默认账号密码都是admin。老张登录后的第一个动作,是把默认密码改掉——这是新手最常忽略的安全动作。
图:登录后台后看到的国标设备列表,这是整个平台的"总控台"入口。
四、把设备接进来:从"看到"到"录到"再到"警觉"
平台跑起来只是开始,真正的价值是把摄像头一个个"请"进来。老张按"看到 → 录到 → 警觉"这条能力线,把功能摸了个遍。
第一层能力:让画面"看得到"
接入设备前,需要在设备端做两件事:把设备的国标编号填好,并把"SIP 服务器"指向 wvp 的 IP 和 5060 端口。之后设备会自动向平台注册——老张在后台看到设备状态从"离线"变"在线"的那一刻,成就感满满。
接入后能做什么?
- 实时预览:浏览器直接看,不用装插件,H.264/H.265 都支持
- 多画面分屏:1、4、9、16 宫格随便切,园区 16 路画面一屏收下
- 云台控制:PTZ 上下左右、变焦、预置位,一个面板全搞定
- 码流切换:主码流看细节,子码流省带宽
一个小细节:如果设备注册成功但通道数为 0,多半是设备端没把通道推送给平台,点一下列表里的"刷新通道"按钮等进度条走完即可。
第二层能力:让录像"存得下、翻得出"
老张发现录像有两条线:
- 设备录像:直接查询 NVR/IPC 自己存的录像,回放、下载都行,不占服务器空间;
- 云端录像:平台把视频流实时录到服务器本地,好处是"设备挂了你还有底"。
想开启云端录像,只需在配置里打开开关:
user-settings: record-sip: true # 国标点播时同时录像 record-push-live: true # 推流设备也录像录像默认存在 ZLM 的 record 目录下,保存天数、存储路径都可以改。老张给重点区域设了 30 天滚动保留,磁盘压力可控。
图:云端录像管理界面,录像文件按时间排列,回放和下载都在这里操作。
第三层能力:让异常"传得出、查得到"
监控系统的另一半价值在"警觉"。WVP 支持订阅设备的报警事件,报警信息会实时推送到前端页面,也可以联动获取快照、调取录像。历史报警记录可查,方便事后追溯。
老张的用法是:给周界摄像头开启移动侦测报警,一旦有人闯入,平台里立刻能看到报警记录,配合回放几分钟就能还原现场。
五、进阶玩法:让系统变大、变快
园区二期要扩 100 路摄像头,老张担心一台服务器扛不住。这时候两个进阶功能派上了用场。
玩法一:国标级联,把平台"串"起来
国标级联是 GB/T 28181 标准里最实用的特性之一:不同平台之间可以互通。WVP 支持向上级级联——把本地平台接入上级监管平台,或者跟同级平台共享资源。
配置流程也不复杂:在"国标级联"里添加对方平台信息(名称、编号、IP、端口),然后在目录树里勾选要共享的通道,保存后对方就能看到你共享出去的设备了。
图:国标级联的配置界面,平台之间的"握手"都在这里完成。
老张用这个功能实现了两个园区之间的资源共享:A 园区的平台可以把部分通道共享给 B 园区的平台看,B 园区不用重复买设备。
玩法二:媒体节点集群,让视频"跑得更快"
WVP 支持"一主多从"的媒体架构:一个 WVP 挂多个 ZLMediaKit 节点,系统会根据各节点的负载情况,自动把新的视频流分配给最闲的节点。这样既扩展了并发路数,又保证了某个节点挂了还有备份。
图:媒体节点配置表单,填好 IP、端口和 SECRET 即可把一个新节点纳入集群。
节点管理页面里可以新增节点、测试连通性,还能看到每个节点的负载情况。老张的体会是:加节点就像给系统"加血管",视频流会自动分流,不用停机。
图:节点管理列表,所有媒体节点一目了然。
六、真实落地:一套配置,三种场景全打通
老张用这套平台解决了三个实际场景,这里分享他的完整配置思路:
场景一:园区周界监控(100 路 IPC 直连)海康、大华、宇视各几十路,统一接入后按楼栋分组管理;周界通道开启云端录像 + 移动侦测报警;分屏监控 16 宫格全天值守。
场景二:与上级监管平台对接(国标级联)园区属于某个监管辖区,通过国标级联把指定通道共享给上级平台,对方无需任何额外开发即可看到画面。
场景三:直播流转国标(拉流代理)园区要对外直播活动,用拉流代理把 RTSP 直播流引入,再转成国标共享出去。普通摄像机、直播流、推流内容都能"转国标"给其他平台用。
这套方案跑了一个季度,老张给的数据是:120 路设备接入率 100%,服务器 CPU 峰值不到 60%,云端录像回放零故障。更重要的是,四台显示器撤掉了三台——他终于不用在多个客户端之间来回切了。
七、避坑指南:老张踩过的坑,你绕开走
新手最容易在哪几个地方翻车?老张把自己和社区里常见的问题整理成了一份"避坑清单":
坑 1:设备一直显示"离线"先别怀疑平台。按顺序查三件事:设备与服务器网络通不通(ping一下)、设备端 SIP 服务器 IP/端口填没填对、5060 端口在防火墙里放没放行。90% 的离线都是这三件事之一。
坑 2:视频点播转圈不播放多半是媒体服务没配置对。检查 ZLMediaKit 是否在运行、wvp 与 ZLM 的 SECRET 是否一致、收流端口范围是否放行。测试环境建议先关闭防火墙排除干扰。
坑 3:通道数量为 0设备注册上了但没推送通道。点"刷新通道"按钮等进度条走完;如果还是 0,可能是设备端没勾选"向平台推送通道"。
坑 4:播放地址打不开点播成功后在播放页点"更多地址"可以看到所有协议(HTTP-FLV、WebRTC、RTMP、RTSP 等)的地址,能不能播取决于浏览器支持和网络环境。比如 WebRTC 需要放行对应的 UDP 端口。
坑 5:字符乱码设备名称、通道名称出现乱码时,把设备的字符集从默认的 GB2312 改成 UTF-8 通常能解决——GB2312 收录的汉字不全,UTF-8 更全。
记住这条排查顺序口诀:先网络、再端口、后配置、最后看日志。日志是定位问题的最好帮手。
八、进阶定制:把它变成"你的"平台
用顺了之后,你可能会想改改界面、接接业务。WVP 在这方面也留足了空间:
接 API 做业务联动
平台提供 RESTful API,支持创建 API Key 后调用。比如你可以写一段脚本,每天定时拉取设备在线状态,生成巡检报表;或者对接门禁系统——有人刷卡时自动调取对应摄像头的实时画面。
改前端界面
前端基于 Vue.js 构建,源码在web/src/目录下。改主题色去web/src/styles/variables.scss,加功能模块在web/src/views/下新建组件。如果不想动源码,管理后台本身也支持角色权限、用户管理等配置。
监听事件做告警增强
平台的事件机制是开放的,你可以监听设备报警、设备上下线等事件,在事件回调里接自己的逻辑——比如发企业微信通知、短信告警,实现"监控+IM"的联动。
九、写在最后:从今天开始搭一套自己的监控平台
回顾老张的这段经历,其实没什么高深的东西:一个开源项目,一台普通服务器,加上愿意动手的心。他收获的不只是"统一管理所有摄像头",更是一个可以随业务成长的底座——想加设备就加设备,想扩并发就加节点,想对接业务就写 API。
如果你也正被多品牌设备管理困扰,不妨给自己半天时间:
- 拉代码:
git clone https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro - 跑起来:按上面的四个里程碑,先让后台能登录
- 接一台设备:从一台摄像机开始,体验"国标握手"的瞬间
- 看文档:项目
doc/目录里有完整的功能说明,数据库/目录里有各版本脚本
遇到问题也别慌:先翻避坑清单,再查日志,大部分问题都有前人踩过的痕迹。搭好之后,你收获的将是一套完全属于自己、可以持续演进的智能安防系统——而这,正是开源的意义所在。
💡 最后的小建议:正式上线前,先在测试环境把设备接入、录像、报警、级联全流程验证一遍,确认符合业务需求后再切换生产。祝你的监控平台一次上线,稳定运行。
【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考