ComfyUI Node

Probe Video

Probe Video — find out what a video actually is before you trust its label

By LaserDog80·Created 4 months ago·Updated 4 months ago· 0
Probe Video
    • media_info
    • summary
    video_path

    Every video file is a small liar. The filename says 1080p, the header says 60 fps, and what actually plays is a variable-framerate 23.98 mess. Before you convert, remux, or re-encode anything, you want to know the truth. That's what Probe Video does - it runs ffprobe on a file and hands you a structured bundle of facts about it.

    It's the first node in the Inspect group of the Framerate Converter pack (Trope Tools, TropeMedia). It's a building block - most people never touch it directly, because the top-level Convert Framerate node runs this exact probe internally. But if you're building your own pipeline, this is where it starts.

    What you get

    One input: video_path, a plain string. Give it a file path and it returns two things:

    • media_info - a MEDIA_INFO bundle containing framerate, duration, frame count, resolution, video codec, whether there's audio, the audio sample rate, and the path.
    • summary - a human-readable text dump of the same info, for a Show Text node or just eyeballing.

    The interesting engineering is in which framerate it reports. ffprobe gives you two: r_frame_rate (the nominal/timestamp-derived rate) and avg_frame_rate (total frames ÷ duration - the rate you actually perceive). This node prefers avg_frame_rate and only falls back when that's missing or zero. That distinction is not pedantry. AI-exported and variable-framerate footage routinely declares r_frame_rate=60/1 for video that genuinely plays at ~24 fps, and trusting the wrong number downstream is how you get conversions that are subtly off.

    It also tolerates the junk ffprobe throws back: nb_frames is often the literal string "N/A" on MOV/MKV files, so it falls back to duration × fps instead of crashing on the parse.

    Wire it up

    The media_info output feeds two kinds of consumers. The pack's Extract Media Info node splits it into clean scalar outputs (source_fps, duration, frame_count, …) that wire straight into Calc Conversion and Calc Audio. Or you can run Probe Video → Extract Media Info → Calc Conversion → Calc Audio → Build Command → Run FFmpeg and have a fully custom conversion chain where you control every stage. That's the whole point of exposing these granular nodes.

    Install and gotchas

    Same story as the rest of the pack: ComfyUI Manager → Trope Tools - Framerate Converter, or git clone https://github.com/LaserDog80/ComfyUI-FramerateConverter into custom_nodes/ and restart. No pip dependencies - it shells out to the system ffprobe, so FFmpeg must be installed (brew install ffmpeg, apt install ffmpeg, gyan.dev on Windows).

    It raises a clear error if ffprobe fails or the file has no video stream, so you'll know exactly why a path broke. And there's a 60-second timeout, which for metadata probing is generous - a probe hanging usually means the file itself is unreadable or the path is wrong (weird characters and sandboxed-Mac path issues are the usual suspects, same as anywhere else in ComfyUI).

    If you only need "is this a real video, and what is it?", this is the node. It's not glamorous - it's the part of the workflow that stops you from converting a file based on a filename's promises.

    CategoryTrope Tools/Framerate Converter/Inspect

    Inputs (1)

    NameTypeDefaultDescription
    video_pathSTRING

    Outputs (2)

    NameTypeDescription
    media_infoMEDIA_INFO
    summarySTRING