You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

2.7 KiB

海康 NVR HLS 回放控制台实施计划

本计划对应 docs/superpowers/specs/2026-07-14-hik-nvr-playback-console-design.md。所有修改留在本地,不提交 Git。

1. 新增页面配置模型

文件:

  • src/main/java/com/inspect/nvr/hik/config/HikNvrPlaybackUiProperties.java
  • src/main/java/com/inspect/nvr/hik/domain/HikNvrPlaybackUiConfig.java
  • src/main/java/com/inspect/nvr/hik/domain/HikNvrPlaybackUiSessionRequest.java

实现:

  • 绑定 hik.playback.ui,保存 NVR 地址、端口、账号、密码、默认通道和设备树通道;
  • toPublicConfig() 只返回页面所需非敏感字段;
  • toPlaybackRequest() 将页面请求与后端固定配置合并,拒绝缺少密码或基础连接参数的配置;
  • 请求 DTO 只允许 channelstreamTypestartTimeendTime

2. 新增页面接口

文件: src/main/java/com/inspect/nvr/hik/controller/HikNvrPlaybackUiController.java

实现:

  • GET /hik/nvr/playback/hls/ui/config 返回安全的页面配置;
  • POST /hik/nvr/playback/hls/ui/sessions 合并固定配置后调用现有 HLS 服务;
  • 复用已有异常处理和会话控制接口,不复制回放状态机;
  • 增加 OpenAPI 中文说明和请求示例。

3. 增加运行配置

文件: src/main/resources/application.yml

增加 hik.playback.ui 默认项,地址默认使用当前 NVR 192.168.1.249,密码默认空并支持环境变量覆盖;增加可配置的设备分组和通道列表。

4. 实现播放器页面

文件: src/main/resources/static/playback.html

实现:

  • 工业监控台视觉:冷白网格背景、海军蓝文字、蓝色状态色、卡片和时间轨道;
  • 设备树、日期/时间查询、视频舞台、状态徽标、录像区间轨道、控制栏和全屏;
  • 使用 hls.js CDN 或浏览器原生 HLS 播放;
  • 创建会话后轮询 STARTING/PLAYING,只在 HLS 就绪后加载 m3u8;
  • 控制按钮调用暂停、恢复、1/2/4/8 倍速、SEEK 和删除接口;
  • 处理 generation 变化、旧会话清理、错误提示、音量和时间轴点击跳转;
  • 不在任何 HTML、脚本或请求体中出现 NVR 密码。

5. 测试与验证

文件: src/test/java/com/inspect/nvr/hik/controller/HikNvrPlaybackUiControllerTest.java

  • 验证配置响应不包含 password
  • 验证页面创建请求只向现有服务传入后端固定凭据和页面时间参数;
  • 验证空密码配置返回明确的 400;
  • 运行 mvn test,确认既有 62 个测试及新增测试通过;
  • 使用 Maven 打包后检查 target/classes/static/playback.html
  • 若本地应用可访问,使用 HTTP 请求验证配置接口、静态页面和缺少密码时的错误响应。