本文讨论录像写入位置的设计。先完成 单路录像与回放实验,再增加多盘管理;下面的字段和流程是设计建议,不是现成平台功能。

三类数据各管什么

数据需要记录的内容用途
存储卷根目录、可用空间、挂载身份、可写状态决定新录像可写到哪里
录像计划媒体路径、时间计划、保留要求、期望卷表示希望怎样录像
录像文件实际卷、文件路径、起止时间、大小与状态查找和回放已经写出的录像

计划指向新卷不会移动旧文件。回放必须查实际文件索引,不能只拼接当前计划的根目录。

本地盘与网络盘

本地盘通过文件系统读写,NAS 可以通过 SMB/NFS 挂载后提供路径;iSCSI 提供块设备,仍需文件系统。网络盘是否可访问、服务账号是否有权限、挂载是否持久都要在运行服务的身份下检查。

Windows 登录用户的映射盘不保证 Windows 服务可见。Linux 挂载失败后,空挂载点有时仍可写到本机系统盘,应核对挂载身份,不能只检查目录存在。

路数不能从分辨率推导。连续录像的近似容量为 码率Mbps × 10.8 × 天数 GB/路;网络与磁盘还要同时承担读取、回放和协议开销。具体计算见 容量规划。

切换的确认顺序

  1. 检查新卷的挂载、权限、可用空间,使用小文件验证创建、写入与删除。
  2. 记录切换请求与期望配置,下发新的录像路径。
  3. 查流媒体服务实际配置、日志和新生成文件,确认新卷已经写入。
  4. 更新实际卷和切换结果。失败时记录原因,并决定重试或回到旧卷。
  5. 保留旧文件索引,验证跨卷时间范围的回放。

MediaMTX 的 Control API 按版本核对;1.15.3 的路径局部修改是 PATCH /v3/config/paths/patch/{name},不是 /paths/update。调用成功表示配置处理成功,录像是否重新建文件、是否有间隙仍需实际观察。

recordPath 模板不附加 .mp4,扩展名由录制格式决定。不同路径和多服务实例必须避免文件重名。配置热更新不能保证无间隙切换;要用连续测试画面比较切换前后的时间戳。

失败与回放

卷满、NAS 离线、只读、进程退出和未完成分段分别记录。剩余空间阈值应提前触发;不要等待磁盘完全写满才切换。索引中的“已完成”需要有文件存在和完成信号的依据。

文件路径是服务端定位信息,不能直接返回给浏览器当 URL。通过授权的回放或下载接口提供内容,验证用户权限、文件根目录和所选时间段。文件删除后同步索引,并检查仍在写入或回放中的文件如何处理。

参考:MediaMTX 配置与 Control API、录像。