feat(video): add loop index skipping logic to WanFrameValidator

- Added `current_loop_index` as a required parameter to `WanFrameValidator`.
- Set `"forceInput": True` to ensure the index parameter appears as a node connection rather than a UI widget.
- Implemented `skip_frames` calculation (`current_loop_index * corrected_frames`) so the video loader knows exactly where to start reading for each batch cycle.
- The `target_frames` parameter remains a UI widget.
This commit is contained in:
Meisoftcoltd
2026-03-28 21:22:28 +00:00
parent 22ef1bd2c9
commit 4fa7effccd
+21 -7
View File
@@ -10,17 +10,31 @@ from . import register_node
class WanFrameValidator:
@classmethod
def INPUT_TYPES(s):
return {"required": {"target_frames": ("INT", {"default": 49, "min": 1, "max": 10000})}}
RETURN_TYPES = ("INT",)
RETURN_NAMES = ("valid_frames",)
return {
"required": {
# target_frames se queda como un campo numérico en el nodo
"target_frames": ("INT", {"default": 49, "min": 1, "max": 10000}),
# current_loop_index se fuerza como un punto de conexión de entrada (cable)
"current_loop_index": ("INT", {"default": 0, "forceInput": True}),
}
}
RETURN_TYPES = ("INT", "INT")
RETURN_NAMES = ("valid_frames", "skip_frames")
FUNCTION = "validate"
CATEGORY = "🔁 Sequential Batcher/Video"
def validate(self, target_frames):
def validate(self, target_frames, current_loop_index):
# 1. Validar la regla estricta de WanVideo (4k+1)
k = (target_frames - 1) // 4
corrected_frames = (4 * k) + 1
print(f"🛡️ [Wan Validator] Fotogramas ajustados: {corrected_frames}")
return (max(1, corrected_frames), )
corrected_frames = max(1, (4 * k) + 1)
# 2. Calcular cuántos frames debe saltar el cargador en este ciclo
skip_frames = current_loop_index * corrected_frames
print(f"🛡️ [Wan Validator] Lote: {corrected_frames} frames | Saltar: {skip_frames} frames")
return (corrected_frames, skip_frames)
@register_node
class LoadVideoWithSourceAudio: