- Se actualizaron las descripciones en README.md y README_EN.md para reflejar las nuevas capacidades de LoadVideoWithSourceAudio (widget UI intacto, upload directo) y el Stitcher (INPUT_IS_LIST=False, passthrough directo de audio al último frame). - Se restauraron los scripts de testing en `tests/` que se habían eliminado accidentalmente.
5.9 KiB
ComfyUI Sequential Batcher (v1.1.0)
Una suite altamente especializada de nodos personalizados para ComfyUI diseñada para el Auto-Encolado Recursivo (Recursive Self-Queuing) y el procesamiento secuencial autónomo. Esta arquitectura minimiza el uso de VRAM procesando tareas pesadas (como la generación de vídeo) de forma secuencial, lote por lote, orquestadas completamente desde dentro del propio grafo.
Read in English: README_EN.md
La Arquitectura "Motor de Fórmula 1"
A partir de la versión 1.0.0, este repositorio ha pivotado exclusivamente hacia la arquitectura de bucles secuenciales autónomos y memoria global. Toda la deuda técnica de los antiguos nodos (lotes, secuencias, depuración) ha sido eliminada, dejando un código base limpio y fácil de mantener enfocado en los 6 fantásticos.
En la v1.1.0, hemos introducido capacidades de guardado a disco progresivo, soporte para multiplexado de audio y un hackeo profundo a nivel de JSON para vencer la agresiva caché de ComfyUI.
Los 6 Nodos Principales
El sistema se construye alrededor de tres categorías principales:
🔁 Loop (Orquestación Autónoma)
- 🏁 Loop Start (Index) (
SequentialLoopStart): Inicia el bucle, gestiona el índice global y provee el índice actual a los nodos de imagen y vídeo del flujo. - 🚀 Loop Trigger (Auto-Queue) (
SequentialLoopTrigger): Se coloca al final del flujo de trabajo. Incrementa el contador y auto-encola el siguiente ciclo mediante un POST a la propia API de ComfyUI (/prompt).- Mutador de Semillas: Escanea el lienzo, localiza nodos con una semilla (
seedonoise_seed) y les inyecta una nueva (32 bits), rompiendo la caché hacia adelante en los samplers. - 💉 Inyección Anti-Caché (¡Nuevo en v1.1.0!): Busca específicamente al nodo
Loop Startdentro de la carga útil (payload) JSON y le inyecta forzosamente el nuevo índice. Esto rompe el infame "caché inverso" (bottom-up) de ComfyUI que congelaba los nodos iniciales durante el Auto-Queue, garantizando un avance ininterrumpido.
- Mutador de Semillas: Escanea el lienzo, localiza nodos con una semilla (
🖼️ Image (Memoria de Sesión)
- 📥 Session Image Receiver (
SessionImageReceiver): Proporciona la imagen inicial o la última generada del ciclo anterior, detectando inteligentemente el inicio de una sesión en la memoria RAM. - 📤 Session Image Sender (
SessionImageSender): Extrae la última imagen del lote y la asegura en la memoria del sistema para el siguiente ciclo.- 💾 Guardado de Keyframes (¡Nuevo en v1.1.0!): Ahora recibe el índice actual y realiza un volcado de seguridad en el disco duro, guardando progresivamente
keyframe_XXX.pngen cada ciclo para prevenir pérdidas de datos.
- 💾 Guardado de Keyframes (¡Nuevo en v1.1.0!): Ahora recibe el índice actual y realiza un volcado de seguridad en el disco duro, guardando progresivamente
🎞️ Video (Ensamblaje y Validación)
- 🛡️ Wan Frame Validator (
WanFrameValidator): Valida y corrige el número objetivo de fotogramas para asegurar que encajen en la fórmula4k+1requerida por modelos específicos (ej. Wan). - 🎞️ Incremental Auto-Stitcher (
IncrementalVideoStitcher): Archiva progresivamente los tensores generados en el disco duro y los ensambla de forma segura al final de todos los ciclos.- 🧠 Cero OOM (¡Nuevo!): Sustituye las acumulaciones en memoria por guardados temporales en disco (
.pt), borrando la RAM de inmediato para poder procesar vídeos infinitos sin colapsar el sistema. Al desactivarINPUT_IS_LIST, maneja tensores puros eficientemente. - 🎵 Passthrough de Audio (¡Nuevo!): Alimenta directamente el audio original hacia el archivo ensamblado en el último ciclo (devolviendo
Noneen los ciclos intermedios para ahorrar recursos).
- 🧠 Cero OOM (¡Nuevo!): Sustituye las acumulaciones en memoria por guardados temporales en disco (
- 🎥 Load Video + Source Audio (
LoadVideoWithSourceAudio): (¡Nuevo!) Funciona exactamente igual que un cargador de vídeo de VHS (incluyendo la vista previa en la UI y el botón de subida), pero extrae y expone de manera segura la pista de audio original completa y sin recortes para asegurar que viaja inalterada a lo largo del proceso secuencial.
Configuración y Uso
Prerrequisitos
- VideoHelperSuite (VHS): Requerido de forma dinámica para que el nodo
Load Video + Source Audiofuncione y replique su interfaz de manera correcta. - FFmpeg: Debe estar instalado y disponible en el PATH del sistema para manejar procesos subyacentes de vídeo.
- Torchaudio: (Generalmente incluido en los entornos ComfyUI) es necesario para extraer la pista de audio fuente original de forma pura.
Instalación
- Ve a la carpeta
custom_nodesde ComfyUI. - Clona este repositorio:
git clone https://github.com/your-repo/ComfyUI-Sequential-Batcher.git - Reinicia ComfyUI.
Cómo Conectar tu Nueva Máquina Autónoma
- El Inicio: Añade el nodo
🏁 Loop Start (Index).- Conecta su salida
current_loop_indexa las entradas de índice de tuSessionImageReceiver,SessionImageSender, y tuIncremental Auto-Stitcher. ¡No olvides conectar el Sender para el guardado de los keyframes! - Asegúrate de que su interruptor
reset_loopestá enFalse.
- Conecta su salida
- Conectando el Audio (Opcional): Si tu flujo tiene sonido, saca un cable de la salida de audio de tu nodo inicial (ej.
VHS_LoadVideo) y conéctalo al puertoaudioazul de tuIncremental Auto-Stitcher. - El Final: Añade el nodo
🚀 Loop Trigger (Auto-Queue). Crucial: Conecta la salida de texto (final_video_path) de tuIncremental Auto-Stitcheren la entradatrigger_dependency. Esto obliga al trigger a esperar a que el vídeo se haya guardado físicamente antes de disparar. Configura la cantidad de lotes que quieres entarget_loops. - Ejecución: Ya no tienes que marcar la casilla "Auto Queue" nunca más. Pulsa "Queue Prompt" 1 sola vez. El lote 0 arranca y, al llegar al final, el nodo
Triggerenvía una señal invisible al servidor. Gracias a la Inyección Anti-Caché, la caché se destruye en cada iteración y el progreso fluye hasta completar tu vídeo.
Creado para llevar los límites de la automatización en ComfyUI un paso más allá.