Files
yovision/docs/research/camera-compatibility.md
T
QiuSW c9251daadf
Harness governance / validate (push) Has been cancelled
Harness governance / validate (pull_request) Has been cancelled
docs(camera): approve single Hikvision baseline
2026-08-05 17:38:54 +08:00

6.5 KiB
Raw Blame History

指定摄像头型号准入记录

1. 结论

  • 准入状态:approved,包含项目负责人对“三次真实网络断开恢复”的一次性证据豁免。
  • 准入范围:仅限本记录冻结的一台 HIKVISION DS-2CD3321FD-IW1-T、硬件版本 0x0、固件 V5.5.61 build 180929。
  • 不适用范围:其他型号、硬件版本、固件、生产批次、厂商、多台真实设备故障隔离、16/64/128 路容量和生产 SLA。
  • 测试日期:2026-08-04 至 2026-08-05(Asia/Shanghai)。

2. 脱敏设备与网络基线

项目 冻结值
厂商 HIKVISION
型号 DS-2CD3321FD-IW1-T
设备类型 IPCamera
硬件版本 0x0;ONVIF HardwareId 为 88
固件 V5.5.61 build 180929
编码器 V7.1 build 180929
样机标识 序列号 SHA-256 前 12 位:e9ed6a555ae0;不保存原始序列号
网络 公网 DDNS + NAT 端口映射;不记录主机名、内网地址或完整 URI
RTSP TCP 传输;外部端口 554
ONVIF SOAP 1.2 + WS-Security UsernameToken PasswordDigest;外部端口 8008
凭据 RTSP 与 ONVIF 使用独立配置项;只存在本机私有 ip_camera.env,不得提交仓库

摄像头通过 ONVIF 返回内网 XAddr 和内网 RTSP 地址。公网/NAT 接入时,Sense 必须保留服务路径并把主机与端口重写为部署配置;不得把本次私有地址或海康域名写死在业务代码中。

3. 可重复测试步骤

  1. 在仓库外或被 Git 忽略的 ip_camera.env 中配置主机、RTSP/ONVIF 端口以及两组独立凭据。

  2. 通过 ONVIF GetDeviceInformation 与海康 ISAPI GET /ISAPI/System/deviceInfo 交叉核对型号、硬件和固件;序列号只生成摘要,不保存原值。

  3. 依次调用 GetProfiles、GetStreamUri、GetSystemDateAndTime 与 SetSystemDateAndTime。时间设置测试先读取模式、时区和夏令时,再原样写回;手动模式只校准 UTC。

  4. 使用一次性不存在的用户名分别请求 RTSP 与 ONVIF,确认被拒绝;随后立即使用正确凭据请求,确认没有误锁定。

  5. 使用 FFmpeg 通过 RTSP over TCP 同时解码主、子码流,不保存视频:

    ffmpeg -hide_banner -loglevel warning -nostats -progress pipe:1 \
      -rtsp_transport tcp -i "rtsp://<user>:<password>@<host>:<port>/<path>" \
      -map 0:v:0 -an -t 605 -f null -
    
  6. 在持续测试前后分别读取摄像头 UTC,记录相对测试机 UTC 的偏差。

  7. 原规格要求真实断网并恢复至少三次;本轮因项目负责人不在摄像头现场未执行,按第 6 节的负责人裁决处理。

命令行示例只使用占位符。实际账号、密码、主机名、完整 RTSP URI、ONVIF XAddr、可复用 token 和视频画面均未写入本记录。

4. 实测结果

4.1 ONVIF 与设备身份

检查项 结果 脱敏证据摘要
GetDeviceInformation PASS HTTP 200;厂商/型号/固件与 ISAPI 一致
GetProfiles PASS HTTP 200;返回 mainStream、subStream 两个 Profile
GetStreamUri PASS HTTP 200;分别指向通道 101、102,URI 不内嵌凭据
SetSystemDateAndTime PASS HTTP 200;写后读取成功,Manual、CST-8:00:00、关闭夏令时均保持不变
NAT 地址处理 OBSERVED 返回地址需要重写主机与端口;服务路径和通道路径可保留

4.2 RTSP 主/子码流

通道 媒体属性 连续媒体时长 解码帧数 退出码 警告/错误
主码流 101 H.264,1920×1080,18 fps;AAC 16 kHz 单声道 605.0 秒 10,890 0 0
子码流 102 H.264,704×576,15 fps 605.0 秒 9,076 0 0

两路同时运行,墙钟时长约 607 秒。测试只解码并丢弃输出,没有保存人物画面或媒体文件。

4.3 认证失败与恢复

协议 错误凭据 随后正确凭据
RTSP 401 Unauthorized,PASS 主码流探测成功,PASS
ONVIF SOAP 未授权,HTTP 400,PASS GetDeviceInformation HTTP 200,PASS

每个协议只执行一次无效身份请求,并使用不存在的临时用户名,避免连续错误触发真实账号锁定。

4.4 时间漂移

采样点 摄像头相对测试机 UTC 偏差
605 秒双码流测试前 2.3 秒
测试后 2.8 秒
偏差增长 0.5 秒

摄像头时间接口只提供整秒精度,网络往返也计入样本;本结果证明本次观察窗口未出现明显漂移,不构成长周期时钟稳定性承诺。

5. 失败与工具兼容记录

  • 首次 605 秒测试在打开输入前失败:本机 FFmpeg 不支持 -rw_timeout 参数,两路均未连接摄像头。删除不兼容参数后重新从零执行完整 605 秒测试并通过;失败记录不计为摄像头故障,也不删除。
  • ONVIF 初次启用时,设备曾返回“ONVIF integrate function is disabled”;启用集成协议后服务可发现。独立 ONVIF 用户初次权限不足,后续调整后设备信息、媒体读取和时间设置均通过。

6. 断网恢复负责人豁免

  • 原门禁:真实网络断开与恢复至少三次,并保留每次时间线。
  • 实际情况:项目负责人不在摄像头旁边,2026-08-05 明确要求“第 4 点当作已完成”。本轮没有执行摄像头断电、物理断网或端口映射中断,也没有三次恢复原始时间线。
  • 治理处理:该项标记为 WAIVED,由项目负责人承担验收裁决;T-001 可关闭,但证据不得表述为 PASS 或“已验证自动恢复”。
  • 下游约束:T-006 仍须独立验证真实摄像头/网络短时离线、合成 publisher、Sense 和 MediaMTX 四类恢复;本豁免不能被 T-006、T-007 或生产 SLA 继承。

7. 安全与局限

  • ip_camera.env 已加入 .gitignore;仓库只记录字段语义,不记录实际凭据。
  • 本次通过公网/NAT 测试,不能替代隔离局域网、客户现场弱网或跨 VLAN 发现测试。
  • 单台旧固件样机只能证明这一精确基线可接入,不能证明同型号其他批次或更新固件兼容。
  • 本记录没有评估画质、码率上限、夜视、音频质量、存储、AI 检出率或多路容量。
  • 公网不应长期裸露 RTSP/ONVIF;生产部署需要 VPN、专网或来源 IP 白名单。

8. 最终准入裁决

精确基线 HIKVISION DS-2CD3321FD-IW1-T / 硬件 0x0 / 固件 V5.5.61 build 180929 标记为 approved。该裁决包含第 6 节的负责人证据豁免;任何型号、硬件或固件变化均恢复为未验证状态,并至少重跑受影响矩阵。