这是一个为 ComfyUI 设计的专业视频批处理插件,提供强大的视频文件管理和合并功能,完全兼容 VideoHelperSuite 插件生态系统。
-
📂 BatchFilename: 智能文件名批处理管理器
- 逐步构建视频文件列表
- 自动去重和路径标准化
- 完全兼容 VideoHelperSuite 的 Select Filename 节点
-
🔗 VideoConcat: 专业视频合并处理器
- 高质量视频合并,保持音画同步
- 智能分辨率统一和格式转换
- 支持多种编码器和质量设置
- 🎬 实时视频预览功能
- 🖥️ 现代化预览界面: 模仿 VideoHelperSuite 的 Video Combine 节点
- 🎮 完整播放控制: 播放、暂停、进度条、音量控制
- 🔧 丰富操作功能: 打开、保存、隐藏预览
- 📱 响应式设计: 适配不同节点大小和屏幕
- 🌗 暗色主题: 与 ComfyUI 界面完美融合
- ✅ VideoHelperSuite 兼容: 完全支持 VHS_FILENAMES 输出格式
- ✅ ComfyUI 集成: 标准节点接口和前端扩展
- ✅ 跨平台支持: Windows、macOS、Linux
cd ComfyUI/custom_nodes
git clone https://github.com/your-repo/Comfyui-VideoConcat.git
cd Comfyui-VideoConcat
pip install -r requirements.txt
- 下载插件压缩包
- 解压到
ComfyUI/custom_nodes/Comfyui-VideoConcat
目录 - 安装依赖:
pip install -r requirements.txt
- 重启 ComfyUI
- ComfyUI: 最新版本
- Python: 3.8 或更高版本
- FFmpeg: 4.0 或更高版本(需要 PATH 中可访问)
- 操作系统: Windows 10+、macOS 10.14+、Ubuntu 18.04+
- 添加节点: 在 ComfyUI 中添加
BatchFilename
和VideoConcat
节点 - 构建文件列表: 使用 BatchFilename 逐步添加视频文件
- 配置合并参数: 设置帧率、编码器、质量等
- 执行合并: 运行工作流,自动显示视频预览
[Select Filename] → [BatchFilename] → [VideoConcat] → [Preview]
↓ ↓ ↓
file_path file_list VHS_FILENAMES
输入参数:
file
(必需): 要添加的单个文件路径file_list
(可选): 现有的文件路径列表
输出:
file_list
: 更新后的文件路径列表
功能说明:
# 第一次使用
file_list = BatchFilename(file="video1.mp4", file_list=None)
# 继续添加
file_list = BatchFilename(file="video2.mp4", file_list=file_list)
输入参数:
file_list
(必需): 要合并的视频文件列表frame_rate
(可选): 输出帧率,默认 30.0output_format
(可选): 输出格式,默认 "mp4"video_codec
(可选): 视频编码器,默认 "libx264"audio_codec
(可选): 音频编码器,默认 "aac"video_quality
(可选): 视频质量 ("high", "medium", "low")audio_bitrate
(可选): 音频比特率,默认 "128k"output_filename
(可选): 自定义输出文件名
输出:
Filenames
: VHS_FILENAMES 格式的输出路径video_info
: 详细的视频元数据信息
视频合并完成后,VideoConcat 节点会自动显示预览界面:
- 🎮 播放控制: 标准的视频播放控制条
- 📖 文件信息: 显示输出文件名
- 🔗 操作按钮:
打开
(蓝色): 在新标签页打开视频保存
(绿色): 下载视频到本地隐藏
(红色): 隐藏预览界面
右键菜单功能:
- 显示/隐藏视频预览
- 刷新视频预览
# 构建文件列表
batch_node = BatchFilename()
file_list = batch_node.process_file("video1.mp4", None)
file_list = batch_node.process_file("video2.mp4", file_list)
file_list = batch_node.process_file("video3.mp4", file_list)
# 合并视频
concat_node = VideoConcat()
result = concat_node.concat_videos(
file_list=file_list,
frame_rate=30.0,
output_format="mp4",
video_quality="high"
)
vhs_filenames, video_info = result
print(f"输出文件: {vhs_filenames[1][0]}")
# 高质量 4K 视频合并
result = concat_node.concat_videos(
file_list=file_list,
frame_rate=60.0,
output_format="mov",
video_codec="libx265",
audio_codec="flac",
video_quality="high",
audio_bitrate="320k",
output_filename="4k_master_video"
)
参考 examples/basic_usage.py
文件了解完整的工作流示例。
编码器 | 质量 | 兼容性 | 推荐用途 |
---|---|---|---|
libx264 | 高 | 优秀 | 通用视频 |
libx265 | 极高 | 良好 | 4K/高质量 |
libvpx-vp9 | 高 | 良好 | Web 视频 |
mpeg4 | 中等 | 优秀 | 兼容性优先 |
- MP4: 最通用的格式,推荐日常使用
- AVI: 兼容性好,适合旧设备
- MOV: 苹果生态系统,高质量
- MKV: 开源格式,功能丰富
- WebM: Web 优化格式
预设 | CRF 值 | 比特率 | 适用场景 |
---|---|---|---|
high | 18 | 自动 | 专业制作 |
medium | 23 | 中等 | 一般用途 |
low | 28 | 较低 | 快速预览 |
问题: FFmpeg 执行失败,退出代码 1
解决方案:
- 确认 FFmpeg 已正确安装且在 PATH 中
- 检查输入视频文件是否存在和可读
- 验证视频文件格式是否受支持
# 检查 FFmpeg 安装
ffmpeg -version
# 检查文件信息
ffprobe input_video.mp4
问题: "Input link parameters do not match"
解决方案: 插件自动处理分辨率统一,如果仍有问题:
- 确保所有输入视频都是有效的视频文件
- 检查视频是否损坏
- 尝试使用相同分辨率的视频
问题: 合并完成但预览界面不出现
解决方案:
- 检查浏览器控制台是否有 JavaScript 错误
- 确认输出文件确实生成
- 尝试右键节点选择 "显示视频预览"
- 清除浏览器缓存
问题: 合并后音频和视频不同步
解决方案:
- 使用相同帧率的输入视频
- 确保音频采样率一致
- 尝试不同的音频编码器
启用调试日志:
import logging
logging.basicConfig(level=logging.DEBUG)
查看详细错误信息:
# 查看 ComfyUI 控制台输出
# 检查 logs/ 目录下的日志文件
本插件与 ComfyUI-VideoHelperSuite 完全兼容:
- ✅ 输出格式: 支持
VHS_FILENAMES
格式 - ✅ 文件结构: 使用相同的输出目录结构
- ✅ 节点接口: 可与 VHS 节点无缝连接
- ✅ 预览功能: 提供相似的预览体验
可以与以下插件配合使用:
- VideoHelperSuite: 视频加载和基础处理
- ComfyUI-Manager: 插件管理
- 各种图像生成节点: 处理视频帧
Comfyui-VideoConcat/
├── __init__.py # 插件入口点
├── requirements.txt # Python 依赖
├── README.md # 说明文档
├── nodes/ # 节点实现
│ ├── __init__.py
│ ├── batch_filename.py # BatchFilename 节点
│ ├── video_concat.py # VideoConcat 节点
│ └── video_processor.py # 视频处理核心
├── web/ # 前端资源
│ ├── js/
│ │ └── video_concat_preview.js # 预览 JavaScript
│ └── css/
│ └── video_concat_preview.css # 预览样式
├── examples/ # 使用示例
│ └── basic_usage.py
├── tests/ # 测试文件
└── docs/ # 文档资源
运行测试套件:
# 基础功能测试
python test_video_concat.py
# 预览功能测试
python test_video_preview.py
# VHS 兼容性测试
python test_vhs_compatibility.py
# 运行所有测试
python -m pytest tests/
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
欢迎贡献!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 打开 Pull Request
- 代码风格: 遵循 PEP 8
- 文档: 使用 Google 风格的 docstring
- 测试: 为新功能添加测试
- 兼容性: 确保与 ComfyUI 和 VideoHelperSuite 兼容
如果您遇到问题或有建议:
- 📋 提交 Issue
- 💬 讨论区
- 📧 Email: [email protected]
- ✨ 添加实时视频预览功能
- 🎨 现代化预览界面设计
- 🔧 完善的播放控制和文件操作
- 📱 响应式界面设计
- 🔗 完全兼容 VideoHelperSuite
- 📁 VHS_FILENAMES 输出格式支持
- 🐛 修复分辨率不匹配问题
- 🚀 智能分辨率统一算法
- ⚡ 性能优化和错误处理改进
- 📝 详细的日志记录
- 🎉 初始版本发布
- 📂 BatchFilename 节点
- 🔗 VideoConcat 节点
- 🎬 基础视频合并功能
感谢以下项目和贡献者:
- ComfyUI - 强大的 AI 工作流平台
- VideoHelperSuite - 视频处理插件生态
- FFmpeg - 多媒体处理框架
- 所有贡献者和用户的反馈