Nodes/ComfyTV/Load Video from Asset
ComfyUI Node

Load Video from Asset

Get footage into a ComfyTV pipeline from the project library, not a drag-and-drop gamble

By jtydhr88·Created 3 months ago·Updated about 16 hours ago· 725
Load Video from Asset
    • video
    project_id
    parent_output_id0
    asset_url
    asset_id0
    categoryall

    Every video pipeline in ComfyTV starts in the same place: a stage that hands you a COMFYTV_VIDEO wire. Load Video from Asset is the one you reach for when the footage already lives in your project's asset library. Click the node body, the library opens, you pick a clip, and it's in the graph - no dropping files into ComfyUI/input, no guessing which path the loader is scanning.

    You'd use this over the plain video loader when you're treating ComfyTV as an actual media workbench rather than a generate-once-and-export tool. Because stages keep every output with full history and the project is the unit of organization, your source clips, intermediate renders, and finals all live in the same library. This stage is how you pull the raw footage back out to feed another stage - say, an FX Chain of color and grain, or the Chroma Keyer.

    How it works

    Pick an asset in the node body and it writes a payload URL into the internal asset_url input; the stage emits that as its output. The output is video, typed COMFYTV_VIDEO, and that's the wire every ComfyTV video stage consumes - edit, keying, compositing, FX, the works. Downstream stages read a snapshot of this stage's last output, which is the "per-node Run" model the whole pack is built around: re-run this loader and only what depends on it re-renders.

    Most of the inputs (project_id, parent_output_id, asset_id, category) are internal bookkeeping with tooltips that say so - frontend-populated, for lineage and debugging. Don't fight them. category is the only one that does something you'll notice: it's the last-selected filter in the library picker, persisted so the node reopens where you left it.

    Installing ComfyTV

    This is one of ~190 stages in the ComfyTV pack, so the install is the pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jtydhr88/ComfyTV
    

    Restart the ComfyUI backend completely - a browser refresh isn't enough - and the stages appear under the ComfyTV category. ComfyUI Manager finds it by searching "ComfyTV". It claims (and the code backs this up) zero extra Python dependencies: video decode/encode runs through PyAV, the FFmpeg bindings ComfyUI already ships, plus numpy. No model downloads for loader stages.

    The README's one real trap is install location. On macOS, ComfyUI Desktop, or any machine with multiple ComfyUI installs, the relative cd can silently target the wrong instance. Symptom: the clone succeeds but ComfyTV never appears. Fix it by reading the running instance's base path from the startup log and cloning into that instance's custom_nodes by absolute path (quote it - paths with spaces or parentheses need quotes), then confirm the layout is custom_nodes/ComfyTV/__init__.py, not a nested ComfyTV/ComfyTV.

    Common issues

    • Picked a clip, nothing downstream runs. Check the project - assets are per-project, and if you're in a different project the library is empty or filtered.
    • Stages don't show up at all. Install-target problem, almost always. Re-check the path and restart the backend, not just the browser tab.
    • COMFYTV_VIDEO won't connect to your old nodes. Right - the pack uses its own typed wires. Standard ComfyUI VIDEO/IMAGE sockets don't interoperate with them. Inside ComfyTV's canvas that's fine; don't expect to mix freely with other packs without a Bridge node.

    It's the least glamorous node in the pack, but it's also the foundation of basically every video flow you'll build. Get this one clicking and the rest of the video suite stops being scary.

    CategoryComfyTV/Input

    Inputs (5)

    NameTypeDefaultDescription
    project_idSTRINGInternal — populated by the projectStore on the frontend.
    parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
    asset_urlSTRINGInternal — payload URL of the asset picked in the node body. Becomes this stage's output.
    asset_idINT00–2147483647Internal — library id of the picked asset (lineage/debug only).
    categorySTRINGallInternal — last-selected category filter, persisted so the node remembers it.

    Outputs (1)

    NameTypeDescription
    videoCOMFYTV_VIDEO