Nodes/comfyui-sequential-batcher/🕵️ Video Analyzer Face detector + Audio
ComfyUI Node

🕵️ Video Analyzer Face detector + Audio

The node that turns one video into a whole render queue — audio included

By Meisoftcoltd·Created 7 months ago·Updated 18 days ago· 3
🕵️ Video Analyzer Face detector + Audio
  • bbox_detector
  • video_path
  • total_frames
  • source_fps
  • source_audio
  • safe_faces_list
  • reference_frame
  • log
video
reference_frame_idx0
use_face_detectortrue
blur_threshold100
unload_detector_after_analysistrue
unload_detectortrue
current_loop_index0

The pack calls it the "Explorer," and that's the right mental model: this is the node you drop at the very start of a sequential-batcher workflow to tear a source video apart into the numbers everything else needs. It's the pack's flagship, and it's doing a lot more than it looks like.

This is the comfyui-sequential-batcher suite (one commit old, barely anyone running it yet), built around one idea: instead of trying to render a long video in one shot and OOM-ing on WanVideo, Hunyuan, or LTX, you render it chunk by chunk and let the graph re-queue itself. The Analyzer is what feeds that machine. In one pass it counts frames, reads the fps, pulls the audio track, and finds the frames where faces are sharpest - the "safe face" frames that the loop calculators use as cutting points so identity survives the chunk boundaries.

How it works

Give it a video (the video dropdown lists files in your ComfyUI input folder, same trick VHS_LoadVideo uses) and it runs an OpenCV scan. For every frame it measures sharpness with a Laplacian variance filter; frames above blur_threshold get passed to a face detector. If you've connected the optional bbox_detector port (from Impact Pack's UltralyticsDetectorProvider, e.g. face_yolov8m.pt), detection runs on GPU. Leave it empty and it falls back to OpenCV's bundled haarcascade on CPU - slower, but zero extra downloads.

Along the way it also extracts the original audio via torchaudio, standardized to 44.1kHz stereo, and grabs a reference frame for your first-frame identity. The scan result is cached keyed to the video path, so only cycle 0 of your loop pays for it - later cycles read the cache and skip straight to the outputs.

Inputs and outputs that matter

You'll set reference_frame_idx (which frame becomes reference_frame, the seed image for image-to-video) and blur_threshold (higher = fewer, sharper face frames qualify). Leave use_face_detector, unload_detector, and unload_detector_after_analysis alone unless you have a reason: the auto-unload explicitly frees your YOLO from VRAM when the scan finishes, and you want that.

The outputs are the payload:

  • total_frames and source_fps → feed your Auto Loop Calculator
  • safe_faces_list (a FACE_CUTS list) → also into the calculator, so chunk cuts land on sharp-face frames
  • source_audio → wire it straight to the stitcher at the end for perfect audio sync
  • reference_frame (IMAGE) → the first frame of your latent
  • video_path and log → bookkeeping

Installing the pack

Install via ComfyUI Manager (search "comfyui-sequential-batcher"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/Meisoftcoltd/comfyui-sequential-batcher
cd comfyui-sequential-batcher
pip install -r requirements.txt   # torch, torchaudio, opencv-python, safetensors, ...

Then restart ComfyUI. FFmpeg is non-negotiable - this node uses it to restructure video containers and torchaudio to decode audio. On Linux/WSL the pack's install script tries sudo apt install ffmpeg for you; if that fails, run it yourself. Windows users have to grab the binaries and add them to PATH. No model files are downloaded for the CPU path.

Common issues

The number one failure is FFmpeg missing - audio extraction just throws. Second is the --highvram launch flag: the README explicitly warns it blocks the pack's model-unload calls and guarantees OOM with big models. Launch normally (or --normalvram) so VRAM is freed between chunks. And if you don't wire safe_faces_list into your calculator, you lose the whole point - the cuts degrade to blind equilateral chunks.

Category🔁 Sequential Batcher/Video

Inputs (8)

NameTypeDefaultDescription
videoCOMBO0 options:
reference_frame_idxINT00–100000
use_face_detectorBOOLEANtrue
blur_thresholdFLOAT1000–1000
unload_detector_after_analysisBOOLEANtrue
unload_detectorBOOLEANtrue
bbox_detectoroptBBOX_DETECTOR
current_loop_indexoptINT0

Outputs (7)

NameTypeDescription
video_path*
total_framesINT
source_fpsFLOAT
source_audioAUDIO
safe_faces_listFACE_CUTS
reference_frameIMAGE
logSTRING