sophiamyang/finger-frame-effect-ai
GitHub: sophiamyang/finger-frame-effect-ai
一个基于 AI 视频重风格化与手部追踪的创意特效项目,能将用户手指比出的取景框变成通往 AI 生成动画世界的「窗口」。
Stars: 412 | Forks: 45
# Finger Frame AI 🎬✨
**体验地址:https://sophiamyang.github.io/finger-frame-effect-ai/**
上传一段包含双手手指取景框手势的视频——你将得到一段
**在取景框内由 AI 生成的世界**的视频。整个视频会通过
video-to-video 模型进行重风格化处理(包括运动、眨眼等所有细节),然后进行合成,这样
手指取景框就相当于一扇通往动画版本的窗口。
## 手指取景框系列
| 应用 | 生成方式 | 延迟 |
|---|---|---|
| [finger-frame-effect](https://sophiamyang.github.io/finger-frame-effect/) ([代码库](https://github.com/sophiamyang/finger-frame-effect)) — 实时摄像头,本地特效 | Canvas 2D (Van Gogh、卡通、故障风等) | 无 |
| **本应用** — 录制视频,AI 重风格化 | Gemini Omni Flash (离线视频编辑) | 几分钟 |
| [finger-frame-effect-lucy](https://sophiamyang.github.io/finger-frame-effect-lucy/) ([代码库](https://github.com/sophiamyang/finger-frame-effect-lucy)) — 实时摄像头,实时 AI | Decart Lucy 2.5 (实时 video-to-video) | ~实时 |

*真实的双手,AI 生成的世界——使用默认的“3D 动画电影”
风格生成 ([高清 mp4](examples/final.mp4))。*
## 工作原理
1. **重风格化** — 上传的视频将被发送至
[Gemini Omni Flash 视频编辑](https://ai.google.dev/gemini-api/docs/omni)
并应用你选择的风格(3D 动画电影、动漫、黏土动画、
水彩画或自定义 prompt)。这是一个真正的视频模型:整个
片段都会被重新生成,因此动画版本的动作会与你完全一致。
每个 prompt 都会自动添加一个严格对齐的后缀 —— 保持相同的取景,不进行
缩放/裁剪/重新居中,面部特征保持在相同的屏幕坐标上,
逐帧保留表情(嘴巴张合度、眨眼、视线)—— 这样
生成的结果就能在手指取景框窗口后完美对齐。
2. **追踪** — MediaPipe Hand Landmarker 会逐帧找到双手,并且
手指取景框的四边形会使用与实时
应用相同的经过审计的 pipeline 进行追踪(解剖学角点排序 —— 交叉手指会渲染出
领结形状 —— 带有迟滞的展开/面积门控、瞬移剔除、
速度自适应平滑、丢失保持、存在感淡入淡出)。
3. **合成** — AI 视频会通过追踪到的四边形显示出来,并带有
虚线的蚂蚁线轮廓和闪烁的角点圆点。
4. **导出** — 结果会录制为可下载的视频 —— 在
浏览器支持录制的情况下为 MP4(Safari、较新版本的 Chrome),否则为 `.webm`
(使用 `ffmpeg -i finger-frame-ai.webm -c:v libx264 out.mp4` 进行转换)。
## 使用你自己的 Key
AI 步骤使用你自己的 [Gemini API key](https://aistudio.google.com/apikey),
需在应用中输入。它仅保留在你的浏览器中(仅当你勾选
“记住”时才会使用 localStorage),并且仅发送至 Google 的 API。生成过程按
视频计费,需要几分钟时间。请将视频大小控制在 ~15MB 以下(几秒钟的
720p 视频 —— 支持任何常见格式:mp4、mov、webm);更大的文件会超出内联
上传限制。没有 key?**占位符风格**按钮会使用一个色调偏移的替代视频运行完整的
追踪-合成-导出 pipeline,让你可以免费
体验所有功能。
## 本地运行
任何静态服务器均可:
```
python3 -m http.server 8124
```
然后打开 http://localhost:8124。可以使用 `?src=` 查询参数从服务器目录加载视频(便于开发调试)。
## 命令行替代方案 (Python)
作为离线脚本运行的相同 pipeline —— 适用于批量处理或
实现帧级精准的 H.264 输出:
```
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
export GEMINI_API_KEY=...
.venv/bin/python stylize.py input.mp4 -o stylized.mp4 # AI restyle
.venv/bin/python composite.py input.mp4 stylized.mp4 -o final.mp4
```
支持任何 ffmpeg/OpenCV 可读取的输入格式(mp4、mov、webm 等)。
`composite.py` 需要 PATH 中存在 `ffmpeg`,输出 H.264 MP4,并且如果存在原始音频轨道,则会将其一并保留。
## 注意事项
- 输入/输出的媒体文件已被 gitignore —— 个人素材仅保留在本地。唯一
已提交的媒体文件是 `examples/` 目录下的示例。
标签:AI生成, Gemini, 云安全态势管理, 前端应用, 手势识别, 数据可视化, 自定义脚本, 视频合成, 视频处理, 逆向工具