录像会话成功但文件找不到
按“计划 → 调度 → 会话 → 文件 → 索引 → 查询”顺序检查。不要一开始就重扫整块磁盘。
flowchart LR
A[计划] --> B[调度]
B --> C[会话]
C --> D[磁盘文件]
D --> E[数据库索引]
E --> F[页面查询]
1. 计划是否应当录像
- 计划启用,目标通道正确。
- 当前星期、时区和时间窗口命中。
- 跨午夜区间表达正确。
- 没有被更高优先级策略或停用状态阻止。
- 使用计划 evaluate 功能验证指定时间点。
手工录像也失败时,问题通常不在计划本身。
2. 会话是否真正运行
查看录像会话的开始、最终状态、通道、媒体节点和错误。常见阻止原因包括:
- 源流不在线;
- 达到并发录像授权额度;
- 目标 MediaServer 离线;
- 磁盘 guard 阻止新录像;
- 后台任务未运行或配置待重启。
3. 磁盘是否产生文件
在正确媒体节点与允许录像根检查对应时间段。确认:
- 运行账号有写入权限;
- 挂载不是只读,路径没有变化;
- 字节与 inode 充足;
- MediaServer 录像功能和分片配置已启用;
- 文件名和时间基准符合扫描规则。
不要因为数据库列表为空就判断物理文件不存在。
4. 索引是否建立
文件存在但列表为空时检查 MediaServer WebHook、文件扫描任务、扫描游标、批次错误和积压。确认文件属于当前集群与节点,路径规范化后仍在允许根内。
对大目录使用受控的按时间/根目录扫描,不要反复全盘扫描造成 IO 风暴。
5. 查询是否正确
- 查询的通道 ID 与录像时一致。
- 时间范围和时区正确。
- 没有默认隐藏软删除文件。
- 账号有查询权限。
- 页面过滤条件没有遗留节点或文件状态。
6. 文件存在但不能播放
检查文件是否完整、大小与时长、MediaServer 写入是否已经结束、HTTP Range、代理缓冲、权限和 codec。裁剪输出还要检查 FFmpeg 与任务最终状态。
恢复与防复发
恢复索引后抽查文件内容,不要只看记录数。为以下情况建立告警:
- 活跃录像超过一个分片周期没有新文件;
- 扫描/WebHook 积压持续增长;
- 录像盘字节或 inode 低;
- 写入探针失败;
- 会话失败率或授权拒绝上升。
记录首次断开层、受影响时间范围和是否需要补录。已经错过的实时内容通常无法从平台本地自动补回。