Membuat video dengan Veo 3

Veo 3 adalah model canggih Google untuk membuat video 720p berdurasi 8 detik dengan fidelitas tinggi dari perintah teks, yang menampilkan realisme yang memukau dan audio yang dibuat secara native. Veo 3 unggul dalam berbagai gaya visual dan sinematik. Pilih contoh di bawah untuk melihat cara membuat video dengan dialog, realisme sinematik, atau animasi kreatif.

Membuat video dari gambar

Kode berikut menunjukkan cara membuat gambar menggunakan Imagen, lalu menggunakan gambar tersebut sebagai frame awal untuk video.

Python

import time
from google import genai

client = genai.Client()

prompt = "Panning wide shot of a calico kitten sleeping in the sunshine"

# Step 1: Generate an image with Imagen
imagen = client.models.generate_images(
    model="imagen-3.0-generate-002",
    prompt=prompt,
)

# Step 2: Generate video with Veo 2 using the image
operation = client.models.generate_videos(
    model="veo-2.0-generate-001",
    prompt=prompt,
    image=imagen.generated_images[0].image,
)

# Poll the operation status until the video is ready
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the video
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo2_with_image_input.mp4")
print("Generated video saved to veo2_with_image_input.mp4")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

const prompt = "Panning wide shot of a calico kitten sleeping in the sunshine";

// Step 1: Generate an image with Imagen
const imagenResponse = await ai.models.generateImages({
  model: "imagen-3.0-generate-002",
  prompt: prompt,
});

// Step 2: Generate video with Veo 2 using the image
let operation = await ai.models.generateVideos({
  model: "veo-2.0-generate-001", // Use Veo 2
  prompt: prompt,
  image: {
    imageBytes: imagenResponse.generatedImages[0].image.imageBytes,
    mimeType: "image/png",
  },
});

// Poll the operation status until the video is ready
while (!operation.done) {
  console.log("Waiting for video generation to complete...")
  await new Promise((resolve) => setTimeout(resolve, 10000));
  operation = await ai.operations.getVideosOperation({
    operation: operation,
  });
}

// Download the video
ai.files.download({
    file: operation.response.generatedVideos[0].video,
    downloadPath: "veo2_with_image_input.mp4",
});
console.log(`Generated video saved to veo2_with_image_input.mp4`);

Go

package main

import (
    "context"
    "log"
    "os"
    "time"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    prompt := "Panning wide shot of a calico kitten sleeping in the sunshine"

    // Step 1: Generate an image with Imagen
    imagenResponse, err := client.Models.GenerateImages(
        ctx,
        "imagen-3.0-generate-002",
        prompt,
        nil, // GenerateImagesConfig
    )
    if err != nil {
        log.Fatal(err)
    }

    // Step 2: Generate video with Veo 2 using the image
    operation, err := client.Models.GenerateVideos(
        ctx,
        "veo-2.0-generate-001",
        prompt,
        imagenResponse.GeneratedImages[0].Image, // Use generated image
        nil, // GenerateVideosConfig
    )
    if err != nil {
        log.Fatal(err)
    }

    // Poll the operation status until the video is ready
    for !operation.Done {
        log.Println("Waiting for video generation to complete...")
        time.Sleep(10 * time.Second)
        operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
    }

    // Download the video
    video := operation.Response.GeneratedVideos[0]
    client.Files.Download(ctx, video.Video, nil)
    fname := "veo2_with_image_input.mp4"
    _ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
    log.Printf("Generated video saved to %s\n", fname) 
}

Parameter dan spesifikasi pembuatan video

Berikut adalah parameter yang dapat Anda tetapkan dalam permintaan API untuk mengontrol proses pembuatan video.

Parameter Deskripsi Veo 3 (Pratinjau) Veo 2 (Stabil)
prompt Deskripsi teks untuk video. Mendukung isyarat audio. string string
negativePrompt Teks yang menjelaskan hal-hal yang harus dihindari dalam video. string string
image Gambar awal yang akan dianimasikan. Tidak Didukung Objek Image
aspectRatio Rasio aspek video. "16:9" "16:9", "9:16"
personGeneration Mengontrol pembuatan orang. "allow_all" "allow_all", "allow_adult", "dont_allow"

Anda dapat menyesuaikan pembuatan video dengan menetapkan parameter dalam permintaan. Misalnya, Anda dapat menentukan negativePrompt untuk memandu model.

Python

import time
from google import genai
from google.genai import types

client = genai.Client()

operation = client.models.generate_videos(
    model="veo-3.0-generate-preview",
    prompt="A cinematic shot of a majestic lion in the savannah.",
    config=types.GenerateVideosConfig(negative_prompt="cartoon, drawing, low quality"),
)

# Poll the operation status until the video is ready
while not operation.done:
    print("Waiting for video generation to complete...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Download the generated video
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("parameters_example.mp4")
print("Generated video saved to parameters_example.mp4")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

let operation = await ai.models.generateVideos({
  model: "veo-3.0-generate-preview",
  prompt: "A cinematic shot of a majestic lion in the savannah.",
  config: {
    aspectRatio: "16:9",
    negativePrompt: "cartoon, drawing, low quality"
  },
});

// Poll the operation status until the video is ready
while (!operation.done) {
  console.log("Waiting for video generation to complete...")
  await new Promise((resolve) => setTimeout(resolve, 10000));
  operation = await ai.operations.getVideosOperation({
    operation: operation,
  });
}

// Download the generated video
ai.files.download({
    file: operation.response.generatedVideos[0].video,
    downloadPath: "parameters_example.mp4",
});
console.log(`Generated video saved to parameters_example.mp4`);

Go

package main

import (
    "context"
    "log"
    "os"
    "time"

    "google.golang.org/genai"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    videoConfig := &genai.GenerateVideosConfig{
        AspectRatio: "16:9",
        NegativePrompt: "cartoon, drawing, low quality",
    }

    operation, _ := client.Models.GenerateVideos(
        ctx,
        "veo-3.0-generate-preview",
        "A cinematic shot of a majestic lion in the savannah.",
        nil,
        videoConfig,
    )

    // Poll the operation status until the video is ready
    for !operation.Done {
        log.Println("Waiting for video generation to complete...")
        time.Sleep(10 * time.Second)
        operation, _ = client.Operations.GetVideosOperation(ctx, operation, nil)
    }

    // Download the generated video
    video := operation.Response.GeneratedVideos[0]
    client.Files.Download(ctx, video.Video, nil)
    fname := "parameters_example.mp4"
    _ = os.WriteFile(fname, video.Video.VideoBytes, 0644)
    log.Printf("Generated video saved to %s\n", fname)
}

REST

# Note: This script uses jq to parse the JSON response. 
# GEMINI API Base URL
BASE_URL="https://generativelanguage.googleapis.com/v1beta"

# Send request to generate video and capture the operation name into a variable.
operation_name=$(curl -s "${BASE_URL}/models/veo-3.0-generate-preview:predictLongRunning" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Type: application/json" \
  -X "POST" \
  -d '{
    "instances": [{
        "prompt": "A cinematic shot of a majestic lion in the savannah."
      }
    ],
    "parameters": {
      "aspectRatio": "16:9",
      "negativePrompt": "cartoon, drawing, low quality"
    }
  }' | jq -r .name)

# Poll the operation status until the video is ready
while true; do
  # Get the full JSON status and store it in a variable.
  status_response=$(curl -s -H "x-goog-api-key: $GEMINI_API_KEY" "${BASE_URL}/${operation_name}")

  # Check the "done" field from the JSON stored in the variable.
  is_done=$(echo "${status_response}" | jq .done)

  if [ "${is_done}" = "true" ]; then
    # Extract the download URI from the final response.
    video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
    echo "Downloading video from: ${video_uri}"

    # Download the video using the URI and API key and follow redirects.
    curl -L -o parameters_example.mp4 -H "x-goog-api-key: $GEMINI_API_KEY" "${video_uri}"
    break
  fi
  # Wait for 5 seconds before checking again.
  sleep 10
done

Menangani Operasi Asinkron

Pembuatan video adalah tugas yang intensif secara komputasi. Saat Anda mengirim permintaan, API akan memulai tugas yang berjalan lama dan segera menampilkan objek operation. Kemudian, Anda harus melakukan polling hingga video siap, yang ditunjukkan oleh status done yang benar.

Inti dari proses ini adalah loop polling, yang secara berkala memeriksa status tugas.

Python

import time
from google import genai
from google.genai import types

client = genai.Client()

# After starting the job, you get an operation object
operation = client.models.generate_videos(
    model="veo-3.0-generate-preview",
    prompt="A cinematic shot of a majestic lion in the savannah.",
)

# Alternatively, you can use the operation.name to get the operation
operation = types.GenerateVideosOperation(name=operation.name)

# This loop checks the job status every 10 seconds
while not operation.done:
    time.sleep(10)
    # Refresh the operation object to get the latest status
    operation = client.operations.get(operation)

# Once done, the result is in operation.response
# ... process and download your video ...

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

// After starting the job, you get an operation object
let operation = await ai.models.generateVideos({
  model: "veo-3.0-generate-preview",
  prompt: "A cinematic shot of a majestic lion in the savannah.",
});

// Alternatively, you can use the operation.name to get the operation
// operation = types.GenerateVideosOperation(name=operation.name)

// This loop checks the job status every 10 seconds
while (!operation.done) {
    await new Promise((resolve) => setTimeout(resolve, 1000));
    // Refresh the operation object to get the latest status
    operation = await ai.operations.getVideosOperation({ operation });
}

// Once done, the result is in operation.response
// ... process and download your video ...

Fitur Model

Fitur Deskripsi Veo 3 (Pratinjau) Veo 2 (Stabil)
Audio Membuat audio dengan video secara native. ✔️ Selalu aktif ❌ Hanya senyap
Modalitas Input Jenis input yang digunakan untuk pembuatan. Teks ke Video Teks ke Video, Gambar ke Video
Resolusi Resolusi output video. 720p 720p
Frekuensi Frame Frekuensi gambar output video. 24 fps 24 fps
Durasi Video Durasi video yang dihasilkan. 8 detik 5-8 detik
Video per Permintaan Jumlah video yang dibuat per permintaan. 1 1 atau 2
Status & Detail Ketersediaan model dan detail selengkapnya. Pratinjau Stabil

Lihat halaman Model, Harga, dan Batas kecepatan untuk mengetahui batasan penggunaan Veo lainnya.

Panduan perintah Veo

Bagian ini berisi contoh video yang dapat Anda buat menggunakan Veo, dan menunjukkan cara mengubah perintah untuk menghasilkan hasil yang berbeda.

Filter keamanan

Veo menerapkan filter keamanan di Gemini untuk membantu memastikan bahwa video yang dihasilkan dan foto yang diupload tidak berisi konten yang menyinggung. Perintah yang melanggar persyaratan dan pedoman kami akan diblokir.

Perintah untuk Audio (Veo 3)

Dengan Veo 3, Anda dapat memberikan isyarat untuk efek suara, suara bising sekitar, dan dialog. Model menangkap nuansa isyarat ini untuk menghasilkan soundtrack yang disinkronkan.

  • Dialog: Gunakan tanda petik untuk ucapan tertentu. (Contoh: "Ini pasti kuncinya," gumamnya.)
  • Efek Suara (SFX): Mendeskripsikan suara secara eksplisit. (Contoh: suara ban berdecit keras, suara deru mesin.)
  • Suara Latar: Jelaskan lanskap suara lingkungan. (Contoh: Suara dengungan samar dan aneh beresonansi di latar belakang.)

Video ini menunjukkan perintah pembuatan audio Veo 3 dengan tingkat detail yang meningkat.

Perintah Output yang dihasilkan
Detail lainnya (Dialog dan Suasana)
Close up dua orang yang sedang menatap gambar misterius di dinding, cahaya obor berkedip-kedip. "Ini pasti kuncinya," gumamnya, sambil menelusuri pola. "Tapi apa artinya?" tanyanya, bingung, sambil memiringkan kepalanya. Batu lembap, ukiran rumit, simbol tersembunyi. Dengungan samar dan aneh beresonansi di latar belakang.
Pemburu harta karun di dalam gua.
Lebih sedikit detail (Dialog)
Berkemah (Stop Motion): Camper: "Sekarang aku menyatu dengan alam!" Beruang: "Alam lebih menyukai ruang pribadi".
Pemburu harta karun di dalam gua.

Coba sendiri perintah ini untuk mendengar audionya. Coba Veo 3

Dasar-dasar penulisan perintah

Perintah yang baik bersifat deskriptif dan jelas. Untuk mendapatkan hasil maksimal dari Veo, mulailah dengan mengidentifikasi ide inti Anda, pertajam ide Anda dengan menambahkan kata kunci dan pengubah, serta sertakan terminologi khusus video ke dalam perintah Anda.

Elemen berikut harus disertakan dalam perintah Anda:

  • Subjek: Objek, orang, hewan, atau pemandangan yang Anda inginkan dalam video, seperti pemandangan kota, alam, kendaraan, atau anak.
  • Tindakan: Apa yang dilakukan subjek (misalnya, berjalan, berlari, atau menolehkan kepala).
  • Gaya: Tentukan arah kreatif menggunakan kata kunci gaya film tertentu, seperti sci-fi, film horor, film noir, atau gaya animasi seperti kartun.
  • Pemosisian dan gerakan kamera: [Opsional] Kontrol lokasi dan gerakan kamera menggunakan istilah seperti tampilan dari atas, sejajar mata, bidikan dari atas, bidikan dolly, atau sudut pandang cacing.
  • Komposisi: [Opsional] Cara pengambilan gambar, seperti wide shot, close-up, single-shot, atau two-shot.
  • Efek fokus dan lensa: [Opsional] Gunakan istilah seperti fokus dangkal, fokus dalam, fokus lembut, lensa makro, dan lensa sudut lebar untuk mendapatkan efek visual tertentu.
  • Suasana: [Opsional] Bagaimana warna dan cahaya berkontribusi pada adegan, seperti nuansa biru, malam, atau nuansa hangat.

Tips lainnya untuk menulis perintah

  • Gunakan bahasa deskriptif: Gunakan kata sifat dan kata keterangan untuk memberikan gambaran yang jelas kepada Veo.
  • Meningkatkan kualitas detail wajah: Tentukan detail wajah sebagai fokus foto, seperti menggunakan kata potret dalam perintah.

Untuk strategi penulisan perintah yang lebih komprehensif, buka Pengantar desain perintah.

Contoh perintah dan output

Bagian ini menyajikan beberapa perintah, yang menyoroti bagaimana detail deskriptif dapat meningkatkan hasil setiap video.

Bunga Es

Video ini menunjukkan cara menggunakan elemen dasar-dasar penulisan perintah dalam perintah Anda.

Perintah Output yang dihasilkan
Bidikan close-up (komposisi) tetesan es yang mencair (subjek) di dinding batu beku (konteks) dengan nuansa biru dingin (suasana), diperbesar (gerakan kamera) sambil mempertahankan detail close-up tetesan air (tindakan). Tetesan es dengan latar belakang biru.

Pria sedang menelepon

Video ini menunjukkan cara merevisi perintah Anda dengan detail yang makin spesifik agar Veo menyempurnakan output sesuai keinginan Anda.

Perintah Output yang dihasilkan
Lebih sedikit detail
Kamera bergerak untuk menampilkan close-up seorang pria putus asa yang mengenakan jas hujan hijau. Dia sedang menelepon menggunakan telepon dinding putar dengan lampu neon hijau. Ini terlihat seperti adegan film.
Pria sedang berbicara di telepon.
Detail selengkapnya
Bidikan sinematik jarak dekat mengikuti seorang pria putus asa yang mengenakan jas hujan hijau lusuh saat ia memutar telepon putar yang terpasang di dinding bata yang kotor, bermandikan cahaya aneh dari tanda neon hijau. Kamera bergerak mendekat, memperlihatkan ketegangan di rahangnya dan keputusasaan yang terukir di wajahnya saat dia berjuang untuk melakukan panggilan. Kedalaman bidang gambar yang dangkal berfokus pada kerutan di dahinya dan telepon putar hitam, mengaburkan latar belakang menjadi lautan warna neon dan bayangan yang tidak jelas, sehingga menciptakan kesan mendesak dan terisolasi.
Pria sedang menelepon

Macan tutul salju

Perintah Output yang dihasilkan
Perintah sederhana:
Makhluk lucu dengan bulu seperti macan tutul salju sedang berjalan di hutan musim dingin, rendering gaya kartun 3D.
Macan tutul salju lesu.
Perintah mendetail:
Buat adegan animasi 3D pendek dalam gaya kartun yang ceria. Makhluk imut dengan bulu seperti macan tutul salju, mata besar yang ekspresif, dan bentuk bulat yang ramah dengan riang melompat-lompat di hutan musim dingin yang unik. Pemandangan harus menampilkan pohon bulat yang tertutup salju, kepingan salju yang jatuh dengan lembut, dan sinar matahari hangat yang menembus dahan. Gerakan makhluk yang melompat-lompat dan senyum lebar harus menyampaikan kegembiraan murni. Gunakan gaya bahasa yang ceria dan menyentuh hati dengan warna-warna cerah dan animasi yang menyenangkan.
Snow Leopard berjalan lebih cepat.

Contoh menurut elemen penulisan

Contoh ini menunjukkan cara menyempurnakan perintah Anda berdasarkan setiap elemen dasar.

Subjek dan Konteks

Tentukan fokus utama (subjek) dan latar belakang atau lingkungan (konteks).

Perintah Output yang dihasilkan
Render arsitektur bangunan apartemen beton putih dengan bentuk organik yang mengalir, yang berpadu mulus dengan tanaman hijau yang rimbun dan elemen futuristik Placeholder.
Satelit mengambang di luar angkasa dengan bulan dan beberapa bintang di latar belakang. Satelit mengapung di atmosfer.

Tindakan

Tentukan apa yang dilakukan subjek (misalnya, berjalan, berlari, atau menoleh).

Perintah Output yang dihasilkan
Gambar lebar seorang wanita berjalan di sepanjang pantai, tampak puas dan santai saat melihat ke arah cakrawala saat matahari terbenam. Matahari terbenam sangat indah.

Gaya

Tambahkan kata kunci untuk mengarahkan pembuatan ke estetika tertentu (misalnya, surealis, vintage, futuristik, film noir).

Perintah Output yang dihasilkan
Gaya film noir, pria dan wanita berjalan di jalan, misteri, sinematik, hitam putih. Gaya film noir sangat indah.

Gerakan Kamera dan Komposisi

Tentukan cara kamera bergerak (bidikan POV, tampilan udara, tampilan drone pelacak) dan cara membingkai bidikan (bidikan lebar, close-up, sudut rendah).

Perintah Output yang dihasilkan
Bidikan POV dari mobil vintage yang melaju di tengah hujan, Kanada pada malam hari, sinematik. Matahari terbenam sangat indah.
Close-up ekstrem mata dengan pantulan kota di dalamnya. Matahari terbenam sangat indah.

Suasana

Palet warna dan pencahayaan memengaruhi suasana hati. Coba istilah seperti "nuansa hangat oranye lembut", "cahaya alami", "matahari terbit", atau "nuansa biru dingin".

Perintah Output yang dihasilkan
Tampilan dekat seorang gadis yang memegang anak golden retriever yang menggemaskan di taman, sinar matahari. Anak dalam pelukan seorang anak perempuan.
Bidikan close-up sinematik seorang wanita sedih yang sedang menaiki bus saat hujan, dengan nuansa biru dingin dan suasana sedih. Seorang perempuan yang sedang naik bus tampak sedih.

Menggunakan gambar referensi untuk membuat video

Anda dapat menghidupkan gambar dengan menggunakan kemampuan gambar ke video Veo.

Perintah Output yang dihasilkan
Gambar Input (Dibuat oleh Imagen)
Kelinci dengan batang permen cokelat.
Kelinci sedang melarikan diri.
Video Output (Dibuat oleh Veo 2)
Kelinci melarikan diri.
Kelinci sedang melarikan diri.

Perintah negatif

Perintah negatif menentukan elemen yang tidak Anda inginkan dalam video.

  • ❌ Jangan gunakan bahasa instruktif seperti tidak atau jangan. (mis., "Tanpa dinding").
  • ✅ Jelaskan hal yang tidak ingin Anda lihat. (mis., "dinding, bingkai").
Perintah Output yang dihasilkan
Tanpa Perintah Negatif:
Buat animasi pendek bergaya dari pohon oak besar yang berdiri sendiri dengan daun-daun yang tertiup kencang oleh angin kuat... [terpotong]
Struktur dengan menggunakan kata-kata.
Dengan Perintah Negatif:
[Perintah yang sama]

Perintah negatif: latar belakang perkotaan, struktur buatan manusia, suasana gelap, badai, atau mengancam.
Struktur tanpa kata negatif.

Rasio aspek

Veo memungkinkan Anda menentukan rasio aspek untuk video Anda.

Perintah Output yang dihasilkan
Layar lebar (16:9)
Buat video dengan tampilan drone pelacak seorang pria yang mengendarai mobil convertible merah di Palm Springs, tahun 1970-an, sinar matahari hangat, bayangan panjang.
Seorang pria mengendarai mobil convertible merah di Palm Springs, dengan gaya tahun 1970-an.
Potret (9:16 - Khusus Veo 2)
Buat video yang menyoroti gerakan halus air terjun Hawaii yang megah di dalam hutan hujan yang rimbun. Berfokus pada aliran air yang realistis, dedaunan yang detail, dan pencahayaan alami untuk menyampaikan ketenangan. Abadikan air yang mengalir deras, suasana berkabut, dan sinar matahari yang menembus kanopi hutan yang lebat. Gunakan gerakan kamera yang halus dan sinematik untuk menampilkan air terjun dan sekitarnya. Gunakan nada yang tenang dan realistis, yang membawa penonton ke keindahan hutan hujan Hawaii yang tenang.
Air terjun Hawaii yang megah di hutan hujan yang rimbun.

Batasan

  • Latensi permintaan: Min: 11 detik; Maks: 6 menit (selama jam sibuk).
  • Batasan Regional: personGeneration: "allow_all" (default di Veo 3) dan Text-to-video personGeneration (Veo 2) tidak diizinkan di lokasi Uni Eropa, Inggris Raya, Swiss, dan MENA.
  • Retensi Video: Video yang dibuat disimpan di server selama 2 hari, lalu dihapus. Untuk menyimpan salinan lokal, Anda harus mendownload video dalam waktu 2 hari setelah dibuat.
  • Pemberian watermark: Video yang dibuat oleh Veo diberi watermark menggunakan SynthID, alat kami untuk memberi watermark dan mengidentifikasi konten buatan AI.
  • Keamanan: Video yang dihasilkan melewati filter keamanan dan proses pemeriksaan memori yang membantu mengurangi risiko privasi, hak cipta, dan bias.

Langkah berikutnya