视频延时摄影生成设计文档
一、功能概述
Section titled “一、功能概述”视频图片抓拍与延时摄影生成插件是基于 NocoBase 1.0 开发的可视化扩展插件,面向视频监控、生产巡检、施工记录等场景,提供按配置规则自动抓拍视频画面并生成图片序列与延时摄影视频。
通过灵活的抓拍策略配置,用户可按监控设备、时间段、频率、自定义规则进行抓拍,避免对不需要抓拍的监控资源造成浪费。
二、核心功能设计
Section titled “二、核心功能设计”2.1 抓拍与生成
Section titled “2.1 抓拍与生成”- 设备级启用/停用
- 按时间策略自动抓拍
- 按频率规则抓拍
- 自动生成延时摄影
- 手动生成延时摄影
- 支持批量配置多个监控的抓拍/延时规则
2.2 时间策略
Section titled “2.2 时间策略”- 支持按每天固定时间段执行抓拍
- 支持按星期维度配置抓拍计划(如周一至周五启用)
- 支持配置抓拍有效期(开始日期 / 结束日期)
- 支持多个时间段并行生效
抓拍规则由设备开关、日期范围、日期类型、时间段和抓拍频率共同组成,系统按组合规则判断当前时刻是否执行抓拍。
其中:
- 未配置日期类型时默认每天生效;
- 未配置时间段时默认全天生效;
- 未配置日期区间时默认长期有效。
2.3 延时摄影生成方式
Section titled “2.3 延时摄影生成方式”- 自动生成: 按配置时间段和日期策略自动生成
- 手动生成: 用户基于筛选条件或选中图片立即发起生成
- 延时摄影支持自动生成和手动生成两种方式
- 自动生成基于预设的日期类型和时间段从抓拍图片中选择素材,并按配置的触发时机创建生成任务;
- 手动生成由用户在抓拍图片管理页面按筛选条件或选中图片主动发起。
2.4 频率配置
Section titled “2.4 频率配置”- 支持按秒、分钟设置抓拍频率
- 支持最小抓拍间隔限制,防止过于频繁抓拍
- 支持不同监控配置不同频率
- 支持批量为多个监控下发相同抓拍频率与规则配置
2.5 内容产出
Section titled “2.5 内容产出”- 自动生成抓拍图片
- 支持设置延时视频帧率、分辨率
- 支持展示抓拍记录/延时摄影记录列表与预览
- 支持查看某时间段内的抓拍结果
2.6 交互
Section titled “2.6 交互”- 支持启用/停用某一个监控抓拍
- 支持抓拍/延时摄影的编辑
- 支持按设备、时间段、任务状态进行筛选和搜索
- 支持手动触发“立即生成延时摄影”
- 支持批量配置监控的抓拍/延时参数
- 支持批量删除抓拍图片
- 支持批量删除延时摄影记录
2.7 自动抓拍生成延时摄影字段设计
Section titled “2.7 自动抓拍生成延时摄影字段设计”基础配置 (Basic Settings)
本功能改为单独配置表管理,不再挂载到视频监控主表中。系统为每个监控设备维护一条抓拍/延时配置记录,便于独立管理和批量配置。
| 分组 | 字段 | 类型 | 说明 |
|---|---|---|---|
| 关联信息 | monitorId | Relation / String | 关联监控设备 |
| 抓拍设置 | captureEnabled | Boolean | 是否启用抓拍 |
| captureFrequency | Number | 抓拍频率 | |
| frequencyUnit | String | 频率单位(秒 / 分钟) | |
| captureDateRange | Date[] | 日期区间(开始日期/结束日期) 设置抓拍有效期 | |
| captureDateType | Enum | 日期类型 daily 每天 / workday 法定工作日 / holiday 法定节假日 / workingWeek 周一至周五 / customWeekday 自定义周几 | |
| captureWeekdays | CheckboxGroup | 自定义的日期(周一至周日 可多选,只有在 captureDateType 为 customWeekday 时生效) | |
| captureTimeRange | TimeRangeList | 时间段(可多选) | |
| imageFormat | Select | 图片输出格式(jpg / png / webp) | |
| imageQuality | Number | 图片质量压缩比 | |
| 存储设置 | storageLocation | Select | 图片与视频存储位置(根据文件管理器的存储位置来) |
| fileNameRule | Input | 存储文件夹命名规则(不输入默认监控序列号 + 时间) | |
| 延时摄影 | timeLapseEnabled | Boolean | 是否启用延时摄影生成 |
| timeLapseAutoGenerate | Boolean | 是否自动生成延时摄影 | |
| timeLapseFrameRate | Number | 生成视频帧率 | |
| timeLapseResolution | Select | 输出分辨率 | |
| timeLapseTimeRange | TimeRangeList | 生成视频时间段(可多选) | |
| timeLapseDateType | Enum | 生成视频日期类型(参考抓拍设置) |
注意事项: 日期范围(captureDateRange)用于限定规则的整体生效周期;日期类型(captureDateType)用于限定生效周期内具体哪些日期执行抓拍。两者同时生效,取交集。
2.7.1 规则优先级和默认值
Section titled “2.7.1 规则优先级和默认值”- 未设置日期范围:长期有效
- 未设置时间段:全天有效
- 未设置自定义周几:在 customWeekday 下必须校验不能为空
- 抓拍频率最小值
- 生成帧率取值范围
- 图片质量范围
- 分辨率枚举值
- 多时间段是否允许重叠:允许,交集
2.7.2 批量配置规则
Section titled “2.7.2 批量配置规则”为适配大规模监控设备统一配置场景,系统支持在视频监控管理页面对多个监控设备进行批量配置抓拍/延时参数。
支持的批量配置内容包括:
- 是否启用抓拍
- 抓拍频率及单位
- 日期范围
- 日期类型
- 抓拍时间段
- 图片格式与质量
- 存储位置
- 是否启用延时摄影
- 延时摄影帧率
- 延时摄影分辨率
- 延时摄影生成时间段与日期类型
批量配置说明:
- 用户可在监控列表中多选设备后发起“批量配置抓拍/延时”
- 批量配置保存后,对所选设备统一生效
- 若设备已有原配置,则按新配置覆盖对应字段
- 批量操作需提供二次确认,避免误操作影响大量设备
2.8 数据模型与初始化
Section titled “2.8 数据模型与初始化”为支持抓拍图片管理、手动生成延时摄影以及延时摄影结果查看,插件在初始化时自动创建三张业务数据表,并可基于数据表生成对应管理页面。
2.8.1 初始化自动建表
Section titled “2.8.1 初始化自动建表”插件安装或初始化时,系统自动创建以下三张表:
-
抓拍配置表
- 用于记录每个监控设备的抓拍/延时配置
- 支持单独维护、批量配置和后续编辑
-
抓拍图片表
- 用于记录每次从监控设备抓拍生成的图片信息
- 支持按设备、日期、时间段等条件查询
- 支持基于筛选结果手动发起延时摄影生成
- 支持批量删除抓拍图片记录及其对应文件
-
延时摄影表
- 用于记录每次延时摄影生成任务及结果信息
- 支持查看每个监控生成的延时摄影视频
- 支持预览、下载
- 支持批量删除延时摄影记录及其对应视频文件
2.8.2 抓拍/延时摄影配置表
Section titled “2.8.2 抓拍/延时摄影配置表”
| 分组 | 字段 | 类型 | 说明 |
|---|---|---|---|
| id | ID | 主键 | |
| monitorId | Relation / String | 关联监控设备 | |
| captureEnabled | Boolean | 是否启用抓拍 | |
| captureFrequency | Number | 抓拍频率 | |
| frequencyUnit | String | 频率单位 | |
| captureDateRange | Date[] | 生效日期范围 | |
| captureDateType | Enum | 日期类型 | |
| captureWeekdays | Array / CheckboxGroup | 自定义周几 | |
| captureTimeRange | TimeRangeList | 时间段 | |
| imageFormat | String | 图片格式 | |
| imageQuality | Number | 图片质量 | |
| storageLocation | String | 存储位置 | |
| fileNameRule | String | 文件命名规则 | |
| timeLapseEnabled | Boolean | 是否启用延时摄影 | |
| timeLapseAutoGenerate | Boolean | 是否自动生成延时摄影 | |
| timeLapseFrameRate | Number | 延时摄影帧率 | |
| timeLapseResolution | String | 延时摄影分辨率 | |
| timeLapseTimeRange | TimeRangeList | 延时摄影生成时间段 | |
| timeLapseDateType | Enum | 延时摄影生成日期类型 |
抓拍配置表页面
基于该表可配置一个管理页面,支持以下:
- 按监控设备筛选
- 按抓拍状态筛选
- 按日期类型筛选
- 按时间段筛选
- 配置抓拍/延时规则
- 批量配置多个监控规则
- 编辑、停用配置
2.8.3 抓拍图片表
Section titled “2.8.3 抓拍图片表”| 分组 | 字段 | 类型 | 说明 |
|---|---|---|---|
| id | ID | 主键 | |
| monitorId | Relation / String | 关联监控设备 | |
| image | File | 抓拍图片附件 | |
| fileName | String | 文件名 |
抓拍图片表页面
基于该表可配置一个管理页面,支持以下:
- 按监控设备筛选
- 按日期范围筛选
- 按时间段筛选
- 图片列表展示与预览
- 根据所选日期类型、时间段手动生成延时摄影
- 批量选择并删除抓拍图片
手动生成延时摄影功能
用户在抓拍图片管理页面中,可通过以下方式手动生成延时摄影:
- 选择监控设备
- 选择日期范围、时间段
- 系统查询对应图片记录
- 批量选择图片
- 用户确认后发起延时摄影生成任务
- 生成完成后自动写入延时摄影表
支持以下附加功能:
- 手动指定输出帧率
- 手动指定输出分辨率
- 手动设置视频名称
- 批量删除已选图片记录
2.8.3 延时摄影表
Section titled “2.8.3 延时摄影表”| 分组 | 字段 | 类型 | 说明 |
|---|---|---|---|
| id | ID | 主键 | |
| monitorId | Relation / String | 关联监控设备 | |
| frameRate | Number | 视频帧率 | |
| resolution | String | 输出分辨率 | |
| outputDuration | Number | 输出视频时长(秒) | |
| video | File | 延时摄影视频 | |
| generateMode | Enum | 生成方式(auto / manual) |
延时摄影表页面 基于该表可配置一个查看页面,支持以下:
- 按监控设备筛选
- 按生成时间筛选
- 查看每个监控生成的所有延时摄影记录
- 查看时间范围、输出时长
- 视频预览
- 下载视频
- 批量删除延时摄影记录
2.8.4 初始化页面生成
Section titled “2.8.4 初始化页面生成”插件初始化时,除自动建表外,可选择自动生成或引导生成以下页面:
-
抓拍图片管理页面
- 数据源:抓拍图片表
- 默认提供筛选、表格、图片预览、批量操作
- 提供“手动生成延时摄影”操作按钮
- 提供“批量删除”操作按钮
-
延时摄影管理页面
- 数据源:延时摄影表
- 默认提供筛选、表格、视频预览、下载
- 提供“批量删除”操作按钮
2.9 异常与边界情况
Section titled “2.9 异常与边界情况”-
设备被删除后历史数据怎么处理?是否一并删除历史数据?
否,交给用户前往抓拍图片/延时摄影页面按需删除。 -
存储空间不足怎么办?是覆盖最早的存储还是报错?
报错,提示用户存储空间不足,让用户自行删除以往的图片或视频。
三、实现思路
Section titled “三、实现思路”3.1 设计原则
Section titled “3.1 设计原则”- 按需启用:不是所有监控都需要抓拍,支持设备级独立控制
- 灵活可配:支持设置时间段、频率、日期类型、图片格式、质量、存储路径、延时摄影参数等参数,灵活配置抓拍策略
- 轻量直观:通过可视化配置完成抓拍规则定义,降低使用门槛
3.2 实现细节
Section titled “3.2 实现细节”入口与初始化
Section titled “入口与初始化”- 入口位于设置-
视频监控抓拍/延时摄影中 - 新增独立的“抓拍/延时配置”页面,用于配置每个监控设备的规则
- 在新增独立的“抓拍/延时配置”页面支持多选设备后执行批量配置抓拍/延时操作
抓拍/延时摄影配置
Section titled “抓拍/延时摄影配置”- 用户进入
视频监控抓拍/延时摄影页面 - 选择目标监控设备并配置以下内容:
- 是否启用抓拍
- 抓拍频率
- 生效日期范围
- 日期类型
- 自定义周几
- 时间段
- 图片格式与质量
- 是否启用延时摄影
- 是否自动生成延时摄影
- 系统保存配置后,按规则执行抓拍任务和定时生成延时摄影视频
- 配置修改后,后续任务自动按最新规则执行
- 抓拍配置变更后,仅影响变更生效后的新抓拍
- 已创建但未开始的自动生成任务可按最新配置重算
- 已生成的历史图片和视频不回溯变更
批量配置流程
Section titled “批量配置流程”- 用户在
视频监控抓拍/延时摄影页面中勾选多个监控设备 - 点击
批量配置抓拍/延时 - 在统一配置面板中填写抓拍与延时摄影参数
- 系统对所选设备批量应用配置
抓拍执行流程
Section titled “抓拍执行流程”- 系统检测当前设备抓拍是否启用
- 校验当前时间是否落在有效日期、星期和时间段内
- 满足条件后按设定频率抓取当前视频帧
- 将抓拍图片按规则存储并记录
- 若开启延时摄影,则按策略定时生成视频
延时摄影生成逻辑
Section titled “延时摄影生成逻辑”- 基于指定时间范围内的抓拍图片序列自动生成视频
- 支持按日、按周、自定义时间段生成
批量删除逻辑
Section titled “批量删除逻辑”- 抓拍图片管理页面支持多选记录后批量删除
- 延时摄影管理页面支持多选记录后批量删除
- 删除时需同步处理数据库记录与存储文件
- 删除前需二次确认,提示删除后不可恢复
3.4 实现计划
Section titled “3.4 实现计划”| 阶段 | 里程碑 | 交付物 |
|---|---|---|
| 1 | 核心功能开发 | 支持设备级抓拍开关、时间段配置、频率配置、图片抓拍存入数据库 |
| 2 | 延时摄影实现 | 完成抓拍页面功能、延时摄影视频生成、结果预览与下载 |
| 3 | 迭代优化 | 交互优化、性能优化、更多存储与生成策略扩展 |