VideoSceneMaster项目实战:基于Qt + ONNX Runtime + FAISS 的本地视频智能检索工具

一、为什么需要这样一款工具?

在影视混剪、短视频制作或素材库管理中,我们经常遇到这样的场景:

  • 有一段成片或混剪,想找到它出自哪部电影/哪段采访;

  • 有一张截图或剧照,想知道它来自仓库里的哪一部长视频;

  • 脑子里有画面描述(比如“一个女子在酒店前台办理入住”),却完全记不住文件名和存放位置。

传统做法是:打开播放器 → 逐个拖进度条 → 肉眼比对 → 反复确认。一部 2 小时的电影,找 1 个镜头可能就要花 10 分钟。如果素材库里有几十上百部视频,工作量几乎不可接受。

VideoSceneMaster(小黄蜂·场景大师)正是为了解决这个问题而开发的。它是一款运行于 Windows 平台的本地视频智能检索工具,通过短视频、图片或文字描述,就能在本地视频仓库中快速定位目标素材。


二、三大核心检索功能

🔹 功能一:视频找视频

使用场景:你有一段混剪片段或短视频,想知道它来源于哪部长视频。

工作流程

  1. 将长视频加入视频仓库,建立画面特征索引;

  2. 加载查询短视频;

  3. 系统自动检测短视频中的镜头和场景;

  4. 在仓库中搜索匹配的原始片段。

技术特点:匹配不仅比较单帧相似度,还会综合连续帧序列、场景归属和时间连续性,因此对裁切、变速、混剪片段都有较好的鲁棒性。

适用任务

  • 混剪视频溯源

  • 二次剪辑内容查重

  • 多部长视频中定位短片段位置

  • 查找重复或轻度变换后的镜头


🔹 功能二:图片找视频

使用场景:你有一张剧照、截图或播放器暂停画面,想知道它来自哪部视频的哪个时间点。

操作方式:加载一张图片 → 点击搜索 → 返回候选场景列表 → 双击直接播放原视频对应位置。

亮点:结果支持保存为视频片段,方便直接用于后续剪辑。


🔹 功能三:文本找视频

使用场景:没有参考图片,也没有参考视频,只有一段文字描述。

示例:输入“一名女子在酒店前台办理入住”,系统利用CLIP 跨模态模型将文本与视频语义特征对齐,返回最相关的候选镜头。

适用人群:素材量大、文件名不规范、依赖“记忆中的画面”来检索的创作者。


三、技术架构总览

VideoSceneMaster 采用C++20 + Qt 6构建桌面界面,核心处理链路如下:

FFmpeg(硬件/软件解码) ↓ 镜头与场景检测(硬切/黑场/光流/SSIM) ↓ ONNX Runtime(GPU 加速)特征提取 ↓ FAISS 向量索引构建与相似度检索 ↓ 场景连续性整理与结果画廊展示 ↓ 视频片段 / Premiere XML / 剪映草稿导出

主要模型:ResNet(画面特征)、SSCD(紧凑视觉描述子)、CLIP(跨模态语义)、OmniShotCut(场景边界检测)。

硬件加速:支持 CUDA / NVENC 硬件编解码,同时提供软件解码回退机制,兼容性较好。


四、场景检测:不止是“切一刀”

场景检测并非简单依赖某一项指标,而是综合以下维度进行判断:

指标作用
像素差异快速感知画面突变
亮度变化检测黑场/淡入淡出
HSV 直方图色彩分布变化
边缘差异构图结构变化
SSIM结构相似度
光流运动幅度变化

针对动作片、体育赛事等快速运动素材,软件提供“动作片模式”,可适当降低运动剧烈时的误切率。

检测完成后,每个镜头/场景会形成独立的场景卡片,记录:

  • 视频来源

  • 起止帧 / 时间范围

  • 映射范围

  • 匹配置信度


五、结果确认与剪辑联动

播放器功能

选中场景卡片后,中央播放器支持:

  • 播放 / 暂停 / 停止

  • 进度跳转

  • 逐帧查看

  • 0.1 倍 ~ 32 倍变速播放

  • 范围循环

  • 当前帧截图

这些功能方便用户人工复核每一个检索结果,避免漏判或误判。

导出能力

确认结果后,你可以:

  • 保存单个场景

  • 批量保存碎片片段

  • 合并连续场景并输出

  • 导出Premiere XML

  • 通过小黄蜂扩展将场景直接发送到Premiere 轨道

  • 生成剪映 / CapCut 草稿

这意味着从“找到素材”到“进入剪辑时间线”,可以在工具内一次性完成,无需二次导入导出。


六、安装部署注意事项(必看)

⚠️ 为什么不能只复制 EXE?

VideoSceneMaster 采用完整目录运行方式,必须解压整个文件夹,不能只提取单个 EXE 文件。主要目录包括:

VideoSceneMaster/ ├── models/ # 场景检测、视觉特征、语义模型 ├── image/ # 界面资源(LOGO、按钮等) ├── 小黄蜂/ # Premiere 扩展文件 ├── licenses/ # 第三方组件许可 ├── *.dll # Qt、FFmpeg、ONNX Runtime 等运行库 └── VideoSceneMaster.exe

如果只移动 EXE,可能出现:

  • DLL 缺失导致无法启动

  • 图标/资源丢失

  • 模型加载失败

建议解压到固定目录,通过快捷方式启动。

显卡驱动要求

V1.8 内置CUDA 13 运行库,推荐使用NVIDIA R580 或更新版本驱动

普通用户不需要额外安装 CUDA Toolkit,但必须确保显卡驱动正常。RTX 3060 / 4060 / 4070 等型号均可使用,实际性能取决于:

  • 显存容量

  • 视频长度

  • 批处理等级


七、CUDA 环境诊断与高 DPI 适配

诊断机制

软件启动时会自动检测 CUDA 环境,并记录详细错误信息:

int deviceCount = 0; cudaError_t err = cudaGetDeviceCount(&deviceCount); if (err != cudaSuccess) { qDebug() << static_cast<int>(err) << cudaGetErrorName(err) << cudaGetErrorString(err); }

同时调用nvidia-smi读取:

  • 真实显卡型号

  • 驱动版本

  • 显存容量

从而区分驱动过旧CUDA 初始化失败驱动组件不一致显卡不可见等不同问题,方便用户定位。

高 DPI 屏幕适配

Windows 150% / 200% 缩放下,固定尺寸 Qt 界面容易超出屏幕。V1.8 在创建QApplication之前读取屏幕工作区和系统 DPI,并动态计算补偿倍率:

double targetScale = std::min( workWidth / 1680.0, workHeight / 920.0) * 0.98; double qtFactor = std::clamp( targetScale / windowsScale, 0.5, 1.0); qputenv("QT_SCALE_FACTOR", QByteArray::number(qtFactor, 'f', 3));

该调整仅影响软件显示尺寸,不会改变视频分辨率、模型精度或导出画质。


八、适用人群与总结

适合人群原因
影视混剪创作者快速查找混剪片段来源
短视频团队高效管理大量拍摄素材
广告制作人员按画面/语义精准定位镜头
素材管理员建立可检索的视频库
技术爱好者研究本地 AI 视频分析工程实践

VideoSceneMaster 从视频建库 → 特征提取 → 智能检索 → 场景确认 → 剪辑导出,尝试建立一条完整的本地视频素材处理链路。素材越多,这套索引+检索机制的效率提升就越明显。


后续预告

后续文章将继续深入介绍:

  • 界面各区域功能详解

  • 视频仓库的建立与管理

  • 特征提取参数调优

  • 三种检索模式的实操演示

  • Premiere / 剪映导出的完整流程

欢迎持续关注 👋

如果这篇文章对你有帮助,欢迎点赞、收藏、评论三连~🙌