验证状态:存在关键缺口,不可作为完整契约发布。Web 端 URL 构造与消费已源码核验;媒体节点(
*.node.netbodycamera.com解析到的服务端)与采集服务器是最终责任端,其源码不在本工作区,URL 有效期、Range、鉴权、内容类型与错误语义缺证。 适用基线:源码归纳 @ 2026-09-14
回放播放与下载不经过中心后端:Web 用文件行(list-file-info 应答)或解密应答(decrypt)中的 ip/port/playUrl 直接构造媒体 URL——https://{ip 点改连字符}.node.netbodycamera.com{:port}{playUrl};播放交给 ReactPlayer(HLS/原生 video 由浏览器决定),下载在 playUrl 后追加 &ddl=1 交给浏览器原生下载。本页是 inventory 中该动态媒体操作(http-dynamic-playback-media-and-download)的唯一操作正本;?ddl=1 的服务端语义与媒体节点的有效期限/鉴权机制缺证,本页只记录 Web 可证事实。
| 页面/功能 | 角色或空间分支 |
|---|---|
视频回放播放器构造播放地址(明文文件以文件行 ip/port/playUrl;加密文件以解密应答) |
登录用户;视频回放播放器 |
文件列表面板构造下载链接(追加 &ddl=1 的 <a href download>) |
登录用户;文件列表面板 |
对应 inventory operationId:http-dynamic-playback-media-and-download(consumers 记录)。
GET https://{ip点改连字符}.node.netbodycamera.com{:port}{playUrl}(浏览器 → 媒体节点直连,不经中心后端;下载变体在 playUrl 后追加 &ddl=1)— 回放媒体播放与下载的动态地址。
ip/port/playUrl 的动态值来源:明文文件取 list-file-info 应答行,加密文件取解密应答 data。该地址不属于中心端点(中心服务仓无该媒体域名实现,检索核验),无清单层条目;port 为 443 时省略端口段,playUrl 需自带查询串下载拼接才合法——ddl 的服务端语义缺证。
| 层级 | 判据 |
|---|---|
| URL 构造 | ip/playUrl 非空(加密文件须已解密);纯字符串拼接,无网络请求 |
| 媒体可用 | ReactPlayer onReady;仅代表浏览器取流成功,转码/封装兼容性由浏览器与媒体端决定 |
| 下载可用 | <a download> 触发浏览器下载;ddl=1 是否改变服务端行为缺证 |
| 失败 | onError 文案;无自动重试 |
playUrl 若含时效令牌,过期行为缺证;Web 不刷新、不重取。port == 443 时省略端口、其它端口显式拼接(字符串比较 != 443);端口为字符串型端口值时的行为同上。& 拼接:若 playUrl 不含查询串,URL 形如 ...mp4&ddl=1,是否符合媒体端预期缺证。*.node.netbodycamera.com 的解析与路由机制、ip→子域 约定的服务端实现、URL 有效期、Range/seek 支持、鉴权与 ddl 语义均缺证(inventory gaps 同口径记录)。