Nodes/Framerate Converter/Quality Metrics
ComfyUI Node

Quality Metrics

Did the re-encode actually hurt?

By LaserDog80·Created 4 months ago·Updated 4 months ago· 0
Quality Metrics
    • metrics_report
    • psnr
    • ssim
    output_path
    reference_path
    include_vmaffalse

    Every re-encode loses something. The question is whether it loses enough to matter, and eyeballing a 10-second clip at 200% zoom is a terrible way to answer that. Quality Metrics is the objective-measurement node in the Framerate Converter pack (Trope Tools, TropeMedia): it compares your output against the reference file and produces PSNR and SSIM numbers, with VMAF as an option. It turns "looks fine to me" into a score you can actually compare.

    It's the most technical node in the pack and the one people tend to discover last - usually after someone asks "is your encode actually better, or just different?"

    What you need

    Two required string inputs:

    • output_path - the converted file.
    • reference_path - the original.

    Plus an optional include_vmaf boolean (default off). The critical thing to understand: PSNR and SSIM are pixel comparisons, which only mean anything when both videos have the same resolution, framerate, and roughly the same frames. If you converted 24→25 by speed change, the frames don't line up 1:1 and the numbers will be worse than they deserve - this node shines for checking a re-encode of an unchanged stream, or a frame-drop conversion where the frame grid survives.

    The outputs

    • metrics_report (STRING) - a formatted report with human ratings.
    • psnr (FLOAT) and ssim (FLOAT) - the raw numbers, wire them anywhere.

    The ratings are sensible industry heuristics: PSNR ≥ 40 dB is "excellent," 30–40 "good," 20–30 "acceptable," below that poor. SSIM ≥ 0.98 excellent, 0.95–0.98 good, 0.90–0.95 acceptable. VMAF (the modern favorite, if your FFmpeg build includes libvmaf) rates ≥ 93 excellent, 80–93 good.

    The VMAF caveat deserves honesty: not every FFmpeg build ships libvmaf, and when it's missing the node reports VMAF: N/A (requires libvmaf) rather than failing the whole check. PSNR and SSIM always work - they're built into stock FFmpeg.

    Install

    Pack install: ComfyUI Manager → Trope Tools - Framerate Converter, or git clone https://github.com/LaserDog80/ComfyUI-FramerateConverter into custom_nodes/ and restart. Needs the system ffmpeg binary; VMAF additionally needs an FFmpeg compiled with --enable-libvmaf.

    If you're just converting clips for a client, you probably don't need this - a crf of 18 is already "looks identical to source." But when someone hands you a workflow with a suspicious crf: 35 and a straight face, a 40-second Quality Metrics run settles the argument with numbers instead of opinions.

    CategoryTrope Tools/Framerate Converter/Verify

    Inputs (3)

    NameTypeDefaultDescription
    output_pathSTRING
    reference_pathSTRING
    include_vmafoptBOOLEANfalse

    Outputs (3)

    NameTypeDescription
    metrics_reportSTRING
    psnrFLOAT
    ssimFLOAT