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 动画世界](https://raw.githubusercontent.com/sophiamyang/finger-frame-effect-ai/main/examples/final.gif) *真实的双手,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, 云安全态势管理, 前端应用, 手势识别, 数据可视化, 自定义脚本, 视频合成, 视频处理, 逆向工具