Nodes/MKRShift_Nodes/Quality Report
ComfyUI Node

Quality Report

A QA pass that scores your export before you ship it

By criskb·Created 7 months ago·Updated 5 months ago· 0
Quality Report
  • media
  • video
  • audio
  • report_json
  • quality_score
  • issues_json
report_profilestandard

Every content creator knows the feeling of shipping a video only to spot, three comments in, that the audio was clipping or the resolution was embarrassingly low. MKRQualityReport is the pack's attempt to catch that stuff before it leaves the machine: it looks at a piece of media, computes what it can about video and audio health, and hands back a numeric quality score plus a list of concrete issues.

What it's for

Think of it as a cheap QC pass, not a broadcast spec analyzer. Point it at a render, and it answers questions like: is there actually video content? Is it under 480p on the short edge? Is the frame rate suspiciously low? Is audio peaking near clipping? Is the loudness somewhere reasonable (approximate LUFS)? Do the audio and video durations disagree by more than a quarter second? Each check that fails knocks points off a score that starts at 100.

How it works

It resolves a video candidate and an audio candidate from its inputs - media is the primary wildcard input, with optional video and audio as overrides. Video facts come from ffprobe when it's a file, or from decoding up to 200 frames when it isn't; audio stats (peak dBFS, RMS, approximate integrated LUFS and LRA) come from the decoded waveform. Then a fixed scoring table runs: missing video is -25 (an error), low resolution -8, low fps -6, near-clipping audio -8, loudness out of range -6, and an audio/video duration mismatch costs up to 15. The report_profile choice - quick vs standard - mainly trades how much it decodes versus reads metadata.

Outputs: report_json (everything: video meta, audio meta, issues, warnings, timestamp), quality_score (the 0–100 float), and issues_json (just the problems, easy to render or log).

Inputs and outputs

Inputs are minimal: media, report_profile (quick/standard), and optional video / audio. Wire it in as a pre-publish gate and check quality_score before letting a downstream node proceed.

Installing it

Same pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

restart ComfyUI, or Manager → MKRShift_Nodes. No extra Python deps; richer metadata comes with ffmpeg/ffprobe on PATH.

Common issues

Set your expectations before you lean on the number. The LUFS and loudness-range values are approximations, not Dolby-certified measurements - treat them as "is this wildly off?" signals, not delivery standards. The score is a heuristic, so a 98 on a phone-shot clip and a 91 on a gorgeous film render isn't a contradiction; read the issues_json, not just the score. And if you feed it something that isn't a video or audio file, you'll get a video_missing-style deduction and a warning - point it at real media.

CategoryMKRShift Nodes/Media/Analysis

Inputs (4)

NameTypeDefaultDescription
media*
report_profileCOMBOstandard2 options: quick, standard
videoopt*
audioopt*

Outputs (3)

NameTypeDescription
report_jsonSTRING
quality_scoreFLOAT
issues_jsonSTRING