SkeyeVSS开发FAQ:ONVIF设备接入与异厂兼容
试用安装包下载 | SMS | 在线演示
项目地址:https://github.com/openskeye/go-vss
1. ONVIF 与国标的关系
ONVIF侧重 IP 摄像机的发现、Profile、RTSP/事件等;GB/T 28181侧重SIP 注册、目录、点播信令。同一项目可能同时存在「国标设备」与「ONVIF 设备经网关或平台适配接入」。排障时要分清设备走的是哪条协议栈,避免用 SIP 日志去查纯 ONVIF 流。
2. 发现与认证
- WS-Discovery在跨网段时常被禁;可改用手动填设备 IP + 端口;
- 用户名/密码错误会表现为 Digest 401 或 GetCapabilities 失败;
- 部分厂商默认关闭 ONVIF或需单独开启ONVIF 用户。
3. Profile 与流媒体 URL
- 不同 Profile(Main/High)影响解码兼容性,但与取流 URL无必然关系;
- GetStreamUri返回的 RTSP 地址可能是设备内网地址,平台拉流侧需能访问或做地址替换;
- 确认主/子码流的 token 与分辨率是否符合预期。
4. 异厂兼容坑点
- 时间戳:部分设备 RTCP SR 异常,导致播放器统计不准;
- GOP 过长:首屏慢,可尝试缩短 GOP或缓存最近 I 帧(架构允许时);
- 非标扩展:厂商私有 XML 字段导致解析失败,需降级忽略或固件升级。
5. 与防火墙、NAT
ONVIF 控制面多为HTTP(S),媒体为RTSP/RTP;安全组需同时放行。若仅放行 554 而阻断RTP 端口段,会出现有连接无画面。
6. 排障顺序建议
- 用VLC/ffplay直连设备 RTSP,确认源可用;
- 再验证平台到设备的网络与认证;
- 最后查平台内部转发/录制是否二次封装出错。
ONVIF 问题先直连验证源,再谈平台适配;多数兼容性是URL 与防火墙而非「协议神秘 bug」。
