🔥 开源神器!我用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

相关推荐
Harvey661 天前
2025年12月09日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年12月09日
Harvey665 天前
2025年12月05日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年12月05日
Harvey666 天前
2025年12月04日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年12月04日
CRMEB定制开发6 天前
CRMEB-PHP商品列表系统详解:多条件筛选、批量操作与数据导出实现
开源项目·小程序商城·公众号商城·商城源码·微信商城
Harvey668 天前
2025年12月02日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年12月02日
Harvey6613 天前
2025年11月27日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2025年11月27日
特立独行的猫a1 个月前
HarmonyOS黑马云音乐项目增加网络听歌功能(一、轮播图的实现)
网络·华为·harmonyos·开源项目·黑马云音乐
whltaoin1 个月前
【JAVA全栈项目】弧图图-智能图床 SpringBoot+Vue3 :[框架开荒:一文全步骤打通前后端项目全流程]
java·spring boot·vue·开源项目·全栈·cos
Lucky小小吴2 个月前
每日开源项目1——HyperLogLog库
开源·开源项目·1024程序员节·海量数据处理