适用场景
你有一批 MP4/MOV 视频,需要按固定间隔或关键时间点批量抽帧(提取现有帧,不做任何生成/渲染),并为每个视频生成可检索的时间轴索引(JSON/CSV/HTML 报告),最后把图片与索引打包下载。这个需求常见于质检留档、内容审查、素材归档、镜头标记、教学视频拆解、会议录屏留存等。
交付物要求(你让 AI 输出的东西必须包含)
1)完整项目源码;2)清晰文件树;3)本地运行命令;4)Docker 部署与生产部署说明;5)测试用例或 QA checklist;6)失败重试与日志说明;7)安全与资源限制建议(上传大小、并发、超时)。
AI 提示词(Prompts)
你是一个资深全栈工程师 + DevOps。
请为我生成一个“在线视频批量抽帧与时间轴索引”Web 工具的完整可运行项目(不要只给片段),要求:
【功能】
- 支持浏览器上传多个视频文件(MP4/MOV),显示队列与进度。
- 抽帧方式 A:按固定间隔抽帧(例如每 1s/2s/5s/10s)。
- 抽帧方式 B:按用户提供的时间点列表抽帧(例如 00:00:10, 00:01:25.500)。
- 对每个视频产出:
1) 抽帧图片(PNG 或 JPG,可配置);
2) 时间轴索引(JSON + CSV 两种),包含:视频名、帧序号、时间戳、输出文件名、抽帧参数、处理耗时、是否成功、失败原因;
3) 一个可打开的本地 HTML 报告页:按时间轴展示缩略图 + 可筛选/搜索。
- 支持把每个视频的结果单独打包成 zip,也支持“全部结果一键打包下载”。
【限制与合规】
- 这是“处理/转换/预览”类工具:只允许从用户上传的视频中提取现有帧;禁止任何图片生成、渲染图、海报、插画、MJ/SD 相关内容。
- 处理过程必须可追踪:输出结构化日志;失败要有可读错误。
【技术方案】
- 后端:Node.js 20 + Express(或 Fastify),使用 ffmpeg/ffprobe 执行抽帧。
- 前端:React + Vite(或 Next.js),提供上传、参数配置、进度展示、结果预览与下载。
- 任务队列:需要支持并发限制(例如同一时间最多处理 N 个视频),避免 CPU 打满。
- 大文件:支持分片上传或至少给出最大上传建议;必要时把临时文件落盘;处理结束自动清理。
- 安全:限制文件类型与大小;对路径做防穿越;不允许任意命令注入;给出 CORS 与反向代理建议。
【输出格式(必须严格按这个顺序给我)】
1) 项目简介(不超过 10 行)
2) 功能清单(要覆盖上面所有功能点)
3) 技术栈与关键实现说明(ffmpeg 命令示例、如何解析时间戳)
4) 文件树(完整)
5) 后端代码(按文件分段输出)
6) 前端代码(按文件分段输出)
7) 运行与配置说明:
- 本地启动命令
- 环境变量说明
- Dockerfile + docker-compose.yml
- 生产部署(Nginx 反代/HTTPS/上传大小配置)
8) 测试:
- 至少 5 个自动化测试(例如用 vitest/jest/supertest)
- 或者一份详细 QA checklist(>= 20 条)
9) 常见问题排查(>= 8 条),包括:ffmpeg 缺失、编码不支持、抽帧空结果、内存/磁盘不足、并发导致卡死等。
【额外加分】
- 允许用户选择:保留原始文件名 / 统一命名;输出目录结构可自定义。
- 支持“只抽取关键帧(I 帧)”模式(可选)。
- 任务中断后可继续(至少给出设计思路)。
参数建议
如果你只是做审阅留档,建议每 2-5 秒抽一张;如果做镜头分析,建议每 1 秒抽一张;若视频很长,优先使用“时间点列表”或“关键帧”模式减少输出量。
结果目录结构示例(用于校验交付物完整性)
output/
job-20260322-1120/
manifest.json
video-001/
frames/
000001_00-00-01.000.jpg
000002_00-00-02.000.jpg
index.json
index.csv
report.html
logs.txt
video-002/
...
all-results.zip
QA checklist(人工验收要点)
1. 多文件上传是否稳定;2. 进度条与后台处理是否一致;3. 抽帧间隔边界值(0.5s/60s)是否处理;4. 时间点格式错误是否提示;5. 大文件是否超时;6. 失败是否可重试;7. 输出 zip 是否可解压;8. JSON/CSV 字段是否齐全;9. HTML 报告是否可搜索;10. 清理临时文件是否生效;11. 并发限制是否生效;12. 安全限制(类型/大小/路径)是否生效;13. 反代上传大小配置是否说明;14. ffmpeg 缺失时提示是否清晰;15. Windows/macOS/Linux 路径兼容性;16. I 帧模式是否正确;17. 同名文件是否冲突;18. 断点恢复思路是否写明;19. 日志是否包含任务 ID;20. 性能与资源占用建议是否给出。