MiniMax H3 RealBasicVSR Temporal Restore / 时序修复 (Advanced)
RealBasicVSR temporal restore — cleanup after H3, with audio treated as untouchable
- frames
- audio
- restored_frames
- source_frames
- audio
- report_json
RealBasicVSR is the OpenMMLab workhorse for video restoration - a recurrent network that uses the temporal dimension to clean up blur, noise and compression artifacts while keeping detail stable across frames. This node brings it into the T8 pack as an optional post-process for MiniMax H3 output, and it's aimed at the specific annoyance every H3 user hits: the video is great, but there's temporal inconsistency - a face that shimmers, a background that crawls, detail that pops in and out between frames. A per-frame sharpen makes that worse, not better; you need something that looks across time, which is exactly what RealBasicVSR does.
Two design decisions tell you a lot about this node:
- Audio is the exact original object. Feed an
audioinput and it comes out the other side untouched - the restoration is video-only, and your 32kHz stereo track stays byte-for-byte the source. For a joint-AV model like H3, that's the right call: nobody wants their voice re-synthesized by a video-restoration network. - It never downloads a model at runtime. The
model_namedropdown reads fromComfyUI/models/upscale_models, and if it's empty you haven't put a RealBasicVSR checkpoint there. No silent downloads, no surprise gigabytes.
The inputs that matter
frames- the decoded H3 clip to restore.audio(optional) - passes through untouched.output_mode-native_size_restore(default) restores at the input resolution;x4_super_resolutionactually upscales 4x. If you only want cleanup, keep the default - upscaling invites different expectations.strength(default 0.3) - how hard the restoration pushes. 0.3 is a light hand; going higher means more aggressive artifact removal and more risk of the "plastic" look that overtuned restoration always threatens.chunk_frames(8) andoverlap_frames(2) - restoration runs in small serial chunks to stay memory-friendly, with overlap so chunk boundaries don't show. These are your VRAM vs. seam-quality dials.precision(auto/fp16/fp32) andcheckpoint_branch(prefer_emadefault - EMA weights are the stable ones for inference).
Outputs: restored_frames, the source_frames side-by-side (so you can A/B), the untouched audio, and report_json.
When to reach for it
Use it as a post step, after you've decided the generation itself is good. If the clip is fundamentally broken (temporal collapse, wrong motion), restoration will happily polish a turd. Run the pack's RAFT motion audit first to confirm the motion is real, then restore. And keep the honesty frame from the upscaling KB in mind: temporal restoration preserves detail, it doesn't invent it - if the source lacks detail at full resolution, no recurrent network will conjure it.
Install
Same pack, same routine:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
or ComfyUI Manager → "MiniMax H3 Audio T8" → restart. Update ComfyUI itself first (comfy_api.latest, native H3 support). The RealBasicVSR checkpoint goes in ComfyUI/models/upscale_models/.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| model_name | COMBO | 0 options: | |
| output_mode | COMBO | native_size_restore | 2 options: native_size_restore, x4_super_resolution |
| strength | FLOAT | 0.300–1 | — |
| chunk_frames | INT | 82–32 | — |
| overlap_frames | INT | 20–16 | — |
| precision | COMBO | auto | 3 options: auto, fp16, fp32 |
| checkpoint_branch | COMBO | prefer_ema | 2 options: prefer_ema, prefer_generator |
| release_policy | COMBO | offload_after | 3 options: offload_after, clear_after, keep_loaded |
| audioopt | AUDIO | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| restored_frames | IMAGE | — |
| source_frames | IMAGE | — |
| audio | AUDIO | — |
| report_json | STRING | — |