makalin/AnchorFrame
GitHub: makalin/AnchorFrame
基于ComfyUI的AI视频编排层,通过将角色、道具、背景作为有状态资产并自动注入IP-Adapter和ControlNet来解决跨镜头视觉一致性问题。
Stars: 0 | Forks: 0
# AnchorFrame

[](https://opensource.org/licenses/MIT)
[](https://www.python.org/)
[](https://github.com/comfyanonymous/ComfyUI)
**AnchorFrame** 是一个用于生成式 AI 视频的开源编排层。它通过将角色、道具和背景作为**有状态资产**来处理,将 ComfyUI 转变为一个全自动的“电影工作室”。
它充当“导演”的角色,将一致的 embeddings (IP-Adapter, ControlNet) 注入到每一帧中,管理音频同步,甚至可以解析剧本。
## 🚀 核心功能
* **The Vault (资产管理):** 只需上传一次角色。AnchorFrame 会计算并存储 embeddings。
* **LLM 导演:** 输入文本脚本(剧本格式),看着它转化为分镜头。
* **音频工作室:** 集成的 Text-to-Speech (ElevenLabs) 和 Lip Sync (Wav2Lip) 管道。
* **姿势代理:** 通过编程方式生成合成的 OpenPose 火柴人图形。
* **视频合成器:** 自动将生成的帧拼接成可供观看的 MP4 视频。
* **CLI:** 通过命令行管理项目。
## 📦 安装
### 前置条件
1. **Python 3.10+**
2. 一个运行中的 [ComfyUI](https://github.com/comfyanonymous/ComfyUI) 实例,并启用了 `--listen` 参数。
### 设置
```
git clone https://github.com/makalin/AnchorFrame.git
cd AnchorFrame
pip install -r requirements.txt
```
### 配置
将 `.env.example` 重命名为 `.env` 并将其指向你的后端:
```
COMFY_UI_URL=http://127.0.0.1:8188
OUTPUT_DIR=./renders
ELEVEN_LABS_API_KEY=your_key_here
```
## 🎬 用法
### “电影工作室”工作流
你可以使用主驱动程序运行完整的从脚本到视频的管道:
```
from anchorframe import Director
from anchorframe.logic import LLMDirector
from anchorframe.providers import LocalComfyProvider
# 1. 初始化
director = Director("SciFi_Epic", provider=LocalComfyProvider("http://127.0.0.1:8188"))
# 2. 编写脚本
script = """
[INT_SPACESHIP]
CAPTAIN: "Shields are down!" (Action: looking at console)
"""
# 3. 指导
shots = LLMDirector().convert_script(script)
for shot in shots:
director.shoot(..., prompt=shot['prompt'], audio_text=shot['dialogue'])
# 4. Action!
director.action()
```
### CLI
```
# 初始化一个新项目
python cli.py init MyMovie
# 运行 demo
python cli.py demo --dry-run
# 创建/初始化 vault 文件
python cli.py vault init MyMovie
# 在 vault 中添加/列出/展示 assets
python cli.py vault add --project MyMovie --name Hero --image ref/hero.png --type person
python cli.py vault list MyMovie
python cli.py vault show --project MyMovie Hero
# 将 frames 组合成视频
python cli.py assemble --dir MyMovie/renders --pattern "*.png" --fps 24 --out MyMovie/renders/final.mp4
```
## 🛠 架构
```
graph LR
A[User Script] --> B(LLM Director)
B --> C[Shot List]
C --> D{Director}
D -->|TTS| E[Audio Files]
D -->|Assets| F[ComfyUI API]
F --> G[Video Frames]
E & G --> H[Audio Sync] --> I[Final MP4]
```
## 🔮 未来改进
- **镜头规划器**:`shots add/list/export` 以使运行可重现且可恢复。
- **运行/恢复编排**:带有 prompt_id 跟踪和重试逻辑的 `run --resume`。
- **后端工具**:用于 ComfyUI 调试的 `comfy ping/queue/history` 辅助工具。
- **图模板与验证**:适用于 IP-Adapter/ControlNet 的真实 ComfyUI 图,以及 `graph validate`。
- **Doctor 命令**:带有可操作修复建议的依赖/环境检查(ComfyUI 可达性、输出权限等)。
## 📄 许可证
基于 MIT 许可证分发。
**AnchorFrame** 是 [Digital Vision](https://dv.com.tr) 的一个项目。
由 [@makalin](https://github.com/makalin) 维护。
标签:AI导演, AI短片, AI视频, ComfyUI, ControlNet, DLL 劫持, ElevenLabs, IP-Adapter, LLM, OpenPose, Python, Text-to-Speech, Unmanaged PE, Wav2Lip, 分镜生成, 剧本解析, 唇形同步, 大语言模型, 嵌入注入, 开源, 提示词工程, 无后门, 状态资产管理, 策略决策点, 视频剪辑, 视频生成, 角色一致性, 语音合成, 逆向工具