首页 / Go 平台(cloud-go) / 视频与推送:videosvr + wssvr
视频与推送:videosvr + wssvr
实时监控 WebRTC、历史录像、云台控制与实时位置 WebSocket 网关。
videosvr 视频业务
视频业务服务(gRPC video.proto),基于 ZLMediaKit / Pion WebRTC 提供实时监控、历史录像与云台控制:
| 能力 | 接口/实现 | 说明 |
|---|---|---|
| 实时监控 | StartLive(deviceID, channel, streamType) | 校验设备权限 → 构造 WebRTC 服务地址 → 向设备发送 SIP INVITE;返回 webrtc:// / wss:// 播放地址 |
| 历史录像 | QueryRecordings | 联动 OSS 检索历史录像文件,生成临时访问 URL |
| 云台控制 | PtzControl | 远程转向、缩放(PTZ) |
| 流媒体 | go-share clients/zlmediaHttp | ZLMediaKit API:抓拍、流管理 |
音视频全程走 Go 数据面,不占用 Java 服务 IO;播放地址使用短效临时凭证保证隐私。
产品模式区别:本页描述云录像/平台媒体服务能力。对于“录像仅保留在车载 microSD、平台不接收视频内容”的独立设备模式,参见车载独立监控与本地媒体架构;该模式中 Go 服务只参与控制、授权、信令和审计,不能承接媒体内容或历史录像文件。
wssvr 实时位置网关
实时位置 WebSocket 网关,为 App 提供设备位置实时推送:
| 目录 | 职责 |
|---|---|
internal/route/ingress | WebSocket 入口接入(路由) |
internal/route/manager | 连接管理(NATS ACL、wildcard 订阅管理) |
internal/integration | 外部集成:coreNats、tdengine(位置数据)、websocket 测试 |
internal/snapshot / model / protocol | 位置快照、数据模型与协议 |
internal/metrics | 连接与消息指标 |
安全默认:WebSocket Upgrade 由 Java Authorizer 统一完成身份与设备权限校验;鉴权或关键实时依赖不可用时 fail-closed(拒绝连接而不是放行)。
实时视频链路
- App 调用 Java 业务接口发起拉流请求,获取访问权限与短效 Token
- Java 校验权限与订阅权益,返回 Go videosvr 的 WebRTC 直连地址
- App 与 videosvr 建立 WebRTC 通道;videosvr 向设备发送 SIP INVITE 唤醒推流
- 视频流经 ZLMediaKit 转发;历史录像从 OSS 生成临时 URL 播放
排查要点
- 拉流失败:先确认 Java 侧权限/权益校验,再查 videosvr 权限校验、设备在线与 SIP INVITE 是否发出。
- 播放卡顿/黑屏:查 ZLMediaKit 流状态、码流类型(主/辅)与网络链路。
- 实时位置不更新:查 wssvr 连接状态、NATS 位置数据流与 Java Authorizer 鉴权结果。