Nodes/Presentation ComfyUI/Presentation Video
ComfyUI Node

Presentation Video

A file picker for mp4, mkv and mov into your generated site

By niknah·Created 11 months ago·Updated 4 months ago· 5
Presentation Video
    • filename
    pathoutput
    regex\.(mp4|mpg|mpeg|mkv|mov|webm|avi)$
    value

    Presentation Video is the pack's file picker tuned for video files. In a generated website built from a ComfyUI workflow - that's what niknah's Presentation ComfyUI does - this node gives the user a dropdown of video files to feed into the pipeline, instead of a text field they have to guess a path into. It's the video sibling of Presentation Image and Presentation Audio, and like them it's a specialization of the general-purpose Presentation File.

    The README's output-node list tells you where this fits in the flow: the pack expects PreviewImage/SaveImage for images, PreviewAudio/SaveAudio for audio, and VHS_VideoCombine or SaveVideo for video. So a typical setup is Presentation Video on the input side ("here's the clip to work from") and a SaveVideo-style node inside the tab as the output. Everything the user touches, they touch through a picker.

    How it works

    Mechanically it's a subclass of PresentationFile that only overrides the default regex to \.(mp4|mpg|mpeg|mkv|mov|webm|avi)$. The Python pickfile method is a stub that returns the value string; the real file listing happens in the generated Nuxt site's files API, which recursively scans your chosen folder, matches the regex case-insensitively, and renders the picker. The chosen filename is written into the workflow JSON, and the node's filename output carries it into the graph. Its IS_CHANGED hash of path/regex/value is what tells ComfyUI to re-queue when the selection changes - without it, a new pick would be ignored as "same inputs."

    The inputs that matter

    • path (default output) - which ComfyUI folder to browse. Anything defined in folder_paths.py: input, output, checkpoints, loras, and so on. For user-supplied clips, input is usually the right call.
    • regex - already set to the common video extensions (mp4, mpg/mpeg, mkv, mov, webm, avi). Trim to \.(mp4|webm)$ if that's all you want visible.
    • value - the default file, pre-selected when the site loads.

    Output: filename, a wildcard * string that plugs into anything expecting a file path.

    How to install it

    Part of the single-pack install. ComfyUI Manager, search "Presentation ComfyUI", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/niknah/presentation-ComfyUI
    

    then restart. You need Node.js installed separately; first launch copies the Nuxt site to output/presentation-site and runs npm install - budget a few minutes. The site runs at http://localhost:3000.

    Common issues & troubleshooting

    The clip I dropped in doesn't show. Confirm the path folder is right - it's resolved against ComfyUI's folder_paths, so input is ComfyUI's input/ directory, not anywhere on your desktop. And check the extension is in the regex; .webm is there but exotic containers like .ts or .gif-as-video aren't. Widen the regex if needed.

    Picking a new file doesn't re-run. IS_CHANGED re-queue only fires when the node executes - make sure it isn't muted or bypassed.

    Layout or site issues after edits. Settings → Presentation → Restart, or Rebuild if it's a structural change. Kill any duplicate nuxt processes on the same folder first.

    Don't port-forward it bare. The site is a local server on port 3000 talking to ComfyUI's unauthenticated API; the README's basic-auth and Cloudflare steps are the public-facing route.

    CategoryPresentation

    Inputs (3)

    NameTypeDefaultDescription
    pathSTRINGoutputCan be anything defined in folder_paths.py. input, output, checkpoints, loras, vae, text_encoders, diffusion_models, clip_vision, diffusers, upscale_models
    regexoptSTRING\.(mp4|mpg|mpeg|mkv|mov|webm|avi)$Example: \.(gif|png|webp)$
    valueoptSTRINGDefault file

    Outputs (1)

    NameTypeDescription
    filename*