Commit Graph
117 Commits
Author SHA1 Message Date
Meisoftcoltd 091cffe3d4 Update VALIDATE_INPUTS in VideoAnalyzerWithAudio
Implemented a hybrid validation logic in the `VALIDATE_INPUTS` method of `VideoAnalyzerWithAudio`.
This bypasses the strict `os.path.exists()` check if the optional dynamic input (`opt_video_path`) is connected, allowing ComfyUI to start the workflow and wait for upstream nodes (like downloaders) to create the file at runtime.
Strict physical file validation is maintained for the standard manual video upload widget.
2026-04-01 11:36:58 +00:00
Meisoft ae8187515b Merge pull request #50 from Meisoftcoltd/add-video-path-input-4779784611605875262
feat: allow physical video path input for VideoAnalyzerWithAudio
2026-04-01 13:13:38 +02:00
Meisoftcoltd 5a9bafe7d6 feat: add optional physical wire input for video path to VideoAnalyzerWithAudio
Added an optional `opt_video_path` string input (with `forceInput: True`) to the `VideoAnalyzerWithAudio` node. This allows the node to receive a video path from another upstream node physically via a wire connection, bypassing the default file upload widget when connected. The `IS_CHANGED`, `VALIDATE_INPUTS` and `analyze` methods were uniformly updated to intercept and prioritize this new optional input.
2026-04-01 11:13:06 +00:00
Meisoft 4b2c34017b Merge pull request #49 from Meisoftcoltd/feature/allow-absolute-paths-video-analyzer-17120620811168814967
feat: allow absolute paths in VideoAnalyzerWithAudio
2026-03-31 18:29:55 +02:00
Meisoftcoltd bc49d06000 feat: allow absolute paths in VideoAnalyzerWithAudio
Update `VideoAnalyzerWithAudio` in `video.py` to support absolute paths for the `video_name` parameter. The node's `IS_CHANGED`, `VALIDATE_INPUTS`, and `analyze` methods have been modified to first check if the provided path exists directly using `os.path.exists()`. If it does, it uses the path directly, enabling the use of absolute paths. Otherwise, it falls back to the default `folder_paths.get_annotated_filepath()`.
2026-03-31 16:08:05 +00:00
Meisoft 3cdbc20144 Merge pull request #48 from Meisoftcoltd/add-autoloopcalculatorwan-node-15951337519853474380
feat: add AutoLoopCalculatorWan node for WanVideo model support
2026-03-31 17:37:09 +02:00
Meisoftcoltd 480ae9d815 feat: add AutoLoopCalculatorWan node with mathematical truncation for WanVideo 3D VAE
- Register `AutoLoopCalculatorWan` with its visual display name in `__init__.py`.
- Append `AutoLoopCalculatorWan` class definition to `video.py`.
- The new node enforces strict truncation in multiples of 4 to prevent 3D VAE crashes on the WanVideo model while skipping asymmetric trailing frames.
2026-03-31 15:30:44 +00:00
Meisoft b34b8db30d Merge pull request #47 from Meisoftcoltd/fix/batch-allocation-and-face-detection-13975859446113424338
Refactor Dynamic Batch Allocation and Session Image Sender Logic
2026-03-31 15:57:24 +02:00
Meisoftcoltd bc7b27a962 Refactor AutoLoopCalculator and SessionImageSender
- Changed validate_face to detect_faces parameter in SessionImageSender to skip OpenCV when False.
- Refactored AutoLoopCalculator to use dynamic batch allocation equitably distributing total frames over the number of needed loops.
2026-03-31 10:03:20 +00:00
Meisoft de78658336 Merge pull request #46 from Meisoftcoltd/feature/v1.5.2-resolution-numerical-freedom-10321333975368385029
feat(tools): change base_resolution to free INT input
2026-03-30 23:50:11 +02:00
Meisoftcoltd b67c0d12cc feat(tools): change base_resolution from dropdown to free numerical input
- Replaced the predefined dropdown list for `base_resolution` in `tools.py` with an open `INT` input (`min`: 128, `max`: 8192, `step`: 8) for the four Resolution Tools.
- Updated `README.md` and `README_EN.md` to reflect the new user interface change.
2026-03-30 21:45:50 +00:00
Meisoft 15702503e4 Merge pull request #45 from Meisoftcoltd/update-readme-v1.5.1-14949212851897037070
docs: reestructurar y actualizar README a la versión 1.5.1
2026-03-30 23:15:16 +02:00
Meisoftcoltd bf7ed3305c docs: reestructurar y actualizar README a la versión 1.5.1
- Se actualizaron las versiones de 1.5.0 a 1.5.1.
- Se añadió documentación exhaustiva de las entradas (Inputs) y salidas (Outputs) de todos los nodos según el código (`__init__.py`).
- Se introdujo documentación detallada para el nuevo "Escudo de Megapíxeles" (Megapixel Shield) de la suite de Herramientas.
- Se redactó una guía de conexiones limpia para la Arquitectura Híbrida de Identidad.
- Se mantuvo la paridad entre README.md (Español) y README_EN.md (Inglés).
2026-03-30 20:11:12 +00:00
Meisoft 1620a55a57 Merge pull request #44 from Meisoftcoltd/feature/add-source-fps-output-2961003863844222275
feat: Añadir salida source_fps al VideoAnalyzerWithAudio
2026-03-30 22:03:46 +02:00
Meisoftcoltd 55dbf0b0b1 feat: Añadir Escudo de Megapíxeles a Tools (v1.5.1)
- Se ha refactorizado `tools.py` para incluir un "Escudo de Área" que evita artefactos visuales en resoluciones bajas extremas escalando matemáticamente usando `MIN_PIXELS`.
- Se han actualizado los archivos `README.md` y `README_EN.md` con la nueva característica en la sección Tools.
- La versión de la suite en `__init__.py` se ha incrementado a 1.5.1.
2026-03-30 20:01:00 +00:00
Meisoftcoltd 4fc4fec43d feat(video): add source_fps float output to VideoAnalyzerWithAudio
- Added `source_fps` float extraction using OpenCV (`cv2.CAP_PROP_FPS`).
- Updated `RETURN_TYPES`, `RETURN_NAMES`, and the function's return payload.
- Printed detected FPS smoothly to the console debug stream.
2026-03-30 19:52:58 +00:00
Meisoft 3c55c21ba4 Merge pull request #43 from Meisoftcoltd/feature/v1.5.0-dynamic-engine-and-tools-14187832195967987532
Upgrade to v1.5.0: Dynamic Engine & Tools Suite
2026-03-30 21:11:08 +02:00
Meisoftcoltd 1c13d37fbc feat: implement Dynamic Engine and Tools suite for v1.5.0
This commit introduces the Hybrid Identity Architecture's Dynamic Engine:
- `tools.py`: Adds new Math constraint nodes (`ResTool 8x, 16x, 32x, 64x`) to calculate safe resolutions dynamically, preventing VRAM overflow.
- `loop.py`: Replaces the legacy static mathematical state machine with a dynamic performance-based state using `global_accumulated_frames` to progress accurately based on successful generations.
- `image.py`: Overhauls `SessionImageSender` to dynamically truncate generated image tensors using OpenCV if faces are lost, saving the last valid frame, and correctly adjusting the loop progression. `SessionImageReceiver` updated to log dynamic progression.
- `video.py`: Refactors `AutoLoopCalculator` and `IncrementalVideoStitcher` to work under the new dynamic state machine logic.
- `__init__.py`: Registered new nodes, updated imports to include `tools`, and bumped version to v1.5.0.
- `README.md` & `README_EN.md`: Updated documentation to detail the new Dynamic Engine functionality and Tools suite.
2026-03-30 19:03:16 +00:00
Meisoft f780a63a07 Merge pull request #42 from Meisoftcoltd/feat/tools-resolution-nodes-3416685684358741616
feat: add dedicated ResTool suite for safe resolutions
2026-03-30 20:19:41 +02:00
Meisoftcoltd 64172b5c64 feat: add dedicated ResTool suite for safe resolutions
This commit introduces a new `tools.py` module containing a `BaseResolutionTool` and its specific derived classes (`ResTool8x`, `ResTool16x`, `ResTool32x`, `ResTool64x`). These nodes calculate safe, model-specific dimensions that strictly conform to divisibility rules using provided aspect ratios and base resolutions.

The `__init__.py` file is updated to import and register these tools along with emojis for UI display. Both the English and Spanish READMEs are updated to document the new `Tools` suite.
2026-03-30 18:16:48 +00:00
Meisoft d0339ee6c7 Merge pull request #41 from Meisoftcoltd/feature/dynamic-margin-v1.4.3-3601289385715301537
feat(AutoLoopCalculator): implement dynamic +/- 10% margin and bump to v1.4.3
2026-03-30 19:46:18 +02:00
Meisoftcoltd b91831ab11 feat: apply +/- 10% dynamic margin to AutoLoopCalculator
Update `calculate` method in `video.py` to dynamically adjust loop lengths
by a 10% margin, absorbing remainders safely and preventing inefficient
micro-cycles at the end of videos. Update both README.md and README_EN.md
to reflect this new capability and bump the version to 1.4.3.
2026-03-30 17:24:45 +00:00
Meisoft f35a06d867 Merge pull request #40 from Meisoftcoltd/fix-video-analyzer-absolute-path-9584550515842607860
Fix absolute video path return in VideoAnalyzerWithAudio
2026-03-30 18:01:04 +02:00
Meisoftcoltd af3cddf758 Fix: Return absolute video_path in VideoAnalyzerWithAudio
Updated `VideoAnalyzerWithAudio.analyze` to return `video_path` instead
of `video_name` in the result tuple. This bypasses the issue with
VHS_LoadVideo failing on complex filenames by directly passing the
absolute path to the video.
2026-03-30 15:58:31 +00:00
Meisoft 2e497b4894 Merge pull request #39 from Meisoftcoltd/update-videoanalyzer-ui-17617168194567367529
Update VideoAnalyzerWithAudio Node for Cleaner UI and Previews
2026-03-30 17:20:34 +02:00
Meisoftcoltd 51a3f58bf1 docs: update documentation to reflect VideoAnalyzerWithAudio v1.4.1 changes
- Bumped version number in README.md and README_EN.md from 1.4.0 to 1.4.1.
- Updated the "Explorer" (`VideoAnalyzerWithAudio`) node description to highlight its new clean interface, native VHS widget integration, and visual Reference Frame generation.
2026-03-30 15:18:24 +00:00
Meisoftcoltd 2cd9b13f4c feat: update VideoAnalyzerWithAudio UI and preview logic
- Replaced VideoAnalyzerWithAudio class with improved UI handling logic.
- Implemented reference frame preview generation within the node.
- Added IS_CHANGED and VALIDATE_INPUTS class methods for correct caching and validation.
- Output formatting changed to return both UI payload and specific results tuple.
2026-03-30 14:42:34 +00:00
Meisoft e4d091df59 Merge pull request #38 from Meisoftcoltd/feat/hybrid-identity-architecture-2472698231588164134
feat: Hybrid Identity Architecture (OpenCV + Smart Cuts)
2026-03-30 15:53:31 +02:00
Meisoftcoltd e9dda4f3e2 docs: update README to reflect the new Hybrid Identity Architecture
- Updates README.md and README_EN.md.
- Replaces legacy loader references with the new "Explorer", "Brain", and "Worker" logic.
- Adds OpenCV dependency requirement instructions.
- Provides step-by-step setup guides to connect the updated 3-node structure.
2026-03-30 13:04:29 +00:00
Meisoftcoltd bc9fb05e2d feat: implement Hybrid Identity Architecture with VideoAnalyzerWithAudio
- Replaces LoadVideoWithSourceAudio with VideoAnalyzerWithAudio (the "Explorer").
- Introduces OpenCV-based frame scanning to detect sharp and frontal faces.
- Updates AutoLoopCalculator (the "Brain") to utilize safe_faces_list for asymmetric intelligent cuts.
- Updates __init__.py to register the new node correctly with the corresponding display name mapping ("🕵️ Video Analyzer + Audio").
2026-03-30 12:56:10 +00:00
Meisoft 78ab6ea866 Merge pull request #37 from Meisoftcoltd/feature/lazy-evaluation-cycle-0-3427900761752346966
feat: Lazy evaluation via Explorer Cycle 0
2026-03-29 18:19:21 +02:00
Meisoftcoltd c9187b69ef feat: Implement lazy evaluation Cycle 0 architecture and update READMES
- Introduced global state memory (`global_source_frame_count`, `global_target_frames`, `global_stride`) in `loop.py`.
- Removed visual `source_frame_count` wire from `AutoLoopCalculator` in `video.py`
- Upgraded `AutoLoopCalculator` to execute as a blind "Explorer" in Cycle 0.
- Updated `LoadVideoWithSourceAudio` to intercept real `source_frame_count` directly from VHS payloads.
- Added dynamic calculation of total cycles based on intercepted frames at the end of Cycle 0.
- Updated both README.md and README_EN.md with v1.3.1 documentation reflecting the new Cycle 0 features.
2026-03-29 16:19:02 +00:00
Meisoftcoltd bb703951d5 feat: Implement lazy evaluation Cycle 0 architecture
- Introduced global state memory (`global_source_frame_count`, `global_target_frames`, `global_stride`) in `loop.py`.
- Removed visual `source_frame_count` wire from `AutoLoopCalculator` in `video.py`
- Upgraded `AutoLoopCalculator` to execute as a blind "Explorer" in Cycle 0.
- Updated `LoadVideoWithSourceAudio` to intercept real `source_frame_count` directly from VHS payloads.
- Added dynamic calculation of total cycles based on intercepted frames at the end of Cycle 0.
2026-03-29 16:08:21 +00:00
Meisoft 18f5041640 Merge pull request #36 from Meisoftcoltd/update-loop-calculator-v1.3.0-11365687735615672106
feat: Add AutoLoopCalculator and global ghost loop variables
2026-03-29 17:02:21 +02:00
Meisoftcoltd d6d29f998e feat: Add AutoLoopCalculator and remove circular loop wires\n\n- Replace WanFrameValidator with AutoLoopCalculator in video.py\n- Introduce global_total_loops in loop.py to track loops implicitly\n- Eliminate total_loops parameter from SequentialLoopStart, SequentialLoopTrigger, IncrementalVideoStitcher, SessionImageReceiver, and SessionImageSender to prevent ComfyUI wire clutter and avoid circular dependencies.\n- Add support for striding (select_every_nth) in frame distribution calculations.\n- Update README.md and README_EN.md to match the new architecture. 2026-03-29 14:58:28 +00:00
Meisoft e4cc1be979 Merge pull request #35 from Meisoftcoltd/fix/incremental-video-stitcher-tensor-init-8551476164075642520
fix(video): Prevent tensor dimension mismatch in post-processing nodes
2026-03-29 13:00:12 +02:00
Meisoftcoltd 8a37c8272c fix(video): Prevent tensor dimension mismatch in post-processing nodes
- Replaced 8x8 zero tensor initialization in IncrementalVideoStitcher intermediate steps.
- Sliced the actual tensor input (`images[0:1]`) to send the first frame as preview instead.
- This maintains active cables and properly initializes cache resolutions for downstream RIFE/Upscale nodes.
2026-03-29 10:58:17 +00:00
Meisoft a1398edab5 Merge pull request #34 from Meisoftcoltd/feat/v1.2.0-sequential-batcher-update-7177647917115546157
feat(nodes): update sequential batcher architecture for v1.2.0
2026-03-28 23:14:38 +01:00
Meisoftcoltd 7c858643e6 feat: v1.2.0 global update for Sequential Batcher nodes
- Update WanFrameValidator to dynamically calculate skip_frames based on current_loop_index.
- Update LoadVideoWithSourceAudio to extract and output the first frame safely.
- Add total_loops tracking and detailed debug logs to SequentialLoopStart.
- Add total_loops to SessionImageReceiver and SessionImageSender for progressive tracking.
- Enhance print logs with visible Spanish banners across modified nodes.
2026-03-28 22:12:23 +00:00
Meisoft e15f0ad26b Merge pull request #33 from Meisoftcoltd/jules-2851335323260380883-8873c9d0
Fix VHS inheritance issue via Lazy Evaluation Wrapper
2026-03-28 21:07:05 +01:00
Meisoftcoltd 22ef1bd2c9 fix(video): implement lazy evaluation wrapper for VHS inheritance
- Replaced `vhs_load_video_class` inheritance at import time with a Lazy Evaluation Wrapper that dynamically fetches inputs and instantiates the class at runtime.
- Removed legacy technical debt from `video.py`.
- Cleaned up local Python cache files to prevent `__pycache__` ghosts from interfering.
2026-03-28 20:06:38 +00:00
Meisoft afee0ffc6e Merge pull request #32 from Meisoftcoltd/feature/vhs-load-video-inheritance-2223059013720671906
Refactor video nodes to inherit from VHS and improve audio passthrough
2026-03-28 20:37:15 +01:00
Meisoftcoltd 1bed6fbcbb Refactor LoadVideoWithSourceAudio to inherit from VHS_LoadVideo.
Implement safe audio passthrough in `IncrementalVideoStitcher`.
Update README files to reflect VHS as a mandatory dependency.
2026-03-28 19:36:51 +00:00
Meisoft 6825022800 Merge pull request #31 from Meisoftcoltd/fix-video-unpacking-kwargs-1896346447845060005
Fix video node kwargs and unpacking issues
2026-03-28 18:11:51 +01:00
Meisoftcoltd 30a51aebae fix(video): resolve kwargs and unpacking errors in LoadVideoWithSourceAudio
- Fixes `ValueError: not enough values to unpack` by safely handling the `video` param from VHS_LoadVideo whether it is a string or tuple.
- Adds strict filtering for `kwargs` to prevent `force_rate` unexpected keyword argument crashes in newer versions of VHS.
- Modifies `IS_CHANGED` to return `time.time()` to forcefully bypass ComfyUI caching.
- Optimizes `IncrementalVideoStitcher` to return an 8x8 micro-tensor during intermediate loops to prevent missing input errors.
2026-03-28 17:08:50 +00:00
Meisoft 265ac2615b Merge pull request #30 from Meisoftcoltd/update-video-py-architecture-11899055623373293907
Refactor: Replace video.py Architecture and Fix Cache & Type Handling
2026-03-28 17:47:03 +01:00
Meisoftcoltd 0c00b7c1c0 refactor: replace video.py architecture and fix caching bugs
- Overwrite `video.py` with entirely new architecture.
- Add `WanFrameValidator` node.
- Update `LoadVideoWithSourceAudio` to use `time.time()` for cache invalidation instead of `float("NaN")`.
- Update `IncrementalVideoStitcher` to return a `torch.zeros((1, 8, 8, 3))` micro-tensor during intermediate loops to keep ComfyUI's strictly typed pipelines valid.
2026-03-28 16:46:26 +00:00
Meisoft bdd650ff69 Merge pull request #29 from Meisoftcoltd/fix-vhs-video-loader-kwargs-9842839560735093901
fix(video): handle kwargs strictly in LoadVideoWithSourceAudio to prevent VHS queue crash
2026-03-28 17:26:18 +01:00
Meisoftcoltd 9711831bb5 Fix ComfyUI queue crash in LoadVideoWithSourceAudio node
- Ensure `IS_CHANGED` and `VALIDATE_INPUTS` are fully utilizing `@classmethod` logic.
- Filter `**kwargs` before passing them to the native `VHS_LoadVideo` instance to prevent "unexpected keyword argument" crashes.
- Update internal Spanish comments to align with user requested format.
2026-03-28 16:25:47 +00:00
Meisoft 5e412b9a37 Merge pull request #28 from Meisoftcoltd/replace-vhs-validator-with-native-logic-4322568155129062363
Update LoadVideoWithSourceAudio validation and cache checking
2026-03-28 16:43:35 +01:00