wvp-GB28181-pro 完整实战指南:用 Docker 部署 GB28181 视频平台,接入第一台摄像头并级联上级
【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro
wvp-GB28181-pro 是一个基于 GB28181-2016、部标 808/1078 标准实现的开箱即用网络视频平台,自带 Web 管理页面,支持海康、大华、宇视等品牌的 IPC/NVR 接入,支持 NAT 穿透,还能把普通 RTSP/RTMP 流、直播推流转成国标共享给上级平台。
本文的路径很简单:先用 Docker 把整套平台跑起来,再把第一台国标摄像头接进来看实时画面,然后处理"旧设备不支持国标"和"要上报给上级平台"这两个进阶场景,最后给一份按优先级排的排障清单。跟着走一遍,你就知道这个平台能干嘛、怎么干、出了问题先查哪里。
一条命令 Docker 部署:5 分钟跑起 GB28181 视频平台
环境要求不高:一台 Linux(4 核 8G 起步),Docker 20.10 以上。整个部署就两条命令:
git clone https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro cd wvp-GB28181-pro/docker && docker compose up -d启动后共 5 个容器:wvp(核心信令 + 管理后台)、zlm(基于 ZLMediaKit 的流媒体服务,负责真正搬运视频流)、mysql、redis、nginx。五个服务之间的联动参数全部集中在 docker 目录的.env文件里,改一处即全局联动,包括 SIP 端口、SIP 域和编号、RTP 收流端口、流地址 IP 等,不用进容器逐个改。
浏览器访问服务器IP:8080,账号密码都是admin,登录后就是带侧边栏的完整控制台,设备数、通道数、在线状态一眼可见。
⚠️ 两个坑提前说,90% 的"设备注册不上、点播收不到流"都跟这里有关:
.env里三个 IP 默认是 127.0.0.1。Stream_IP(流链接 IP)、SDP_IP(告诉设备把流发到哪)、SIP_ShowIP(展示给设备的 SIP 地址),设备在局域网里根本连不上你服务器的 127.0.0.1,必须改成设备的网关所在网卡 IP,否则设备会把视频流发到"不存在的地址"。- 端口要开对且映射要一致。必开的是 SIP 端口(
.env里默认 8160,UDP 和 TCP 都要放行)和 zlm 的收流端口(默认 RTMP 10001、RTSP 10002、RTP 10003,另有 RTP 收流端口范围)。zlm 用 Docker 跑建议 host 网络模式,或保证内外映射端口一致(映射 8160 就两端都 8160)。测试环境建议先关防火墙,排除网络因素再排查。
完整端口清单见部署文档。
第一台海康/大华摄像头怎么接:填对 4 个 SIP 参数
先花 10 秒理解两个词:SIP是发指令的"电话线",比如"开始播放""云台转左";RTP是真正搬视频数据的"水管"。国标 28181 规定两端必须按同一套 SIP/RTP 规则对话,所以只要设备支持这个协议,什么品牌都能接。
接入国标设备的本质就一件事:在设备端填对平台的 4 个参数。
- 打开 WVP 的"国标设备"页面,点右上角"接入信息",弹窗里列出 4 个关键值:SIP 编号(20 位国标编码)、端口、域、密码。
- 登录摄像头的国标 28181 配置页,把这 4 项原样填进"上级平台"配置。海康、大华、宇视各品牌的填写位置官方接入设备文档里都有截图标注。
- 保存。十几秒后刷新 WVP 设备列表,设备出现且状态"在线",就完成了。
⚠️ 海康设备注意勾选"鉴权"选项后密码才能生效;.env里SIP_Domain一般取编号前 10 位,别自己瞎填。
设备上线后,日常操作都在列表行尾按钮里:
- 播放:直接弹播放窗口,浏览器无插件,H264/H265 都能放,主/子码流可切换
- 刷新通道:设备通道有变化时手动拉取最新目录
- 设备录像:查询 NVR/IPC 存储卡上的历史录像,按时间段回放和下载
- 云台控制:八个方向 + 拉近拉远 + 预置位
- 语音对讲:⚠️ 不同品牌收流时机不同——设备编辑里"收到 ACK 后发流",大华不勾、海康要勾,配错了就是只有声音没画面或没声音
分屏页可以按行政区划、业务分组筛选通道后多路并排看:
播放页还能拿到 RTSP、RTMP、HTTP-FLV、HLS 等多种协议地址,其中 HTTP-FLV 地址丢给任何播放器就能看,甚至不用登录平台——对接第三方系统时很省事。
旧摄像头不支持国标?拉流代理与推流转成国标通道
这是 wvp-GB28181-pro 很实用的一点:不要求所有设备都讲国标。
拉流代理:只要旧摄像头能给出一个 RTSP 地址(大华、海康老机型都有),在"拉流代理"页面填进去就能直接播放。原理是 zlm 像播放器一样主动把流拉到服务器上缓存,别人再点播时走缓存——旧摄像头一般只允许 1-2 路并发,这么一转,多少人看都不卡源设备。需要共享给上级国标平台时,给它配一个国标编码,它就变成一个"虚拟国标通道"。
推流接入:无人机、OBS 这类推流设备,从"媒体节点"页面复制推流地址,按rtsp://流IP:端口/应用名/流名的格式拼上自己定义的 app 和 stream,填到推流端即可。推流开始后 WVP 的推流列表就能看到并播放。
⚠️ 推流鉴权默认是开启的,裸地址直接推会被拒绝,地址里要带鉴权信息;另外推流结束后列表会自动移除,想让它变成长期通道,同样要给它分配一个国标编号。
💡 两条路径一句话区分:拉流代理是平台"主动拉",推流是设备"主动推",选哪条取决于设备支持哪种。
国标级联:把自己的平台报到上级名下,共享通道
级联的大白话解释:把你的平台"报到"上级平台,把摄像头作为它的通道共享出去,上级那边就能直接点播、控制云台、查录像。流程分三步:
- 添加上级平台:进入"国标级联"页面点添加,填上级给你的 SIP 编号、域、IP、端口和密码。心跳周期建议 60 秒左右——上级一般 3 次收不到心跳就判你离线。
- 等状态变"在线":列表里出现该平台且状态在线,说明注册握手成功。离线的话 90% 是 SIP 信息两边不一致或网络不通,先看信令日志定位,别急着改别的东西。
- 通道共享:点该平台的"通道共享",可以按设备批量添加,也可以逐条选。共享时能给每个平台单独定义通道编号——同一个摄像头共享给 A 平台用 1 号、共享给 B 平台用 100 号,互不冲突。
同一个 WVP 可以同时级联多个上级平台,每个平台各自维护一份虚拟目录,目录订阅、报警订阅、移动位置订阅各有开关。上级看到的目录结构由你这边决定,后面两棵树可以随级联一起推上去。级联完整流程见国标级联文档。
设备到几百路之后:通道组织与平台侧录像
设备一多,"按设备列表找"就不好使了,WVP 提供两棵树来组织通道:
- 行政区划:省-市-县树,把通道挂到具体区域节点下
- 业务分组:按项目、部门等自定义维度分组
两棵树都支持自定义,并且可以随级联推送给上级。
录像方面有两个层次,先分清再选:
- 设备录像:查 NVR/IPC 存储卡上的录像,录没录、录了多久取决于设备端
- 云端录像:把流录在 WVP 自己的服务器上,生成 mp4 文件列表,支持在线播放、下载、删除。推流、拉流代理、国标点播的流都能走云端录像,适合需要平台侧留存的场景
规模化扩展上,WVP 支持流媒体节点集群与负载均衡——媒体流可以打到不同 zlm 节点,WVP 与 zlm 也可以分开部署;数据库支持 MySQL、PostgreSQL、金仓、达梦,x86 和 ARM 架构都能编译部署。官方压测数据是局域网内轻松接入 5 万+ 设备,实际上限取决于你的服务器性能和带宽。
注册不上 / 点播超时?按这个顺序排障
排障的总原则:先别改代码,先确认消息是否到达。设备注册不上,本质就两种可能——参数填错了,或网络不通导致 REGISTER 消息没到 WVP。用抓包确认 REGISTER 是否到达服务器(抓包技巧文档),再逐项核对参数,这是最高效的路径。
| 症状 | 先查什么(按优先级) |
|---|---|
| 设备一直注册不上来 | ① 4 个 SIP 参数是否与"接入信息"完全一致(海康要勾鉴权);② SIP 端口 UDP+TCP 是否都放行;③.env的SIP_ShowIP是否还是 127.0.0.1 |
| 注册成功但点播超时 | 先分清是信令超时(设备没回话,查网络/NAT 映射,公网部署检查心跳是否太长导致 NAT 失效)还是收流超时(设备回了话但流没到,往下查) |
| 收流超时 | ①SDP_IP是否填了 127.0.0.1 或设备不可达的内网 IP;② zlm 收流端口范围是否开放;③ 查 zlm 日志有没有流注册;④ 先关闭 SSRC 校验再试 |
| 点播返回 400 错误码 | 设备认为消息有误,用抓包分析消息是否缺失,可能是不规范设备对接问题 |
| 点播返回 500 错误码 | 多为设备内部问题,联系设备/平台厂商 |
| 设备名/通道名乱码 | 设备编辑里把字符集从 GB2312 改成 UTF-8(GB2312 收录汉字不全) |
| 流偶尔串流 | 设备编辑里开启 SSRC 校验(个别非标设备开启后点播会失败,权衡使用) |
| 生产环境加固 | 改掉默认端口,开启推流鉴权和接口鉴权,防火墙只开必要端口 |
更细的错误码分析见设备注册排障和点播超时排障。
跑通环境后,接下来你可以做的三件事
- 找一台测试机用 Docker 方式把整套跑起来,接一台手头任意摄像头,完整走一遍"注册 → 点播 → 云台控制",10 分钟内验证环境没问题。
- 如果第一台设备注册不上,先别改代码——抓包确认 REGISTER 是否到达,再逐项核对 4 个 SIP 参数和端口放行,这是最高效的排查顺序。
- 有上级对接需求时,先在自己环境里把"添加平台 → 在线 → 通道共享"三步走通(接两台 WVP 互上级联即可模拟),再正式填上级的 SIP 参数,避免两边同时改配置互相干扰。
平台核心信令实现在 gb28181 模块源码,拉流代理见 streamProxy 源码,车载 808/1078 网关见 jt1078 源码,需要深入某一环节时可以直接对照阅读。
【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考