Files

110 lines
6.5 KiB
Markdown
Raw Permalink Normal View 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 同时解码主、子码流,不保存视频:
```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 节的负责人证据豁免;任何型号、硬件或固件变化均恢复为未验证状态,并至少重跑受影响矩阵。