VideoMind 是一个面向剪辑人员的本地视频素材知识库工具。
它的目标很直接:把散落在本地硬盘、RaiDrive、WebDAV、云盘挂载盘里的大量口播视频,批量转成带时间轴的字幕索引;之后剪辑人员可以通过关键词快速找到对应视频片段,并定位到原视频文件。
当前版本优先解决“找素材”这件事,不做 AI 一键成片。
- 手里有大量口播视频、课程视频、访谈视频、直播切片或短视频素材的剪辑团队。
- 视频素材在本地电脑、NAS、RaiDrive、WebDAV 或云盘挂载盘中,可以被 Windows 资源管理器直接访问。
- 想通过字幕关键词找素材,而不是靠人工翻文件夹、看封面、凭记忆找视频。
- 团队人数不多,希望先用一台主机跑本地服务,局域网内多人访问。
- 选择一个本地文件夹或 RaiDrive 挂载目录。
- 扫描目录下的视频文件。
- 自动识别已经处理过的视频,避免重复处理。
- 查看已接入的视频目录、处理进度和索引状态。
- 打开原文件位置,方便回到资源管理器继续剪辑。
- 使用本地 ASR 流程处理视频。
- 为每个视频生成字幕片段。
- 每条字幕片段保存开始时间、结束时间、字幕文本和原视频路径。
- 支持断点式处理,已经处理过的视频不会重复跑。
- 输入关键词搜索字幕内容。
- 支持“命中任意一个词”和“同时命中所有词”。
- 支持按工作目录筛选搜索范围。
- 搜索结果会展示原视频、命中的字幕、时间段和关键词高亮。
- 点击结果后可以预览原视频,并跳转到对应时间点。
- 在搜索结果中选择“采集片段”。
- 已选片段会进入可拖动的悬浮条。
- 可以批量确认采集,把多个视频片段剪切出来。
- 支持片段前后补时,单位为秒,支持小数。
- 可以选择已有素材库,也可以新建素材库。
- 已采集片段按工作空间管理,方便后续剪辑使用。
- 不做 AI 一键成片。
- 不做自动混剪成完整视频。
- 不做复杂的画面语义理解。
- 不上传整套几十 TB 视频到云端长期存储。
- 不把任何云盘账号、AK/SK、Token 或私密配置写入仓库。
口播素材最重要的信息通常是“说了什么”,而不是“画面长什么样”。
剪辑人员真正需要的是:
- 这个人什么时候讲到了“新加坡留学”?
- 哪个视频里提到了“预算”?
- 有没有讲过“路径”“申请”“本科”“硕士”?
- 找到之后能不能立刻定位到原视频和时间点?
所以 VideoMind 第一版把重点放在字幕、时间轴、关键词召回和素材定位上。等这条链路稳定后,再考虑语义搜索、画面标签和 AI 混剪。
VideoMind 默认把索引数据保存在本地 SQLite 数据库中:
data/video_kb.sqlite
数据库会保存:
- 视频文件路径
- 文件大小、修改时间等去重信息
- 字幕片段
- 每段字幕的起止时间
- 搜索索引
- 素材库和已采集片段记录
视频原文件不会被复制进数据库。原视频仍然保留在你的本地磁盘、RaiDrive 或云盘挂载盘中。
建议使用 Python 3.12。
项目已经支持使用本地虚拟环境运行:
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements-local-asr.txtpowershell -ExecutionPolicy Bypass -File scripts\start_lan_app.ps1或直接运行:
.venv\Scripts\python.exe scripts\serve_app.py --db data\video_kb.sqlite --host 0.0.0.0 --port 8765启动后访问:
http://127.0.0.1:8765
如果给局域网内其他成员使用,把 127.0.0.1 换成主机电脑的局域网 IP。
- 打开“视频库”页面。
- 选择素材文件夹,例如本地目录或 RaiDrive 映射目录。
- 点击“导入”,等待扫描完成。
- 勾选待处理视频,点击“处理所选”。
- 处理完成后进入“搜索”页面。
- 输入关键词,查看命中的视频片段。
- 点击结果预览视频,确认片段是否可用。
- 点击“采集片段”,把需要的片段加入已选列表。
- 确认采集,把片段剪切到素材库工作空间。
更详细的中文说明见:
VideoMind
├─ scripts/
│ ├─ serve_app.py # 本地 Web 应用入口
│ ├─ start_lan_app.ps1 # 团队局域网启动脚本
│ ├─ local_transcribe.py # 本地转写脚本
│ └─ search_transcripts.py # 字幕搜索脚本
├─ src/video_kb/
│ ├─ store.py # SQLite 数据存储
│ ├─ inventory.py # 视频扫描和清单
│ ├─ local_asr.py # 本地 ASR 封装
│ ├─ search.py # 字幕检索
│ └─ vtt.py # 字幕解析
├─ docs/
│ ├─ user-guide-zh.md # 中文使用说明
│ ├─ diagnostics.md # 日志和排查说明
│ └─ data-storage-and-dedup.md # 数据保存和去重设计
├─ tests/
└─ requirements-local-asr.txt
应用会记录处理任务、导入、采集、错误等诊断信息,方便后续排查问题。
相关说明见:
- 仓库不会包含视频原文件。
- 仓库不会包含本地数据库。
- 仓库不会包含
.env、Token、AK/SK 或云盘凭证。 .gitignore已默认排除data/、logs/、.venv/、常见视频文件和数据库文件。
如果你要把项目部署给团队使用,建议把视频素材、数据库和日志都保留在团队自己的内网或受控机器上。
这是一个本地优先的 MVP 版本,已经具备:
- 视频目录导入
- 本地视频字幕处理
- 字幕关键词搜索
- 原视频预览和时间轴定位
- 素材片段采集
- 素材库工作空间管理
- 局域网团队访问启动方式
后续可以继续扩展:
- 更好的 ASR 引擎配置
- 更稳定的大批量队列处理
- 语义搜索
- 画面标签
- 剪辑软件项目导出
- AI 混剪工作流
VideoMind 适合先在小团队、本地素材库、局域网环境中验证工作流。
如果要处理几十 TB 视频,建议分批导入、分批处理,并先用小目录验证识别质量、处理速度和机器稳定性。