# comfyui_any2video **Repository Path**: chees_cn/comfyui_any2video ## Basic Information - **Project Name**: comfyui_any2video - **Description**: 一个批量图生视频的工作台 - **Primary Language**: JavaScript - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-02 - **Last Updated**: 2026-02-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ComfyUI 视频生成系统 v2.0 前后端分离架构重构版本 ## 项目结构 ``` img2video/ ├── backend/ # Node.js后端 (端口14310) │ ├── src/ │ │ ├── routes/ # API路由 │ │ │ ├── projects.js # 项目管理API │ │ │ ├── cluster.js # 集群管理API │ │ │ ├── generate.js # 生成任务API │ │ │ └── upload.js # 文件上传API │ │ └── ... │ ├── server.js # 主服务器 │ └── package.json ├── frontend/ # Vue前端 │ ├── src/ │ │ ├── views/ # 页面视图 │ │ ├── components/ # 组件 │ │ ├── stores/ # Pinia状态管理 │ │ ├── api/ # API客户端 │ │ └── router/ # 路由配置 │ ├── package.json │ └── vite.config.js └── data/ # 数据目录 └── projects/ └── {projectId}/ ├── project.json # 系统生成的项目数据 ├── original.json # 用户上传的原始JSON ├── images/ # 图片文件 ├── videos/ # 视频文件 └── data/ # 提示词等数据 ``` ## 使用建议 > **推荐使用方式:前后端分离的图形化界面** > > 本项目提供完整的 Web 图形化界面,建议用户通过浏览器访问前端页面进行操作,包括: > - 项目导入和管理 > - ComfyUI 集群节点配置 > - 视频提示词生成(支持断点续传和重试) > - 批量视频生成 > - 进度实时监控 > - Markdown 导出 > > 命令行脚本方式仅供高级用户或自动化场景使用。 --- ## 部署方式 ### 方式一:手动部署(推荐开发环境) #### 1. 环境要求 - Node.js >= 18.0 - npm >= 9.0 - Windows/Linux/macOS #### 2. 安装依赖 ```bash # 克隆项目 git clone cd img2video # 安装后端依赖 cd backend npm install # 安装前端依赖 cd ../frontend npm install ``` #### 3. 配置环境变量 **后端配置** (`backend/.env`): ```bash # 基础配置 PORT=14310 NODE_ENV=development # ComfyUI集群配置(多个节点用逗号分隔) COMFYUI_NODES=https://node1:8188,https://node2:8188 # AI API配置(用于生成提示词) AI_API_KEY=your-api-key-here AI_BASE_URL=https://api.deepseek.com/v1 AI_MODEL=deepseek-chat TEMPERATURE=1 MAX_TOKENS=8192 MAX_CONCURRENT=20 # 视频生成配置 VIDEO_WIDTH=480 VIDEO_HEIGHT=848 VIDEO_FPS=16 VIDEO_LENGTH=81 ``` **前端配置** (`frontend/.env`): ```bash # 前端端口 VITE_PORT=3000 # API配置 VITE_API_BASE_URL=/api VITE_BACKEND_URL=http://localhost:14310 ``` #### 4. 启动服务 **开发模式**(前后端分别启动): ```bash # 终端1:启动后端 cd backend npm start # 终端2:启动前端 cd frontend npm run dev ``` **访问地址**: - 前端: http://localhost:3000 - 后端API: http://localhost:14310 --- ### 方式二:生产环境部署 #### 1. 构建前端 ```bash cd frontend npm run build ``` 构建后的文件在 `frontend/dist/` 目录。 #### 2. 配置生产环境 **后端配置** (`backend/.env`): ```bash NODE_ENV=production PORT=14310 # 其他配置与开发环境相同... ``` #### 3. 使用 PM2 启动(推荐) ```bash # 安装 PM2 npm install -g pm2 # 启动后端服务 cd backend pm2 start server.js --name "img2video-backend" # 配置 Nginx 反向代理前端静态文件 ``` #### 4. Nginx 配置示例 ```nginx server { listen 80; server_name your-domain.com; # 前端静态文件 location / { root /path/to/img2video/frontend/dist; index index.html; try_files $uri $uri/ /index.html; } # 后端API代理 location /api { proxy_pass http://localhost:14310; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } # 数据文件访问 location /data { proxy_pass http://localhost:14310; } } ``` --- ## 手动运行方式 ### 场景1:仅运行后端API ```bash cd backend npm start ``` 后端将在 `http://localhost:14310` 启动。 ### 场景2:仅运行前端开发服务器 ```bash cd frontend npm run dev ``` 前端开发服务器将在 `http://localhost:3000` 启动。 ### 场景3:手动执行生成脚本 **生成提示词**(不通过API,直接运行脚本): ```bash # 进入项目根目录 cd img2video # 运行提示词生成脚本 node generate-prompts.js data/projects/{projectId}/project.json # 示例 node generate-prompts.js data/projects/1770003494700/project.json ``` **生成视频**(不通过API,直接运行脚本): ```bash # 运行视频生成脚本 node comfyui-batch.js data/projects/{projectId}/project.json data/projects/{projectId}/images # 示例 node comfyui-batch.js data/projects/1770003494700/project.json data/projects/1770003494700/images ``` ### 场景4:指定端口运行 **后端指定端口**: ```bash cd backend PORT=8080 npm start ``` **前端指定端口**: 修改 `frontend/.env`: ```bash VITE_PORT=8081 ``` 然后运行: ```bash cd frontend npm run dev ``` --- ## 快速开始(开发环境 - 图形化界面方式) > **推荐使用图形化界面操作,功能更完整、使用更便捷** ### 1. 安装依赖 ```bash # 安装后端依赖 cd backend npm install # 安装前端依赖 cd ../frontend npm install ``` ### 2. 配置环境变量 复制 `.env.example` 到 `.env` 并配置: ```bash # ComfyUI集群配置 COMFYUI_NODES=https://node1:8188,https://node2:8188 # AI API配置 AI_API_KEY=your-api-key AI_BASE_URL=https://api.deepseek.com/v1 AI_MODEL=deepseek-chat # 后端端口 PORT=14310 ``` ### 3. 启动服务 ```bash # 启动后端 (端口14310) cd backend npm start # 启动前端 (端口3000) cd ../frontend npm run dev ``` ### 4. 访问图形化界面 启动成功后,在浏览器中打开: 🎯 **前端界面(推荐使用)**: http://localhost:3000 ✅ 通过 Web 界面可以完成所有操作: - 上传项目 JSON 文件 - 配置 ComfyUI 集群节点 - 生成视频提示词(支持断点续传) - 批量生成视频 - 实时监控进度 - 导出 Markdown 文档 ⚠️ 后端API: http://localhost:14310(作为调试使用) ## 数据存储规范 ### 项目目录结构 每个项目在 `data/projects/{projectId}/` 下: - `project.json` - 系统生成的项目数据(包含shots、videoPrompt等) - `original.json` - 用户上传的原始JSON文件(保持不变) - `images/` - 项目图片文件 - `videos/` - 生成的视频文件 - `data/` - 提示词等辅助数据 ### shots数据结构 ```json { "id": 1, "content": "镜头旁白内容", "character": ["角色名"], "scene": "场景描述", "prompt": "AI生成的提示词", "videoPrompt": "视频提示词(保存到独立字段)", "image": "图片文件名", "video": "生成视频文件名", "taskStatus": { "prompt": "done|pending", "videoPrompt": "done|pending", "animate": "completed|failed|pending" } } ``` ## API文档 ### 项目管理 - `GET /api/projects` - 获取项目列表 - `POST /api/projects` - 创建项目 - `GET /api/projects/:id` - 获取项目详情 - `PUT /api/projects/:id` - 更新项目 - `DELETE /api/projects/:id` - 删除项目 - `POST /api/projects/import` - 导入项目 ### 集群管理 - `GET /api/cluster/nodes` - 获取节点列表 - `POST /api/cluster/nodes` - 添加节点 - `PUT /api/cluster/nodes/:id` - 更新节点 - `DELETE /api/cluster/nodes/:id` - 删除节点 ### 生成任务 - `POST /api/generate/prompts` - 生成提示词 - `POST /api/generate/videos` - 生成视频 - `GET /api/generate/prompts/status` - 提示词生成状态 - `GET /api/generate/videos/status` - 视频生成状态 ### 文件上传 - `POST /api/upload/project` - 上传项目JSON - `POST /api/upload/images/:projectId` - 上传图片 ## 技术栈 ### 后端 - Node.js + Express - Multer (文件上传) - Axios (HTTP请求) - OpenAI (AI提示词生成) ### 前端 - Vue 3 + Composition API - Vite (构建工具) - Pinia (状态管理) - Vue Router (路由) - Element Plus (UI组件库) - Axios (HTTP客户端) ## 迁移说明 从旧版本迁移: 1. 复制旧项目的 `projects/` 目录到 `data/projects/` 2. 运行数据迁移脚本(如有需要) 3. 更新 `.env` 配置文件 ## License MIT