133 lines
3.5 KiB
Markdown
133 lines
3.5 KiB
Markdown
# Sora 自定义节点功能说明
|
||
|
||
## 已实现的功能
|
||
|
||
### ✅ 1. Text-to-Video(文本生成视频)
|
||
**节点名称**: `SoraTextToVideo`
|
||
|
||
从文本提示生成视频,支持完整的 Sora 参数配置。
|
||
|
||
**主要参数**:
|
||
- `prompt`: 视频描述文本
|
||
- `negative_prompt`: 负面提示
|
||
- `duration_seconds`: 视频时长
|
||
- `aspect_ratio`: 宽高比
|
||
- `fps`: 帧率
|
||
- `guidance_scale`: 引导强度
|
||
- `seed`: 随机种子
|
||
|
||
### ✅ 2. Image-to-Video(图像生成视频)
|
||
**节点名称**: `SoraImageToVideo`
|
||
|
||
从图像生成视频,完全支持 ComfyUI 的图像输入格式。
|
||
|
||
**支持的图像输入格式**:
|
||
- ✅ PIL Image 对象
|
||
- ✅ Numpy 数组(自动处理各种形状)
|
||
- ✅ 文件路径(PNG, JPG, WebP)
|
||
- ✅ Base64 编码字符串
|
||
|
||
**主要参数**:
|
||
- `image`: ComfyUI 图像输入(必需)
|
||
- `prompt`: 视频描述(必需)
|
||
- 其他参数与 Text-to-Video 相同
|
||
|
||
### ✅ 3. Video-to-Video(视频编辑/扩展)
|
||
**节点名称**: `SoraVideoToVideo`
|
||
|
||
对现有视频进行编辑、扩展或风格转换。
|
||
|
||
**支持的操作类型**:
|
||
- `extend`: 扩展视频时长
|
||
- `edit`: 根据提示编辑视频内容
|
||
- `inpaint`: 视频修复/填充
|
||
- `style_transfer`: 风格迁移
|
||
|
||
**主要参数**:
|
||
- `video`: 视频文件路径或 base64 字符串(必需)
|
||
- `prompt`: 编辑描述(必需)
|
||
- `operation`: 操作类型(extend/edit/inpaint/style_transfer)
|
||
- `extension_seconds`: 扩展时长(用于 extend 操作)
|
||
- 其他参数与其他节点相同
|
||
|
||
## 技术特性
|
||
|
||
### 🔧 文件上传支持
|
||
- 扩展了 `SoraClient` 以支持 `multipart/form-data` 上传
|
||
- 自动处理图像和视频文件的编码和上传
|
||
- 支持多种 MIME 类型
|
||
|
||
### 🖼️ 图像处理
|
||
- 自动格式转换(PIL ↔ Numpy ↔ 文件)
|
||
- 自动处理不同的数组形状(batch, channels-first, channels-last)
|
||
- 自动归一化(0-1 范围转换为 0-255)
|
||
- 自动颜色空间转换(RGBA → RGB)
|
||
|
||
### 📹 视频处理
|
||
- 支持多种视频格式(MP4, MOV, AVI, WebM)
|
||
- 支持文件路径和 base64 编码
|
||
- 自动 MIME 类型检测
|
||
|
||
### 🔄 轮询机制
|
||
- 所有节点都支持异步任务轮询
|
||
- 可配置的轮询间隔和超时时间
|
||
- 自动状态检测和错误处理
|
||
|
||
### 📥 下载支持
|
||
- 可选的视频下载功能
|
||
- 支持目录或文件路径
|
||
- 自动文件命名(使用 job_id)
|
||
|
||
## 使用示例
|
||
|
||
### Text-to-Video
|
||
```python
|
||
# 在 ComfyUI 中直接使用节点
|
||
# 输入: prompt = "A beautiful sunset over the ocean"
|
||
# 输出: job_id, status, result_json
|
||
```
|
||
|
||
### Image-to-Video
|
||
```python
|
||
# 连接 ComfyUI 的图像节点到 SoraImageToVideo
|
||
# 输入: image (来自 LoadImage 节点), prompt = "Animate this image"
|
||
# 输出: job_id, status, result_json
|
||
```
|
||
|
||
### Video-to-Video
|
||
```python
|
||
# 扩展视频
|
||
# 输入: video = "/path/to/video.mp4", operation = "extend", extension_seconds = 5.0
|
||
# 输出: job_id, status, result_json
|
||
```
|
||
|
||
## 兼容性
|
||
|
||
- ✅ 仅使用 Python 标准库(核心功能)
|
||
- ✅ 可选依赖:Pillow(PIL)和 numpy(用于更好的图像处理)
|
||
- ✅ 完全兼容 ComfyUI 的节点系统
|
||
- ✅ 支持所有 ComfyUI 图像格式
|
||
|
||
## API 兼容性
|
||
|
||
节点设计为与 Sora 兼容的 REST API 配合使用,支持:
|
||
- OpenAI Sora API(当可用时)
|
||
- 自定义 Sora 兼容后端
|
||
- 可配置的 base_url 和 endpoint
|
||
|
||
## 错误处理
|
||
|
||
- ✅ 清晰的错误消息
|
||
- ✅ API 错误自动捕获和报告
|
||
- ✅ 超时保护
|
||
- ✅ 输入验证
|
||
|
||
## 未来可能的扩展
|
||
|
||
- [ ] 批量处理支持
|
||
- [ ] 视频预览功能
|
||
- [ ] 更多视频操作类型
|
||
- [ ] 实时进度回调
|
||
- [ ] 视频质量/分辨率选项
|
||
|