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

Veo3.1 Image To Video (GcsUriImage)

Veo 3.1 image-to-video from a GCS bucket, the cloud-native way

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

    This is the GCS-URI sibling of the tensor-based Veo 3.1 image-to-video node: same generation, but the starting frame is pulled from Google Cloud Storage by URI instead of being passed as an in-graph tensor. If your ComfyUI runs on GKE, or your images live in a bucket as part of an automated pipeline, this node avoids shuttling files around entirely. If you're a local user with images on disk, the tensor version is the friendlier choice - this one's for the cloud-native crowd.

    How it works

    You give it a gs:// URI and Veo 3.1 uses that image as the first frame, animating per your prompt. The node validates the bucket and object before spending any money - a bad or missing URI produces a clear error. Optional last_frame_gcsuri anchors the end of the clip for interpolation. The finished video downloads to temp and comes out as video_paths (VEO_VIDEO). Like all the Veo 3.1 nodes, it runs the full modern pipeline: model dropdown, resolution choice, native audio, 4–8 second durations.

    Inputs that matter

    • gcsuri - the required starting-frame image in the cloud.
    • last_frame_gcsuri - optional ending frame for guided interpolation.
    • model - VEO_3_1, VEO_3_1_FAST, or VEO_3_1_LITE. The lite and fast tiers are cheaper; useful for iteration.
    • prompt - the motion description. Empty is tolerated (Veo interprets the image), but a real prompt gets intentional motion.
    • output_resolution - 720p (default), 1080p, or 4k. The default is the pack's most common complaint; bump it before a paid run.
    • duration_seconds - 4, 6, or 8 only.
    • generate_audio - Veo 3.1's native audio, on by default.
    • image_format - PNG, JPEG, or MP4.
    • compression_quality - lossless requires output_gcs_uri, or the node throws an interactive error demanding a gs:// bucket.

    Optional: negative_prompt, seed, output_gcs_uri, gcp_project_id, gcp_region.

    Gotchas

    Two things carry over from the rest of the Veo 3.1 family. The seed tooltip promises reproducibility with enhance-prompt disabled, but Veo 3.1 doesn't let you disable prompt enhancement - so treat seed as effectively inert. And the 720p default keeps catching people: you're paying for Veo, so set output_resolution to 1080p or 4K unless you're just iterating.

    Installing it

    Standard 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/Veo3.1. Set project/region (or rely on GKE workload identity), authenticate, and every video is a billed Vertex AI call. The video_paths output feeds VeoVideoSaveAndPreview for playback or VeoVideoToVHSNode if you want frames back for post-processing.

    CategoryGoogle AI/Veo3.1

    Inputs (17)

    NameTypeDefaultDescription
    modelCOMBOVEO_3_13 options: VEO_3_1, VEO_3_1_FAST, VEO_3_1_LITE
    gcsuriSTRINGGCS URI for the Image
    image_formatCOMBOPNGmime type of the image
    promptSTRING
    aspect_ratioCOMBO16:92 options: 16:9, 9:16
    output_resolutionCOMBO720p3 options: 720p, 1080p, 4k
    compression_qualityCOMBOoptimized2 options: optimized, lossless
    person_generationCOMBOallow_adult2 options: dont_allow, allow_adult
    duration_secondsINT84–8
    generate_audioBOOLEANtrue
    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