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

Veo 3.1 отлично справляется с широким спектром визуальных и кинематографических стилей и предлагает несколько новых возможностей:

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

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

# GEMINI API Base URL
BASE_URL="https://api.proxyapi.ru/google/v1beta"

# Отправить запрос на генерацию видео и сохранить имя операции в переменную
operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \
  -H "x-goog-api-key: <КЛЮЧ>" \
  -H "Content-Type: application/json" \
  -X "POST" \
  -d '{
    "instances": [{
        "prompt": "Крупный план двух людей, смотрящих на загадочный рисунок на стене, мерцающий свет факела. Мужчина бормочет: \"Это должно быть оно. Это секретный код.\" Женщина смотрит на него и взволнованно шепчет: \"Что ты нашел?\""
      }
    ]
  }' | jq -r .name)

# Опрашивать статус операции, пока видео не будет готово
while true; do
  # Получить полный JSON статуса и сохранить в переменную
  status_response=$(curl -s -H "x-goog-api-key: <КЛЮЧ>" "${BASE_URL}/${operation_name}")

  # Проверить поле "done" из JSON, сохраненного в переменной
  is_done=$(echo "${status_response}" | jq .done)

  if [ "${is_done}" = "true" ]; then
    # Извлечь URI для загрузки из финального ответа
    video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri')
    echo "Загрузка видео из: ${video_uri}"

    # Загрузить видео, используя URI и API ключ, следуя перенаправлениям
    curl -L -o dialogue_example.mp4 -H "x-goog-api-key: <КЛЮЧ>" "${video_uri}"
    break
  fi
  # Ожидать 10 секунд перед следующей проверкой
  sleep 10
done

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

import time
from google import genai

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

prompt = "Панорамный широкий кадр спящего на солнце котенка калико"

# Шаг 1: Сгенерировать изображение с Gemini 2.5 Flash Image
image = client.models.generate_content(
    model="gemini-2.5-flash-image",
    contents=prompt,
    config={"response_modalities":['IMAGE']}
)

# Шаг 2: Сгенерировать видео с Veo 3.1, используя изображение
operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    image=image.parts[0].as_image(),
)

# Опрашивать статус операции, пока видео не будет готово
while not operation.done:
    print("Ожидание завершения генерации видео...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Загрузить видео
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3_with_image_input.mp4")
print("Сгенерированное видео сохранено в veo3_with_image_input.mp4")

Veo 3.1 теперь принимает до 3 референсных изображений для управления содержимым вашего сгенерированного видео. Предоставьте изображения человека, персонажа или продукта, чтобы сохранить внешний вид объекта в выходном видео.

Например, использование этих трех изображений, сгенерированных с помощью Gemini 2.5 Flash Image, в качестве референсов с хорошо написанным промптом создает следующее видео.

import time
from google import genai

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

prompt = """Видео открывается средним кадром на уровне глаз красивой женщины с темными волосами и теплыми карими глазами. 
Она носит великолепное высокомодное платье-фламинго со слоями розовых и фуксиевых перьев, дополненное причудливыми розовыми солнцезащитными очками в форме сердца. 
Она идет с безмятежной уверенностью по кристально чистой, мелкой бирюзовой воде залитой солнцем лагуны. 
Камера медленно отодвигается до средне-широкого кадра, открывая захватывающую сцену, когда длинный шлейф платья скользит и плавно плывет по поверхности воды позади нее. 
Кинематографическая, сказочная атмосфера усиливается яркими цветами платья на фоне спокойного, минималистичного пейзажа, запечатлевая момент чистой элегантности и высокой моды."""

dress_reference = types.VideoGenerationReferenceImage(
  image=dress_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image
  reference_type="asset"
)

sunglasses_reference = types.VideoGenerationReferenceImage(
  image=glasses_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image
  reference_type="asset"
)

woman_reference = types.VideoGenerationReferenceImage(
  image=woman_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image
  reference_type="asset"
)

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    config=types.GenerateVideosConfig(
      reference_images=[dress_reference, glasses_reference, woman_reference],
    ),
)

# Опрашивать статус операции, пока видео не будет готово
while not operation.done:
    print("Ожидание завершения генерации видео...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Загрузить видео
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_reference_images.mp4")
print("Сгенерированное видео сохранено в veo3.1_with_reference_images.mp4")

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

import time
from google import genai

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

prompt = """Кинематографическое, жуткое видео. Призрачная женщина с длинными белыми волосами и развевающимся платьем мягко качается на веревочных качелях под массивным, корявым деревом в туманной, освещенной луной поляне. 
Туман сгущается и кружится вокруг нее, и она медленно исчезает, полностью растворяясь. Пустые качели остаются ритмично раскачиваться сами по себе в жуткой тишине."""

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt=prompt,
    image=first_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image
    config=types.GenerateVideosConfig(
      last_frame=last_image # Сгенерировано отдельно с Gemini 2.5 Flash Image
    ),
)

# Опрашивать статус операции, пока видео не будет готово
while not operation.done:
    print("Ожидание завершения генерации видео...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Загрузить видео
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_with_interpolation.mp4")
print("Сгенерированное видео сохранено в veo3.1_with_interpolation.mp4")

Используйте Veo 3.1 для создания продолжения видео, которые вы ранее сгенерировали с помощью Veo, на 7 секунд и до 20 раз.

Ограничения входного видео:

  • Только видео, сгенерированные Veo, длительностью до 141 секунды
  • Gemini API поддерживает продолжение видео только для видео, сгенерированных Veo
  • Видео должно быть из предыдущей генерации, например operation.response.generated_videos[0].video
  • Ожидается, что входные видео имеют определенную длину, соотношение сторон и размеры:
    • Соотношение сторон: 9:16 или 16:9
    • Разрешение: 720p
    • Длина видео: 141 секунда или меньше

Выходное видео с продолжением — это одно видео, объединяющее входное видео пользователя и сгенерированное продолжение, общей длительностью до 148 секунд.

Этот пример берет видео, сгенерированное Veo, показанное здесь с его оригинальным промптом, и создает для него продолжение, используя параметр video и новый промпт:

import time
from google import genai

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

prompt = "Проследить за бабочкой в сад, когда она приземляется на оранжевый цветок оригами. Пушистый белый щенок подбегает и нежно трогает цветок."

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    video=operation.response.generated_videos[0].video, # Это должно быть видео из предыдущей генерации
    prompt=prompt,
    config=types.GenerateVideosConfig(
        number_of_videos=1,
        resolution="720p"
    ),
)

# Опрашивать статус операции, пока видео не будет готово
while not operation.done:
    print("Ожидание завершения генерации видео...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Загрузить видео
video = operation.response.generated_videos[0]
client.files.download(file=video.video)
video.video.save("veo3.1_extension.mp4")
print("Сгенерированное видео сохранено в veo3.1_extension.mp4")

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

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

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

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

# После запуска задания вы получаете объект operation
operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt="Кинематографический кадр величественного льва в саванне.",
)

# Альтернативно, вы можете использовать operation.name для получения операции
operation = types.GenerateVideosOperation(name=operation.name)

# Этот цикл проверяет статус задания каждые 10 секунд
while not operation.done:
    time.sleep(10)
    # Обновить объект operation для получения последнего статуса
    operation = client.operations.get(operation)

# Когда готово, результат находится в operation.response
# ... обработать и загрузить ваше видео ...

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

ПараметрОписаниеVeo 3.1 & Veo 3.1 FastVeo 3 & Veo 3 Fast
promptТекстовое описание для видео. Поддерживает аудио-подсказки.stringstring
negativePromptТекст, описывающий, что не следует включать в видео.stringstring
imageНачальное изображение для анимации.Объект ImageОбъект Image
lastFrameФинальное изображение для интерполяционного видео для перехода. Должно использоваться в комбинации с параметром image.Объект ImageОбъект Image
referenceImagesДо трех изображений для использования в качестве референсов стиля и содержимого.Объект VideoGenerationReferenceImage (только Veo 3.1)н/д
videoВидео для использования при создании продолжения.Объект Videoн/д
aspectRatioСоотношение сторон видео."16:9" (по умолчанию, 720p & 1080p), "9:16" (720p & 1080p)"16:9" (по умолчанию, 720p & 1080p), "9:16" (720p & 1080p)
resolutionРазрешение видео."720p" (по умолчанию), "1080p" (поддерживает только длительность 8с), "720p" только для продолжения"720p" (по умолчанию), "1080p" (только 16:9)
durationSecondsДлина сгенерированного видео."4", "6", "8". Должно быть "8" при использовании продолжения или интерполяции (поддерживает 16:9 и 9:16), и при использовании referenceImages (поддерживает только 16:9)"4", "6", "8"
personGenerationКонтролирует генерацию людей. (См. раздел Ограничения для региональных ограничений)Text-to-video & Продолжение: только "allow_all" Image-to-video, Interpolation & Reference images: только "allow_adult"Text-to-video: только "allow_all" Image-to-video: только "allow_adult"

Обратите внимание, что параметр seed также доступен для моделей Veo 3. Он не гарантирует детерминизм, но немного улучшает его.

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

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

client = genai.Client(
    api_key="<КЛЮЧ>",
    http_options={"base_url": "https://api.proxyapi.ru/google"}
)

operation = client.models.generate_videos(
    model="veo-3.1-generate-preview",
    prompt="Кинематографический кадр величественного льва в саванне.",
    config=types.GenerateVideosConfig(negative_prompt="мультфильм, рисунок, низкое качество"),
)

# Опрашивать статус операции, пока видео не будет готово
while not operation.done:
    print("Ожидание завершения генерации видео...")
    time.sleep(10)
    operation = client.operations.get(operation)

# Загрузить сгенерированное видео
generated_video = operation.response.generated_videos[0]
client.files.download(file=generated_video.video)
generated_video.video.save("parameters_example.mp4")
print("Сгенерированное видео сохранено в parameters_example.mp4")

  • Задержка запроса: Мин: 11 секунд; Макс: 6 минут (в часы пик)
  • Региональные ограничения: В регионах EU, UK, CH, MENA для personGeneration доступно только значение allow_adult
  • Хранение видео: Сгенерированные видео хранятся на сервере 2 дня, после чего они удаляются. Чтобы сохранить локальную копию, вы должны загрузить ваше видео в течение 2 дней после генерации. Видео с продолжением рассматриваются как новые сгенерированные видео
  • Водяные знаки: Видео, созданные Veo, помечаются водяными знаками с использованием SynthID, инструмента Google для нанесения водяных знаков и идентификации контента, сгенерированного ИИ. Видео могут быть проверены с использованием платформы проверки SynthID
  • Безопасность: Сгенерированные видео проходят через фильтры безопасности и процессы проверки запоминания, которые помогают снизить риски конфиденциальности, авторских прав и предвзятости
  • Ошибка аудио: Veo 3.1 иногда блокирует генерацию видео из-за фильтров безопасности или других проблем обработки аудио. С вас не будет взиматься плата, если ваше видео было заблокировано от генерации
ProxyAPI Logo

Доступ к последним разработкам мировых лидеров в области AI для вашего проекта или бизнеса в России. Без VPN и блокировок. Оплата в рублях.

Accepted payment methods