Создавайте видео с помощью Veo 3

Veo 3 — это передовая модель Google для создания высококачественных 8-секундных видеороликов с разрешением 720p из текстовых команд, отличающихся потрясающим реализмом и встроенным звуком. Veo 3 отлично работает с широким спектром визуальных и кинематографических стилей. Выберите пример ниже, чтобы узнать, как создать видео с диалогами, кинематографическим реализмом или креативной анимацией.

Создание видео из изображений

Следующий код демонстрирует генерацию изображения с помощью Imagen , а затем использование этого изображения в качестве начального кадра для видео.

Питон

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`);

Идти

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) 
}

Параметры и характеристики генерации видео

Это параметры, которые вы можете задать в своем API-запросе для управления процессом генерации видео.

Параметр Описание Veo 3 (предварительный просмотр) Veo 2 (Стабильная)
prompt Текстовое описание видео. Поддерживает звуковые подсказки. string string
negativePrompt Текст с описанием того, чего следует избегать в видео. string string
image Исходное изображение для анимации. Не поддерживается Объект Image
aspectRatio Соотношение сторон видео. "16:9" "16:9" , "9:16"
personGeneration Управляет поколением людей. "allow_all" "allow_all" , "allow_adult" , "dont_allow"

Вы можете настроить генерацию видео, задав параметры в запросе. Например, можно указать negativePrompt для управления моделью.

Питон

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`);

Идти

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)
}

ОТДЫХ

# 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

Обработка асинхронных операций

Генерация видео — задача, требующая больших вычислительных ресурсов. При отправке запроса API запускает длительную задачу и немедленно возвращает объект operation . После этого необходимо продолжать опрос, пока видео не будет готово, что подтверждается статусом done , равным true.

Основой этого процесса является цикл опроса, который периодически проверяет статус задания.

Питон

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 ...

Особенности модели

Особенность Описание Veo 3 (предварительный просмотр) Veo 2 (Стабильная)
Аудио Генерирует аудио с видео в собственном формате. ✔️ Всегда включен ❌ Только без звука
Модальности ввода Тип входных данных, используемых для генерации. Текст в видео Текст в видео, изображение в видео
Разрешение Выходное разрешение видео. 720p 720p
Частота кадров Выходная частота кадров видео. 24 кадра в секунду 24 кадра в секунду
Продолжительность видео Продолжительность сгенерированного видео. 8 секунд 5-8 секунд
Видео по запросу Количество видео, сгенерированных за один запрос. 1 1 или 2
Статус и подробности Наличие модели и дополнительная информация. Предварительный просмотр Стабильный

Дополнительную информацию об ограничениях по использованию Veo можно найти на страницах «Модели» , «Цены» и «Ограничения по скорости» .

Veo-руководство по быстрому запуску

В этом разделе содержатся примеры видеороликов, которые можно создать с помощью Veo, а также показано, как изменять подсказки для получения различных результатов.

Фильтры безопасности

Veo применяет фильтры безопасности в Gemini, чтобы гарантировать отсутствие оскорбительного контента в создаваемых видео и загружаемых фотографиях. Сообщения, нарушающие наши условия и правила, блокируются.

Запрос на аудио (Veo 3)

С помощью Veo 3 вы можете задавать сигналы для звуковых эффектов, фонового шума и диалогов. Модель улавливает нюансы этих сигналов для создания синхронизированной звуковой дорожки.

  • Диалог: Используйте кавычки для конкретных фраз. (Пример: «Это, должно быть, ключ», — пробормотал он.)
  • Звуковые эффекты (SFX): Подробно опишите звуки. (Пример: громкий визг шин, рёв двигателя.)
  • Окружающий шум: Опишите звуковой ландшафт окружающей среды. (Пример: на заднем плане слышится слабый, жуткий гул.)

В этих видеороликах демонстрируется генерация звука Veo 3 с возрастающим уровнем детализации.

Быстрый Сгенерированный вывод
Подробнее (Диалоги и Атмосфера)
Крупный план: двое людей смотрят на загадочный рисунок на стене, мерцает свет факела. «Это, должно быть, ключ», — пробормотал он, обводя узор. «Но что это значит?» — недоуменно спросила она, наклонив голову. Влажный камень, замысловатая резьба, скрытые символы. На заднем плане раздаётся слабый, жуткий гул.
Охотники за сокровищами в пещере.
Меньше подробностей (Диалог)
Кемпинг (покадровая съёмка): Отдыхающий: «Теперь я наедине с природой!» Медведь: «Природа предпочла бы личное пространство».
Охотники за сокровищами в пещере.

Попробуйте сами эти подсказки, чтобы услышать аудио! Попробуйте Veo 3

Основы письма в оперативном режиме

Хорошие подсказки должны быть описательными и понятными. Чтобы максимально эффективно использовать Veo, начните с определения основной идеи, уточните её, добавив ключевые слова и модификаторы, а также используйте в подсказках терминологию, связанную с видео.

В ваше приглашение следует включить следующие элементы:

  • Тема : объект, человек, животное или пейзаж, которые вы хотите включить в свое видео, например, городской пейзаж , природа , транспортные средства или щенки .
  • Действие : что делает субъект (например, идет , бежит или поворачивает голову ).
  • Стиль : Укажите творческое направление, используя определенные ключевые слова стиля фильма, например, «научная фантастика» , «фильм ужасов» , «фильм-нуар» или анимационные стили, например, мультфильм .
  • Расположение и движение камеры : [Необязательно] Управляйте местоположением и движением камеры, используя такие термины, как вид с воздуха , уровень глаз , съемка сверху вниз , съемка с тележки или взгляд червя .
  • Композиция : [Необязательно] Как кадрирован снимок, например, общий план , крупный план , одиночный план или два плана .
  • Эффекты фокусировки и объектива : [Необязательно] Используйте такие термины, как «неглубокий фокус» , «глубокий фокус» , «мягкий фокус» , «макрообъектив » и «широкоугольный объектив» для достижения определенных визуальных эффектов.
  • Атмосфера : [Необязательно] Как цвет и свет влияют на сцену, например, синие тона , ночь или теплые тона .

Дополнительные советы по написанию подсказок

  • Используйте описательный язык : используйте прилагательные и наречия, чтобы нарисовать ясную картину Veo.
  • Улучшите детали лица : укажите детали лица как основной акцент фотографии, например, используя слово «портрет» в подсказке.

Для получения более подробных стратегий создания подсказок посетите раздел Введение в разработку подсказок .

Примеры подсказок и вывода

В этом разделе представлено несколько подсказок, показывающих, как описательные детали могут улучшить результат каждого видео.

Сосульки

В этом видео показано, как можно использовать элементы основ написания подсказок в своих подсказках.

Быстрый Сгенерированный вывод
Крупный план (композиция) тающих сосулек (объект) на замерзшей каменной стене (контекст) в холодных синих тонах (атмосфера), увеличенный (движение камеры) с сохранением деталей крупным планом капель воды (действие). Капающие сосульки на синем фоне.

Мужчина по телефону

В этих видеороликах показано, как можно дополнить подсказку более конкретными подробностями, чтобы Veo мог улучшить вывод по вашему желанию.

Быстрый Сгенерированный вывод
Меньше подробностей
Камера наезжает, показывая крупным планом отчаявшегося мужчину в зелёном плаще. Он звонит по дисковому настенному телефону с зелёной неоновой подсветкой. Похоже на сцену из фильма.
Мужчина разговаривает по телефону.
Более подробно
Кинематографический кадр крупным планом показывает отчаявшегося мужчину в потертом зеленом плаще, набирающего номер дискового телефона, установленного на шершавой кирпичной стене, в зловещем свете зеленой неоновой вывески. Камера наезжает, показывая напряжение в его челюсти и отчаяние, отражающееся на его лице, когда он пытается позвонить. Небольшая глубина резкости фокусируется на его нахмуренном лбу и черном дисковом телефоне, размывая фон, превращая его в море неоновых цветов и нечетких теней, создавая ощущение безотлагательности и одиночества.
Мужчина разговаривает по телефону

Снежный барс

Быстрый Сгенерированный вывод
Простая подсказка:
Милое существо с мехом, похожим на мех снежного барса, гуляет по зимнему лесу, 3D-рендеринг в стиле мультфильма.
Снежный барс апатичен.
Подробная подсказка:
Создайте короткую 3D-анимацию в радостном мультяшном стиле. Милое существо с мехом, похожим на снежного барса, большими выразительными глазами и дружелюбным округлым телом радостно скачет по причудливому зимнему лесу. В сцене должны быть округлые заснеженные деревья, мягко падающие снежинки и тёплый солнечный свет, пробивающийся сквозь ветви. Пружинящие движения и широкая улыбка существа должны передавать чистый восторг. Стремитесь к жизнерадостному, трогательному настроению, используя яркие, жизнерадостные цвета и игривую анимацию.
Снежный барс бежит быстрее.

Примеры написания элементов

Эти примеры покажут вам, как оптимизировать подсказки по каждому базовому элементу.

Тема и контекст

Укажите основной фокус (тему) и фон или среду (контекст).

Быстрый Сгенерированный вывод
Архитектурная визуализация белого бетонного жилого дома с плавными органическими формами, гармонично сочетающегося с пышной зеленью и футуристическими элементами. Заполнитель.
Спутник, плывущий в космическом пространстве, на заднем плане — луна и несколько звезд. Спутник, парящий в атмосфере.

Действие

Укажите, что делает субъект (например, идет, бежит или поворачивает голову).

Быстрый Сгенерированный вывод
Общий план женщины, идущей по пляжу, выглядящей довольной и расслабленной на фоне заката. Закат просто прекрасен.

Стиль

Добавьте ключевые слова, чтобы направить поколение к определенной эстетике (например, сюрреалистичный, винтажный, футуристический, фильм-нуар).

Быстрый Сгенерированный вывод
Стиль фильма нуар, мужчина и женщина идут по улице, детектив, кинематографичный, черно-белый. Стиль «фильм-нуар» просто великолепен.

Движение камеры и композиция

Укажите, как движется камера (съемка от первого лица, вид сверху, вид с дрона) и как кадрируется снимок (общий план, крупный план, нижний ракурс).

Быстрый Сгенерированный вывод
Снимок от первого лица из старинной машины, едущей под дождем, Канада ночью, кинематографично. Закат просто прекрасен.
Крупный план глаза с отражением города в нем. Закат просто прекрасен.

Атмосфера

Цветовая палитра и освещение влияют на настроение. Попробуйте использовать такие термины, как «приглушённые тёплые оранжевые тона», «естественный свет», «восход солнца» или «холодные синие тона».

Быстрый Сгенерированный вывод
Крупный план девочки, держащей очаровательного щенка золотистого ретривера в парке, солнечный свет. Щенок на руках у маленькой девочки.
Кинематографический снимок крупным планом грустной женщины, едущей в автобусе под дождем, холодные синие тона, грустное настроение. Женщина едет в автобусе и чувствует себя грустной.

Используйте референсные изображения для создания видео

Вы можете оживить изображения, используя функцию Veo по преобразованию изображений в видео .

Быстрый Сгенерированный вывод
Входное изображение (сгенерировано Imagen)
Зайчик с шоколадным батончиком.
Заяц убегает.
Выходное видео (сгенерировано Veo 2)
Зайчик убегает.
Заяц убегает.

Отрицательные подсказки

Отрицательные подсказки указывают на элементы, которые вы не хотите видеть в видео.

  • ❌ Не используйте поучительные выражения, такие как «нет» или «нельзя » (например, «Никаких стен»).
  • ✅ Опишите, чего вы не хотите видеть. (например, «стена, рама»).
Быстрый Сгенерированный вывод
Без отрицательной подсказки:
Создайте короткую стилизованную анимацию большого одинокого дуба с листьями, энергично развевающимися на сильном ветру... [сокращено]
Дерево с использованием слов.
С отрицательным ответом:
[Тот же запрос]

Отрицательная подсказка: городской фон, искусственные сооружения, темная, штормовая или угрожающая атмосфера.
Дерево без отрицательных слов.

Соотношения сторон

Veo позволяет вам указать соотношение сторон вашего видео.

Быстрый Сгенерированный вывод
Широкоэкранный (16:9)
Создайте видео с использованием беспилотника, на котором запечатлен мужчина за рулем красного кабриолета в Палм-Спрингс, 1970-е годы, теплый солнечный свет, длинные тени.
Мужчина за рулем красного кабриолета в стиле Палм-Спрингс 1970-х годов.
Портрет (9:16 — только Veo 2)
Создайте видео, демонстрирующее плавное движение величественного гавайского водопада среди пышного тропического леса. Сделайте акцент на реалистичном течении воды, детальной прорисовке листвы и естественном освещении, чтобы передать атмосферу спокойствия. Запечатлейте бурлящий поток воды, туманную атмосферу и пробивающиеся сквозь густые заросли солнечные лучи. Используйте плавные, кинематографичные движения камеры, чтобы показать водопад и его окрестности. Стремитесь к умиротворяющей, реалистичной атмосфере, переносящей зрителя в безмятежную красоту гавайского тропического леса.
Величественный гавайский водопад в пышном тропическом лесу.

Ограничения

  • Задержка запроса: мин.: 11 секунд; макс.: 6 минут (в часы пик).
  • Региональные ограничения: personGeneration: "allow_all" (значение по умолчанию в Veo 3) и personGeneration Image-to-video (Veo 2) не разрешены в странах ЕС, Великобритании, Швейцарии, Ближнего Востока и Северной Африки.
  • Хранение видео: Сгенерированные видео хранятся на сервере в течение 2 дней, после чего удаляются. Чтобы сохранить локальную копию, необходимо скачать видео в течение 2 дней с момента его создания.
  • Водяные знаки: Видеоролики, созданные Veo, помечаются водяными знаками с помощью SynthID — нашего инструмента для маркировки водяными знаками и идентификации контента, созданного с помощью искусственного интеллекта.
  • Безопасность: Созданные видеоролики проходят через фильтры безопасности и процессы проверки на запоминание, которые помогают снизить риски, связанные с конфиденциальностью, авторскими правами и предвзятостью.

Что дальше?