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

110 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 指定摄像头型号准入记录
## 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 同时解码主、子码流,不保存视频:
```text
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 节的负责人证据豁免;任何型号、硬件或固件变化均恢复为未验证状态,并至少重跑受影响矩阵。