Nodes/Protoface/Protoface FLUX.3 Video · Interpolate Video
ComfyUI Node

Protoface FLUX.3 Video · Interpolate Video

Two Stills, One Shot, No Morphing

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface FLUX.3 Video · Interpolate Video
    • video
    • files
    • run id
    ◄prompt►
    ◄resolution720p►
    ◄duration5►
    ◄aspect_ratio▾►
    ◄end_image▾►
    ◄generate_audiotrue►
    ◄start_image▾►
    ◄generation_id0►
    ◄request_scope►

    Two images, one clip: give FLUX 3 a start_image and an end_image and it generates the motion that connects them. This is the operation I'd reach for first with any FLUX 3 node, because it converts the model's weakest trait - inventing a consistent shot from scratch - into a problem it's much better at.

    Why keyframes beat free-running video

    The consistent criticism of FLUX 3 Video in the KB's coverage is shot-to-shot and action-to-action coherence. You can't prompt your way around that reliably. What you can do is remove the ambiguity: a start frame and an end frame pin down composition, subject, palette and light at both ends of the clip, and the model's job becomes interpolation - the thing diffusion is genuinely good at.

    It's also the cheapest way to control a client deliverable. Generate the two stills anywhere you like - locally, with Qwen, with FLUX.2 Pro - composite exactly the before and after you want, then spend one video generation making it happen.

    Note that on FLUX 3 this is a separate operation from image-to-video: the Image to Video node has only a single image input and no last-frame field. So keyframing lives here, not there.

    How it works

    Protoface bundles a catalog of model/task request schemas and generates native ComfyUI V3 nodes from them at startup; this is black-forest-labs/flux-3 × video.interpolate. All the generated nodes share one adapter - encode the images to PNG, upload anything not already cached by content hash, validate the payload against the schema before submission, submit, poll with a progress bar, download the result, decode it into a native VIDEO.

    Because two images and a long duration are involved, the journal is worth understanding: the request identity (account, request_scope, node id, generation_id, model, schema fingerprint, payload hash including your image bytes) is recorded before the request goes out. Requeue an unchanged graph after a browser hiccup and it resumes the recorded run rather than buying a second one.

    Controls

    prompt - describe the transition, not the endpoints. "Slow push in as the light shifts from dusk to interior tungsten" is a prompt. Re-describing both stills in detail tends to produce a clip that looks like a soft dissolve between two unrelated photos.

    start_image and end_image - both are mode-picking fields, not bare sockets. Set each to Image and connect a Load Image or any IMAGE producer, or to References and feed a Protoface Asset Reference. Batches get rejected: one asset per field.

    duration - 5 to 20 seconds. This is how much time the model takes to travel from A to B, so it's a pacing control as much as a length one. Five seconds reads as a cut; twenty reads as a slow reveal, and gives the model more room to invent detail in between.

    resolution - 720p or 1080p, default 720p. aspect_ratio - optional; unset, the model picks, which is usually wrong if your two stills are portrait. Set it explicitly.

    generate_audio - default true. Sound generated across a transition tends to work better than sound generated next to a hard cut, which is one argument for interpolate over stitching two clips.

    Still no seed on FLUX 3. Reproducibility = fixed generation_id + unchanged graph.

    Outputs

    video - a list of native VIDEO objects for preview, combine or further extension. files - the original download as a PROTOFACE_FILE, for Protoface Save File. run id - a string; keep it, especially on 1080p jobs where re-running is not free.

    Install

    cd ComfyUI/custom_nodes
    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
    python -m pip install -r protoface/requirements.txt
    

    Or Manager → search Protoface → install protoface-nodes → restart → reload. ComfyUI 0.41.0+, Python 3.10+, with httpx, jsonschema, Pillow and av installed into ComfyUI's own interpreter. No weights, no GPU work. Paste your key via the Protoface button bottom-right; it's held in memory and won't survive a restart unless you set PROTOFACE_API_KEY_FILE.

    What goes wrong

    A morph instead of a move. The two stills share almost nothing - different framing, different light, different wardrobe. The model can't invent a physical path between them, so it crossfades. Match the frame and the subject; vary only what should change.

    Portrait stills, landscape output. Set aspect_ratio rather than trusting the default with mismatched inputs.

    Two images in one batch. A Load Image with batch_size 2 into start_image throws "expects one asset; split the image/audio batch first". Split with ImageFromBatch upstream.

    Queueing a second pass to "fix" the first. You'll pay twice and, without a seed, get a different sample. Adjust the prompt and stills, accept that each attempt is fresh.

    Deleting ~/.cache/protoface-comfyui mid-job. That directory holds the job journal and upload cache. Losing it while a submission is unresolved can turn one charge into two.

    CategoryProtoface/Video/black-forest-labs

    Inputs (9)

    NameTypeDefaultDescription
    promptSTRINGThe text prompt describing the video you want to generate.
    resolutionCOMBO720pResolution of the generated video.
    durationINT55–20Video length in seconds (5-20).
    aspect_ratioCOMBOThe aspect ratio of the generated media.
    end_imageCOMBOA public URL, a data URI, or an asset id.
    generate_audioBOOLEANtrueWhether to generate audio for the video.
    start_imageCOMBOA public URL, a data URI, or an asset id.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (3)

    NameTypeDescription
    videoVIDEO—
    filesPROTOFACE_FILE—
    run idSTRING—