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. |
![]() |
Lebih sedikit detail (Dialog) Berkemah (Stop Motion): Camper: "Sekarang aku menyatu dengan alam!" Beruang: "Alam lebih menyukai ruang pribadi". |
![]() |
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). |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
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 |
![]() |
Satelit mengambang di luar angkasa dengan bulan dan beberapa bintang di latar belakang. |
![]() |
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. |
![]() |
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. |
![]() |
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. |
![]() |
Close-up ekstrem mata dengan pantulan kota di dalamnya. |
![]() |
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. |
![]() |
Bidikan close-up sinematik seorang wanita sedih yang sedang menaiki bus saat hujan, dengan nuansa biru dingin dan suasana 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. |
![]() |
Video Output (Dibuat oleh Veo 2) Kelinci 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] |
![]() |
Dengan Perintah Negatif: [Perintah yang sama] Perintah negatif: latar belakang perkotaan, struktur buatan manusia, suasana gelap, badai, atau mengancam. |
![]() |
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. |
![]() |
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. |
![]() |
Batasan
- Latensi permintaan: Min: 11 detik; Maks: 6 menit (selama jam sibuk).
- Batasan Regional:
personGeneration: "allow_all"
(default di Veo 3) dan Text-to-videopersonGeneration
(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
- Bereksperimen dengan Veo 3 di Veo Quickstart Colab.
- Pelajari cara menulis perintah yang lebih baik lagi dengan Pengantar desain perintah kami.
- Jika Anda perlu menggunakan fitur video dari gambar atau fitur Veo 2 lainnya, lihat Panduan Migrasi & Veo 2.