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

相关推荐
Harvey6618 小时前
2026年04月09日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年04月09日
Harvey662 天前
2026年04月07日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年04月07日
Harvey665 天前
2026年04月05日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年04月05日
Harvey666 天前
2026年04月04日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年04月04日
Harvey667 天前
2026年04月03日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年04月03日
Harvey6614 天前
2026年03月27日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年03月27日
芥子沫16 天前
Github 3月热门项目介绍-2026年3月
开源项目·github热点
南知意-24 天前
cloud-app-admin:一款现代化、开箱即用的 Vue 3 后台管理模板
前端·javascript·vue.js·开源·开源项目
Harvey661 个月前
2026年03月14日最热门的开源项目(Github)
开源项目·周榜·月榜·活跃项目·热门项目·github 榜单·2026年03月14日
Crazy Struggle1 个月前
C# + ViewFaceCore 快速实现高精度人脸识别
c#·人脸识别·.net·开源项目