本文讨论录像写入位置的设计。先完成 单路录像与回放实验,再增加多盘管理;下面的字段和流程是设计建议,不是现成平台功能。
三类数据各管什么
| 数据 | 需要记录的内容 | 用途 |
|---|---|---|
| 存储卷 | 根目录、可用空间、挂载身份、可写状态 | 决定新录像可写到哪里 |
| 录像计划 | 媒体路径、时间计划、保留要求、期望卷 | 表示希望怎样录像 |
| 录像文件 | 实际卷、文件路径、起止时间、大小与状态 | 查找和回放已经写出的录像 |
计划指向新卷不会移动旧文件。回放必须查实际文件索引,不能只拼接当前计划的根目录。
本地盘与网络盘
本地盘通过文件系统读写,NAS 可以通过 SMB/NFS 挂载后提供路径;iSCSI 提供块设备,仍需文件系统。网络盘是否可访问、服务账号是否有权限、挂载是否持久都要在运行服务的身份下检查。
Windows 登录用户的映射盘不保证 Windows 服务可见。Linux 挂载失败后,空挂载点有时仍可写到本机系统盘,应核对挂载身份,不能只检查目录存在。
路数不能从分辨率推导。连续录像的近似容量为 码率Mbps × 10.8 × 天数 GB/路;网络与磁盘还要同时承担读取、回放和协议开销。具体计算见 容量规划。
切换的确认顺序
- 检查新卷的挂载、权限、可用空间,使用小文件验证创建、写入与删除。
- 记录切换请求与期望配置,下发新的录像路径。
- 查流媒体服务实际配置、日志和新生成文件,确认新卷已经写入。
- 更新实际卷和切换结果。失败时记录原因,并决定重试或回到旧卷。
- 保留旧文件索引,验证跨卷时间范围的回放。
MediaMTX 的 Control API 按版本核对;1.15.3 的路径局部修改是 PATCH /v3/config/paths/patch/{name},不是 /paths/update。调用成功表示配置处理成功,录像是否重新建文件、是否有间隙仍需实际观察。
recordPath 模板不附加 .mp4,扩展名由录制格式决定。不同路径和多服务实例必须避免文件重名。配置热更新不能保证无间隙切换;要用连续测试画面比较切换前后的时间戳。
失败与回放
卷满、NAS 离线、只读、进程退出和未完成分段分别记录。剩余空间阈值应提前触发;不要等待磁盘完全写满才切换。索引中的“已完成”需要有文件存在和完成信号的依据。
文件路径是服务端定位信息,不能直接返回给浏览器当 URL。通过授权的回放或下载接口提供内容,验证用户权限、文件根目录和所选时间段。文件删除后同步索引,并检查仍在写入或回放中的文件如何处理。
评论