Nodes/ComfyUI-OldTimeRadio/ CreditsRoll (late unified viewer credits, silent tail)
ComfyUI Node

CreditsRoll (late unified viewer credits, silent tail)

OTR_CreditsRoll

By jbrick2070·Created 5 months ago·Updated about 5 hours ago· 7
CreditsRoll (late unified viewer credits, silent tail)
    • video_with_credits_path
    • declared_credits_tail_s
    • report
    video_path
    clip_manifest_json

    Every episode ends with a SIGNAL LOST console scroll - the pack's signature credits screen. OTR_CreditsRoll is the node that builds it, late, from what actually happened in the render rather than from what was planned. It's the last video step before OTR_MasterAudioMux, and it appends a silent credits tail so the video ends at credit-end.

    "Late" and "from post-render truth" are the interesting parts. It reads the durable production ledger (the S2 stamps) plus the clip manifest from OTRVideoRenderBatch, and composes the credits from the actual cast, actual engines, actual seed, actual git commit. No placeholders, no guessing.

    How it works

    The presentation is a 3-column console. Columns 1 and 2 are a static dashboard held for the whole roll - title, models, production ledger, system info on the left; cast and voices, writer-LLM config on the right. Column 3 scrolls the full narrative: the story spine, then the classified transcript, then source and diagnostics. Nothing is dropped - the whole script rolls past, and the credits-tail duration follows how long column 3 takes to scroll. That duration is the declared_credits_tail_s output, and it's handed to the mux so the credits-aware tail guard permits the silent tail instead of complaining about a video longer than the audio.

    The backdrop is the drama's last frame, held and darkened, with the console ghosted over it - never credits-over-black.

    The hard contract here is no fallbacks. A missing receipt - title, style, cast, engines, seed, or commit - raises a CreditsDataError before muxing rather than printing a quiet "(not recorded)". Only probe fields like VRAM are allowed to be soft.

    The inputs and output

    video_path (required) is the node-93 output - captions and bars already burned. clip_manifest_json (required) is node 92's slot 1, the per-beat engine + timing manifest. There are no optional inputs; this node takes exactly what it needs. Outputs: video_with_credits_path, declared_credits_tail_s (feed it to OTR_MasterAudioMux), and report.

    Install and gotchas

    Pack-level install (ComfyUI Manager → ComfyUI-OldTimeRadio, restart). Needs ffmpeg on PATH. Two things worth flagging. First, the known limitation straight from the README: the credits scroll can outlast the master mix's closing theme, so you may get no audio under the end credits - it's tracked, and it's a design tension between a long scroll and a short theme, not a crash. Second, because it's fail-closed on missing receipts, don't feed it a stripped-down ledger and expect graceful degradation - it will refuse, and that's the intended behavior. Wire it the canonical way and it just works.

    CategoryOldTimeRadio/v2/video

    Inputs (2)

    NameTypeDefaultDescription
    video_pathSTRINGNode 93 output (captions/bars already burned).
    clip_manifest_jsonSTRINGNode 92 slot 1 (third fan-out consumer).

    Outputs (3)

    NameTypeDescription
    video_with_credits_pathSTRING
    declared_credits_tail_sFLOAT
    reportSTRING