Nodes/comfyui-google-genmedia-custom-nodes/Veo2 Image To Video (GcsUriImage)
ComfyUI Node

Veo2 Image To Video (GcsUriImage)

Veo 2 image-to-video, when your image already lives in the cloud

By GoogleCloudPlatform·Created 8 months ago·Updated about a month ago· 47
Veo2 Image To Video (GcsUriImage)
    • video_paths
    gcsuri
    image_formatPNG
    prompt
    aspect_ratio16:9
    compression_qualityoptimized
    person_generationallow_adult
    duration_seconds8
    enhance_prompttrue
    sample_count1
    last_frame_gcsuri
    output_gcs_uri
    negative_prompt
    seed0
    gcp_project_id
    gcp_region

    The GCS-URI variants of these Veo nodes exist for one reason: the image you want to animate isn't on your disk, it's in Google Cloud Storage. If you're running ComfyUI on GKE or you've got a pipeline where images land in a gs:// bucket before they touch the graph, this node skips the download-and-reupload dance and hands Veo 2 the cloud URI directly. It's the same image-to-video generation as the tensor version - just a different way of feeding it.

    How it works

    You give it a gs:// URI, Veo 2 fetches the image from storage as its starting frame, and your prompt dictates the motion. The node validates the bucket and file up front - if the object doesn't exist or isn't accessible you get a clear error before any money is spent. It also supports last_frame_gcsuri, an optional second cloud image that becomes the video's final frame, for guided interpolation. The result is downloaded back to ComfyUI's temp and returned as video_paths (VEO_VIDEO).

    Inputs that matter

    • gcsuri - the required gs://path/to/image input image.
    • last_frame_gcsuri - optional ending frame for interpolation.
    • image_format - PNG, JPEG, or MP4, the format hint for the API.
    • prompt - the animation description.
    • aspect_ratio - 16:9 or 9:16.
    • compression_quality - optimized or lossless; lossless needs output_gcs_uri, since the API can't return a huge lossless file inline.
    • person_generation - allow_adult or dont_allow for people in the video.
    • duration_seconds - Veo 2 runs 5–8 seconds (note: different range from Veo 3.1's 4–8).
    • enhance_prompt - on by default; the model rewrites your prompt. Note it disables seed.
    • sample_count - up to 4 variations.

    Optional: negative_prompt, seed (only meaningful with enhance_prompt off), output_gcs_uri, and the pack-standard gcp_project_id / **gcp_region`.

    Installing it

    Shared pack install:

    cd ComfyUI/custom_nodes
    git clone https://github.com/GoogleCloudPlatform/comfyui-google-genmedia-custom-nodes
    pip install -r comfyui-google-genmedia-custom-nodes/requirements.txt
    

    Or ComfyUI Manager → search comfyui-google-genmedia-custom-nodes. Restart, find it under Google AI/Veo2. Set project/region on the node, authenticate, and each video is a billed Vertex AI call.

    Who should use it

    If you're on a local ComfyUI with your images already on disk, the tensor-based Veo2ImageToVideoNode is the easier pick - no bucket management. Reach for this one when your images live in GCS anyway (GKE setups, automated pipelines, huge files you don't want to shuttle). Also note this is the older Veo 2 generation: no native audio, 720p-class output, no resolution selector, and prompt enhancement that's toggleable - which at least means the seed actually works when you turn it off. If you want the newer model's bells and whistles, Veo 3.1's GCS node is the upgrade path.

    CategoryGoogle AI/Veo2

    Inputs (15)

    NameTypeDefaultDescription
    gcsuriSTRINGGCS URI for the Image
    image_formatCOMBOPNGmime type of the image
    promptSTRING
    aspect_ratioCOMBO16:92 options: 16:9, 9:16
    compression_qualityCOMBOoptimized2 options: optimized, lossless
    person_generationCOMBOallow_adult2 options: dont_allow, allow_adult
    duration_secondsINT85–8
    enhance_promptBOOLEANtrue
    sample_countINT11–4
    last_frame_gcsurioptSTRINGGCS URI for the last frame image
    output_gcs_urioptSTRING
    negative_promptoptSTRING
    seedoptINT00–42949672950 seed let's Veo API handle randomness. Seed works with enhance_prompt disabled
    gcp_project_idoptSTRINGGCP project id where Vertex AI API will query Veo
    gcp_regionoptSTRINGGCP region for Vertex AI API

    Outputs (1)

    NameTypeDescription
    video_pathsVEO_VIDEO