Nodes/comfyui-supavoice-transcriber/SupaVoice Video Loader
ComfyUI Node

SupaVoice Video Loader

Frames and audio in one pull — the video loader built for training data

By mexxmillion·Created 4 months ago·Updated 4 months ago· 0
SupaVoice Video Loader
    • images
    • audio
    • audio_path
    • metadata_json
    • fps
    • frame_count
    media_pathE:\git\SupaVoice\input\new_test.mp4
    start_seconds0.00
    end_seconds0.00
    duration_seconds5.00
    fps0.0
    width0
    height0
    max_frames120
    audio_sample_rate16000
    audio_channelsstereo
    output_prefixsupavoice_video

    Most of the SupaVoice pack is a transcribe pipeline. SupaVoice Video Loader is the node that understands a video file as a thing with both - it hands you the frames as an IMAGE batch and the clean audio as an AUDIO, extracted from the same clip, so you can build labeled image+audio+transcript training data without juggling two loaders that don't agree on timing. It lives under SupaVoice/video, the only node in the pack that does.

    How it works

    Under the hood it's ffprobe for metadata plus two ffmpeg passes: one decodes frames (with fps and scale filters applied) into a float32 IMAGE batch, the other extracts the audio track to a WAV and reloads it as AUDIO. If the video has no audio track it doesn't error - it deliberately returns silence, which is a thoughtful touch if you're building a dataset from muted footage and want consistent output shapes.

    Inputs worth actually setting:

    • start_seconds, end_seconds, duration_seconds - duration wins if it's > 0; otherwise end - start. Default duration_seconds is 5.
    • fps - 0 means "use the source frame rate" (that's the sensible default; don't touch it unless you know why).
    • width / height - 0 keeps source size; otherwise it scales (with lanczos) and preserves aspect ratio when you set only one side.
    • max_frames - caps the batch (default 120, up to 4096). Your safety valve against accidentally decoding an hour of video.
    • audio_sample_rate (default 16000) and audio_channels (mono/stereo) shape the audio for whatever you're feeding next.

    Outputs: images, audio, audio_path, metadata_json (a STRING with codec, dimensions, fps, duration, frame count - handy for logging or conditionals), fps, and frame_count as plain values.

    Installing it

    cd ComfyUI/custom_nodes
    git clone https://github.com/mexxmillion/ComfyUI-SupaVoice-Transcriber
    

    Restart ComfyUI. No model downloads. Because it shells out to bare ffmpeg and ffprobe, those need to be on the PATH visible to ComfyUI - fine on a normal Windows embed, easy to forget on a bare Linux box. The default media_path is again the author's E:\git\SupaVoice\input\new_test.mp4, so replace it. And like the trim node, it gets the drag-and-drop + draggable timeline widget from the pack's frontend JS - drag a video in, scrub the handles, done.

    One more thing: this node is loads frames into memory. max_frames of 4096 at full resolution is a lot of VRAM, so keep the cap tight unless you're actually using the frames. If all you want is audio, the leaner WAV/Media to Audio node is the better tool.

    CategorySupaVoice/video

    Inputs (11)

    NameTypeDefaultDescription
    media_pathSTRINGE:\git\SupaVoice\input\new_test.mp4
    start_secondsFLOAT0.000–86400
    end_secondsFLOAT0.000–86400
    duration_secondsFLOAT5.000–86400
    fpsFLOAT0.00–120
    widthINT00–8192
    heightINT00–8192
    max_framesINT1201–4096
    audio_sample_rateINT160008000–48000
    audio_channelsCOMBOstereo2 options: mono, stereo
    output_prefixSTRINGsupavoice_video

    Outputs (6)

    NameTypeDescription
    imagesIMAGE
    audioAUDIO
    audio_pathSTRING
    metadata_jsonSTRING
    fpsFLOAT
    frame_countINT