流程状态:整合票 20 依据已核验正本合并的流程结构,未联调;回放域六张正本全部标「存在关键缺口,不可作为完整契约发布」(采集服务器与媒体节点为最终责任端,源码不在工作区),各步骤以其正本页为准。

回放与文件下载

串起从采集服务器选择到媒体播放/下载的主路径。回放文件链路不经中心后端:数据/媒体操作是 Web(App)与采集服务器/媒体节点直连,中心网关订阅清单与消费链均不在链路内(票 14 核验、票 18 复核维持)。

前置条件

主路径

  1. 分类总数list-file-category-total 按采集服务器分组、逐台串行发布,取得各服务器文件分类计数。
  2. 按日存在性list-file-existence 查询目标日期是否有录像,用于日历/时间轴置灰。
  3. 文件清单list-file-info 取文件行(含 ip/port/playUrl/crypto 等消费键)。
  4. 播放/下载地址
    • 明文文件(crypto !== 1):直接按文件行构造媒体 URL,见动态媒体 URL 正本https://{ip 点改连字符}.node.netbodycamera.com{:port}{playUrl})。
    • 加密文件(crypto === 1):先经解密正本携口令换取 ip/port/playUrl,再按同一 URL 规则构造。
  5. 播放:交给播放器取流;媒体就绪以播放器 onReady 为准(正本「完成判据」)。
  6. 下载:同一 URL 在 playUrl 后追加 &ddl=1 触发浏览器/系统下载(ddl 服务端语义缺证)。
  7. GPS 轨迹(可选):playback-file-gps 查询轨迹;应答 topic 原样拼接 fileUrl,特殊字符风险见正本。

失败与恢复

  • 发布成功 ≠ 采集服务器应答:五条 data/v1 命令的应答权威 schema、错误形态与完成语义缺证(各正本关键缺口);QoS 不推出必达。
  • decrypt 无在线门控、无超时:采集服务器不应答时界面停留在验证中且需手动取消(解密正本);App 应设置自己的用户可见超时。
  • 加密口令经 Broker 明文传输(payload params.password),传输加密依赖部署 wss/TLS 终止点;防暴力破解策略缺证。
  • 媒体 URL 无 Web 侧凭据:持有 URL 即可访问,有效期/Range/鉴权模型缺证;播放失败无自动重试(动态媒体 URL 正本)。
  • 断线后重发查询命令即可(无会话状态);轮询/串行发布语义见各正本。

收尾

  • 停止播放器并释放本地资源;MQTT 连接随布局卸载断开。
  • &ddl=1 下载不产生可查询的服务端任务,无后续状态需要清理。
  • 回放域缺口汇总(采集服务器应答 schema、媒体节点生命周期、口令明文传输、Broker ACL)见未发布正本与保留项的缺口统计小节。