wvp-GB28181-pro 实战指南:GB28181 摄像头接入与取流一步到位
2026/9/22 11:30:22 网站建设 项目流程

wvp-GB28181-pro 实战指南:GB28181 摄像头接入与取流一步到位

【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro

本文写给负责对接监控摄像头的后端与集成工程师。读完你能独立完成 wvp-GB28181-pro 的部署、GB28181 设备接入并保活、实时取流、录像回放倍速,以及把流 RTMP 推给第三方平台。全文按"部署 → 接设备 → 取流 → 回放 → 推流 → 保活 → 速查表"七步展开,每步给可执行的接口与验证方法。

把 wvp-GB28181-pro 平台跑起来

本节完成后你能得到一套可登录、可调接口的运行实例,并核对好四个关键端口。

目标:得到运行中的 wvp 服务 + 可访问的管理页前置:已安装 Docker 与 docker compose关键接口:登录GET /api/user/login(后续请求带请求头access-token步骤

cd docker docker compose up -d

验证:浏览器访问http://<host>:8080能看到管理页;接口层直接监听18978,可用登录接口取 token。注意docker/.env里要配SIP_DomainSIP_IdSIP_PasswordStream_IPSDP_IP,这些值会联动到 SIP 与媒体服务器。

端口速记:管理页与代理8080(nginx)、wvp API18978、SIP 信令8116、媒体收流 RTMP10935

GB28181 设备接入与 SIP 注册保活

本节完成后你能把一台摄像头加进平台、触发通道同步,并确认它在线。

目标:设备注册上线、通道同步完成前置:设备侧已按本平台填好 SIP 域(SIP_Domain)、SIP 端口8116与认证口令关键接口:添加POST /api/device/query/device/add、同步GET /api/device/query/devices/{deviceId}/sync步骤:先登录拿 token,再预录设备

curl -X POST http://127.0.0.1:18978/api/user/login \ -d "username=admin&password=admin" curl -X POST http://127.0.0.1:18978/api/device/query/device/add \ -H "access-token: $TOKEN" -H "Content-Type: application/json" \ -d '{"deviceId":"33010400001320000001","name":"东门卡口","manufacturer":"宇视","ip":"172.16.5.21","port":5060}'

验证GET /api/device/query/devices/33010400001320000001返回的status为在线;GET /api/device/query/sync_status?deviceId=33010400001320000001返回code=0。若 sync 提示"设备尚未注册过",说明设备还没 REGISTER 上来,属正常,等注册后再触发同步。

实时播放接口:从点播开始到拿到流地址

本节完成后你能对任意在线通道发起点播,拿到 flv / rtmp / hls 多种格式地址。

目标:拿到一路可播放的实时流地址前置:设备在线,通道已同步(设备详情status为在线)关键接口:开始GET /api/play/start/{deviceId}/{channelId}、停止GET /api/play/stop/{deviceId}/{channelId}步骤

curl -H "access-token: $TOKEN" \ "http://127.0.0.1:18978/api/play/start/33010400001320000001/3301040000132000000101"

验证:返回code=0data内含flvrtmphls等字段,flv地址可被播放器直接打开。点播默认等待30秒(user-settings.play-timeout),超时返回"点播超时"。看完务必调 stop 接口释放 RTP 会话,否则通道会一直被占用。

录像回放倍速:开始、拖动、调速与停止

本节完成后你能调取指定时段录像,并在播放中做倍速与拖动。

目标:对某通道指定时段发起回放,并支持倍速 / 暂停 / 拖动前置:该时段设备确有录像关键接口

  • 开始GET /api/playback/start/{deviceId}/{channelId},参数startTimeendTime(格式yyyy-MM-dd HH:mm:ss
  • 倍速GET /api/playback/speed/{streamId}/{speed}speed取 0.25 / 0.5 / 1 / 2 / 4 / 8
  • 拖动GET /api/playback/seek/{streamId}/{seekTime}(偏移秒)
  • 暂停 / 恢复GET /api/playback/pause/{streamId}GET /api/playback/resume/{streamId}
  • 停止GET /api/playback/stop/{deviceId}/{channelId}/{stream}

步骤:先 start 拿到回放流,再用返回的stream作为streamId调 speed / seek。验证:start 返回code=0且带流地址;调 4 倍速后画面按 4 倍推进;停止后通道不再有回放会话。可用GET /api/gb_record/query/{deviceId}/{channelId}先确认该时段有录像文件再回放。

RTMP 推流:把国标流分发到第三方平台

本节完成后你能把已取到的流推到第三方 RTMP 平台,或用国标级联把流共享给上级平台。

目标:把一路国标流持续推送到外部 RTMP 地址前置:目标 RTMP 地址网络可达、app 与 stream 名确定关键接口

  • 添加任务POST /api/push/addurlappstreammediaServerIdenabled
  • 启动GET /api/push/start?id={推流ID}
  • 列表GET /api/push/list、强制停止GET /api/push/forceClose?app=&stream=步骤
curl -X POST http://127.0.0.1:18978/api/push/add \ -H "access-token: $TOKEN" -H "Content-Type: application/json" \ -d '{"name":"东门卡口直播","url":"rtmp://live.example.com/live/gate-east","mediaServerId":"polaris","enabled":true,"app":"live","stream":"gate-east"}'

验证GET /api/push/list能看到该任务且状态为已启动;目标平台收到gate-east一路流。若对接的是上级国标平台而非普通 RTMP,改走国标级联,在 doc/ 的级联文档里配置对端平台与共享通道。

设备在线监控:心跳统计与目录订阅

本节完成后你能判断设备何时在线 / 掉线,并在通道增删时自动同步,不用人工盯。

目标:拿到设备在线时间点,并让通道变更自动重新同步前置:设备已接入关键接口

  • 目录订阅GET /api/device/query/subscribe/catalog?id={设备数据库ID}&cycle={秒}
  • 心跳统计GET /api/device/query/statistics/keepalive?deviceId=&count=
  • 注册统计GET /api/device/query/statistics/register?deviceId=&count=
  • 主动状态GET /api/device/query/devices/{deviceId}/status步骤:对关注保活的设备开启目录订阅(cycle即订阅周期),通道变化时平台自动重新同步目录。验证:keepalive 按时间正序返回最近 N 条在线记录;掉线时最新记录的时间戳会停更;重新注册后 status 接口恢复在线。

两张速查表

API 速查表

功能方法与路径关键参数一句话用途
登录取 tokenGET/POST /api/user/loginusernamepassword后续请求带 access-token
分页查设备GET /api/device/query/devicespagecountstatus列设备并过滤在线
查设备详情GET /api/device/query/devices/{deviceId}deviceId看单台设备状态
添加设备POST /api/device/query/device/adddeviceIdipport预录入国标设备
同步通道GET /api/device/query/devices/{deviceId}/syncdeviceId触发目录同步
查同步进度GET /api/device/query/sync_statusdeviceId看通道同步是否完成
查通道GET /api/device/query/devices/{deviceId}/channelspagecountonline列出设备下通道
开始点播GET /api/play/start/{deviceId}/{channelId}deviceIdchannelId拿实时流地址
停止点播GET /api/play/stop/{deviceId}/{channelId}deviceIdchannelId结束实时流
开始回放GET /api/playback/start/{deviceId}/{channelId}startTimeendTime拿录像流地址
回放倍速GET /api/playback/speed/{streamId}/{speed}speed0.25~8 倍速
录像查询GET /api/gb_record/query/{deviceId}/{channelId}时间范围查有哪些录像文件
添加推流POST /api/push/addurlappstream把流推到第三方
开始推流GET /api/push/startid启动推流任务
目录订阅GET /api/device/query/subscribe/catalogidcycle通道变更自动同步
心跳统计GET /api/device/query/statistics/keepalivedeviceIdcount看设备在线时间点

故障速查表

现象最可能原因验证方式处理动作
设备一直 OFFLINESIP 域 / 端口 / 口令不匹配设备侧抓 REGISTER;查/api/device/query/devices/{deviceId}的 status核对SIP_Domain、端口8116SIP_Password一致
添加后通道为空设备尚未注册或同步未触发sync 返回"设备尚未注册过"等设备 REGISTER 后再调 sync,看 sync_status
点播返回"点播超时"RTP 端口不可达 / 传输模式不对查媒体10000端口与 device 的 streamMode/api/device/query/transport/{deviceId}/{UDP\|TCP-ACTIVE},检查防火墙
回放无流该时段无录像/api/gb_record/query/{deviceId}/{channelId}返回空startTime/endTime到有录像的时段
推流第三方收不到目标 RTMP 不可达 / app-stream 错目标服务器收流日志;/api/push/list任务状态核对url/app/stream,换内网可达地址

下一步清单

  1. 想弄懂 SIP 注册、级联广播的协议细节,读 doc/(doc/_content/theory/register.mdbroadcast_cascade.md)。
  2. 要改端口、SIP 域或媒体地址,看 docker/ 里的docker-compose.ymldocker/wvp/wvp/application-docker.yml
  3. 自建库而非用容器,执行 数据库/ 下的数据库/2.7.4/初始化-mysql-2.7.4.sql完成建表。

【免费下载链接】wvp-GB28181-pro基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR接入。支持国标级联,支持将普通摄像机/直播流/直播推流转国标共享到国标平台。项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询