🔥 开源神器!我用YOLOv8+FastAPI打造了一个视频关键帧提取工具,3秒处理30秒视频

🔥 开源神器!我用YOLOv8+FastAPI打造了一个视频关键帧提取工具,3秒处理30秒视频

GitHub地址:https://github.com/MarcelLeon/key-face-frame

⭐️ 如果觉得有用,欢迎Star支持!

一、为什么要做这个项目?

作为一个经常需要从视频中提取精彩画面的开发者,我发现市面上的工具要么:

  • ❌ 按固定间隔截图,90%的画面都是废片
  • ❌ 需要手动逐帧查看,效率极低
  • ❌ 商业软件价格昂贵,还要联网

于是我花了亿点点时间,开发了 Key-Face-Frame v2.0 ------ 一个基于AI的视频人物关键帧智能提取工具。

核心亮点

🎯 智能检测,而非盲目截图

  • 使用 YOLOv8 实时检测视频中的人物
  • 4维评分算法:人物大小(40%) + 置信度(30%) + 居中度(20%) + 稳定性(10%)
  • 自动筛选出最具代表性的关键帧

⚡️ 性能爆表

  • Mac M4芯片:30秒1080p视频仅需3.5秒处理
  • 原生支持Apple Silicon MPS加速
  • 采样率可调,从快速模式到高质量模式自由选择

🖥️ 完整Web应用

  • 从命令行工具升级为现代化Web应用
  • React + TypeScript + Ant Design前端
  • FastAPI + Celery异步处理后端
  • 实时进度显示,支持拖拽上传

二、技术架构解析

后端技术栈

复制代码
FastAPI 0.109.0      # 高性能Web框架
YOLOv8 8.1.18        # 人物检测
Celery 5.3.6         # 异步任务队列
Redis 5.0.1          # 消息队列
SQLAlchemy 2.0.25    # ORM
PyTorch 2.2.0        # MPS加速
OpenCV 4.9.0         # 图像处理

前端技术栈

复制代码
React 18 + TypeScript 5    # 类型安全的UI开发
Vite 5                      # 极速构建工具
Ant Design 5                # 企业级组件库
Zustand 4                   # 轻量级状态管理
Axios + React Router        # 网络请求 + 路由

核心工作流程

复制代码
用户上传视频
    ↓
FastAPI接收并创建任务
    ↓
Celery Worker异步处理
    ├─> DetectionAgent (YOLOv8检测人物)
    └─> KeyframeAgent (评分+提取关键帧)
    ↓
实时更新处理进度
    ↓
返回关键帧 + metadata.json

三、核心算法详解

1. 多维评分系统

每个检测到的人物帧会获得一个综合评分:

python 复制代码
score = (
    bbox_area_ratio * 0.40 +      # 人物占比(越大越好)
    confidence * 0.30 +             # 检测置信度
    center_score * 0.20 +           # 画面居中度
    stability_score * 0.10          # 前后帧稳定性
)

2. 智能采样策略

  • 快速模式:每10帧检测一次,提取10个关键帧
  • 标准模式(推荐):每5帧检测一次,提取20个关键帧
  • 高质量模式:逐帧检测,提取50个关键帧

3. 去重机制

使用基于评分的Top-K算法,自动过滤重复或相似的帧。

四、实战效果展示

以《凡人修仙传》预告片为例:

原始视频 :60秒,1800帧
检测结果 :150+个人物检测
输出关键帧 :20张高质量截图
处理耗时:7秒

五、快速开始

安装部署(5分钟搞定)

bash 复制代码
# 1. 克隆项目
git clone https://github.com/MarcelLeon/key-face-frame.git
cd key-face-frame

# 2. 后端环境
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# 3. 安装Redis
brew install redis  # macOS
brew services start redis

# 4. 前端环境
cd frontend && npm install

# 5. 启动服务(需要4个终端)
# 终端1: uvicorn backend.main:app --reload
# 终端2: celery -A backend.workers.tasks worker --pool=solo  # M系列芯片必须加--pool=solo
# 终端3: redis-server
# 终端4: cd frontend && npm run dev

访问 http://localhost:3000 即可使用!

六、亮点功能

1. 实时进度轮询

前端每500ms轮询一次任务状态,动态显示:

  • 当前处理阶段(检测中/提取中)
  • 进度百分比(0-100%)
  • 已检测帧数、已提取关键帧数
  • 预计剩余时间

2. 批量下载

一键打包所有关键帧为ZIP文件,文件名包含时间戳信息:

复制代码
frame_00130_t5.20s.jpg  # 第130帧,视频5.20秒处

3. 灵活配置

提供3个预设模板,也支持自定义参数:

  • 采样率:1-30帧
  • 关键帧数量:5-100张
  • 置信度阈值:0.3-0.9

七、性能基准测试

视频时长 分辨率 采样率 检测数 关键帧 处理时间
30秒 1080p 5 81 20 ~3.5秒
60秒 1080p 5 150+ 20 ~7秒
120秒 1080p 10 200+ 30 ~10秒

测试环境:Mac M4, 16GB内存

八、适用场景

✅ 视频剪辑:快速找到最佳画面

✅ 内容创作:从长视频提取精彩瞬间

✅ 影视分析:分析电影/剧集的镜头构图

✅ 数据标注:为视频数据集生成训练样本

✅ 监控审查:从监控视频中提取关键画面

九、后续规划

v2.1 - 功能增强

  • 历史记录管理
  • 批量处理多视频
  • 关键帧编辑和标注
  • 视频预览功能

v3.0 - AI升级

  • 人脸识别(区分不同角色)
  • 场景切换检测
  • 情绪分析
  • 智能配音和字幕

十、总结

Key-Face-Frame 是一个真正解决实际问题的开源项目。无论你是视频创作者、数据工程师,还是AI研究者,都能从中受益。

项目特点

  • ✅ 开箱即用的Web应用
  • ✅ 工业级的代码质量
  • ✅ 详细的文档和FAQ
  • ✅ 活跃的维护和更新

如果这个项目对你有帮助,欢迎:

  • ⭐️ 给项目一个Star
  • 🐛 提Issue报告问题
  • 🚀 提PR贡献代码
  • 💬 分享使用体验

GitHubhttps://github.com/MarcelLeon/key-face-frame

相关推荐
南知意-9 小时前
3.3K Star ! 超级好用开源大屏设计器!
前端·开源·开源项目·工具·大屏设计
小龙3 天前
【开源项目】核心评价指标的动态关联性分析与可视化实验 —— 以多分类文本任(代码+结果分析)
人工智能·分类·数据挖掘·开源项目·模型指标
长安即是故里3 天前
搭建一个现代化视频聚合播放平台(含视频源)
前端·音视频·开源项目··部署教程
布茹 ei ai15 天前
QtWeatherApp - 简单天气预报软件(C++ Qt6)(附源码)
开发语言·c++·qt·开源·开源项目·天气预报
分布式存储与RustFS17 天前
MinIO替代方案精选:RustFS深度评测与选型指南
人工智能·rust·开源项目·对象存储·minio·企业存储·rustfs
分布式存储与RustFS20 天前
MinIO替代方案与团队适配性分析:RustFS如何匹配不同规模团队?
人工智能·rust·开源项目·对象存储·minio·企业存储·rustfs
分布式存储与RustFS20 天前
MinIO替代方案生态集成指南:RustFS如何无缝融入现代技术栈
rust·github·开源项目·对象存储·minio·企业存储·rustfs
程序员-King.20 天前
【Qt开源项目】— ModbusScope-day 1
qt·开源项目·modbus·modbusscope
Harvey6620 天前
2025年12月12日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年12月12日
YONYON-R&D21 天前
开源项目按硬件和软件进行分类整理
开源项目