Comfyui-VideoConcat
视频文件管理和合并功能
ComfyUI 视频批处理插件 🎬
这是一个为 ComfyUI 设计的专业视频批处理插件,提供强大的视频文件管理和合并功能,完全兼容 VideoHelperSuite 插件生态系统。
✨ 功能特性
🎯 核心节点
-
📂 BatchFilename: 智能文件名批处理管理器
- 逐步构建视频文件列表
- 自动去重和路径标准化
- 完全兼容 VideoHelperSuite 的 Select Filename 节点
-
🔗 VideoConcat: 专业视频合并处理器
- 高质量视频合并,保持音画同步
- 智能分辨率统一和格式转换
- 支持多种编码器和质量设置
- 🎬 实时视频预览功能
🎨 视频预览界面
- 🖥️ 现代化预览界面: 模仿 VideoHelperSuite 的 Video Combine 节点
- 🎮 完整播放控制: 播放、暂停、进度条、音量控制
- 🔧 丰富操作功能: 打开、保存、隐藏预览
- 📱 响应式设计: 适配不同节点大小和屏幕
- 🌗 暗色主题: 与 ComfyUI 界面完美融合
🔗 完美兼容性
- ✅ VideoHelperSuite 兼容: 完全支持 VHS_FILENAMES 输出格式
- ✅ ComfyUI 集成: 标准节点接口和前端扩展
- ✅ 跨平台支持: Windows、macOS、Linux
📥 安装指南
方法一:Git 克隆(推荐)
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
📚 详细使用方法
📂 BatchFilename 节点
输入参数:
file(必需): 要添加的单个文件路径file_list(可选): 现有的文件路径列表
输出:
file_list: 更新后的文件路径列表
功能说明:
# 第一次使用
file_list = BatchFilename(file="video1.mp4", file_list=None)
# 继续添加
file_list = BatchFilename(file="video2.mp4", file_list=file_list)
🔗 VideoConcat 节点
输入参数:
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 节点会自动显示预览界面:
- 🎮 播放控制: 标准的视频播放控制条
- 📖 文件信息: 显示输出文件名
- 🔗 操作按钮:
打开(蓝色): 在新标签页打开视频保存(绿色): 下载视频到本地隐藏(红色): 隐藏预览界面
右键菜单功能:
- 显示/隐藏视频预览
- 刷新视频预览
📖 使用示例
示例 1: 基础视频合并
# 构建文件列表
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]}")
示例 2: 自定义配置
# 高质量 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"
)
示例 3: ComfyUI 工作流
参考 examples/basic_usage.py 文件了解完整的工作流示例。
⚙️ 配置选项
视频编码器支持
| 编码器 | 质量 | 兼容性 | 推荐用途 | |--------|------|--------|----------| | libx264 | 高 | 优秀 | 通用视频 | | libx265 | 极高 | 良好 | 4K/高质量 | | libvpx-vp9 | 高 | 良好 | Web 视频 | | mpeg4 | 中等 | 优秀 | 兼容性优先 |
输出格式支持
- MP4: 最通用的格式,推荐日常使用
- AVI: 兼容性好,适合旧设备
- MOV: 苹果生态系统,高质量
- MKV: 开源格式,功能丰富
- WebM: Web 优化格式
质量预设
| 预设 | CRF 值 | 比特率 | 适用场景 | |------|--------|--------|----------| | high | 18 | 自动 | 专业制作 | | medium | 23 | 中等 | 一般用途 | | low | 28 | 较低 | 快速预览 |
🔧 故障排除
常见问题
1. 视频合并失败
问题: FFmpeg 执行失败,退出代码 1
解决方案:
- 确认 FFmpeg 已正确安装且在 PATH 中
- 检查输入视频文件是否存在和可读
- 验证视频文件格式是否受支持
# 检查 FFmpeg 安装
ffmpeg -version
# 检查文件信息
ffprobe input_video.mp4
2. 分辨率不匹配错误
问题: "Input link parameters do not match"
解决方案: 插件自动处理分辨率统一,如果仍有问题:
- 确保所有输入视频都是有效的视频文件
- 检查视频是否损坏
- 尝试使用相同分辨率的视频
3. 视频预览不显示
问题: 合并完成但预览界面不出现
解决方案:
- 检查浏览器控制台是否有 JavaScript 错误
- 确认输出文件确实生成
- 尝试右键节点选择 "显示视频预览"
- 清除浏览器缓存
4. 音频同步问题
问题: 合并后音频和视频不同步
解决方案:
- 使用相同帧率的输入视频
- 确保音频采样率一致
- 尝试不同的音频编码器
调试模式
启用调试日志:
import logging
logging.basicConfig(level=logging.DEBUG)
查看详细错误信息:
# 查看 ComfyUI 控制台输出
# 检查 logs/ 目录下的日志文件
🤝 兼容性说明
VideoHelperSuite 兼容性
本插件与 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]
📊 更新日志
v1.3.0 (最新)
- ✨ 添加实时视频预览功能
- 🎨 现代化预览界面设计
- 🔧 完善的播放控制和文件操作
- 📱 响应式界面设计
v1.2.0
- 🔗 完全兼容 VideoHelperSuite
- 📁 VHS_FILENAMES 输出格式支持
- 🐛 修复分辨率不匹配问题
v1.1.0
- 🚀 智能分辨率统一算法
- ⚡ 性能优化和错误处理改进
- 📝 详细的日志记录
v1.0.0
- 🎉 初始版本发布
- 📂 BatchFilename 节点
- 🔗 VideoConcat 节点
- 🎬 基础视频合并功能
🙏 致谢
感谢以下项目和贡献者:
- ComfyUI - 强大的 AI 工作流平台
- VideoHelperSuite - 视频处理插件生态
- FFmpeg - 多媒体处理框架
- 所有贡献者和用户的反馈
<div align="center"> <p>Made with ❤️ for the ComfyUI community</p> <p> <a href="#top">回到顶部</a> | <a href="https://github.com/your-repo/Comfyui-VideoConcat">GitHub</a> | <a href="https://github.com/your-repo/Comfyui-VideoConcat/issues">报告问题</a> </p> </div>